社区
单片机/工控
帖子详情
小问题:为什么P2^1可以表示P2.1端口
treeglow
2008-07-13 07:37:27
如题,为什么呢?P2^1这个异或的运算是怎么样的?
...全文
924
4
打赏
收藏
小问题:为什么P2^1可以表示P2.1端口
如题,为什么呢?P2^1这个异或的运算是怎么样的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shuiyan
2008-07-14
打赏
举报
回复
这个别用普通的异或操作符解释,不信可以在标准C下写一下,绝对无法实现C51中的功能。
C51中增加了sbit这个类型,用^实现bit对应功能是和这个sbit相关的。此功能只有在C51下才有效。
所以别问为什么,因为C51语言语法规范规定了可以这样用。
如果你自己设计一个语言,规定 sbit = P2&1; 那么就是用&而不是用^了。
ckc
2008-07-14
打赏
举报
回复
0 xor 0 = 0
0 xor 1 = 1
所以异或在实际中可以用来取某位的值,
p2 ^ 1 的结果只和p2.1位的状态有关系,其它位都和0异或,被清掉了
lbing7
2008-07-14
打赏
举报
回复
^
这个运算符被C51扩展了
和别的新加的关键字一样
为了适应单片机平台而改动的
当然,它依然具备标准C里的异或运算功能
也就这么回事
别想太多...
至于什么时候是什么作用,那么它于你用它的地方
以及编译器识别
qjx1984
2008-07-14
打赏
举报
回复
建议你查看一下REG51.H这个头文件 应该就能知道了
MzLH03 12864液晶显示程序及资料
MzLH03 12864液晶显示程序及资料 /* 液晶驱动程序 Beta1.2 */ #include
#include
/*参数定义*/ #define BEIGUANG 60 //设置背光灯亮度 sbit SPI_RES =
P2
^0; //定义RESET接
P2
.0
端口
sbit SPI_CS =
P2
^1; //定义CS接在
P2
.1
端口
sbit SPI_BUSY =
P2
^2; //定义BUSY接
P2
.2
端口
sbit SPI_SDA =
P2
^3; //定义SDA接在
P2
.3
端口
sbit SPI_SCK =
P2
^4; //定义SCK接在
P2
.4
端口
.......
1.点亮led
LED电路图如下 当
P2
的引脚输出低电平时LED就可以点亮了,所以代码如下: #include"reg52.h" sbit led0=
P2
^0;//把
P2
口的第0位定义为(命名为)led0 sbit led1=
P2
^1; sbit led2=
P2
^2; sbit led3=
P2
^3; sbit led4=
P2
^4; sbit led5=
P2
^5; sbit led6=
P2
^6; sbit led7=
P2
^7; void main() { while(1) { led0=0; //把灯.
第一次技术报告
第一次技术报告 1.锁存器的概念 锁存器是用来维持IO口信号输出的芯片,可以实现一个IO口作多种用途的功能。 在使能状态下,锁存器输出输入的信号。 在非使能状态下,锁存器输出上一次的值。 例如, 假设单片机P0.1口可控制LED1和LED2, LED1通过锁存器1与P0.1相连,锁存器1由
P2
.1控制 LED2通过锁存器2与P0.2相连,锁存器2由
P2
.2控制
P2
^1 = 1;//使能锁存器1 P0^1 = 0;//点亮LED1
P2
^1 = 0;//停止使能
P2
^2 = 1;//使能锁存器2 P0^1
【51单片机】基础例程|C语言
文章目录LED点灯:1. 通过sbit赋值2.直接给
P2
串行口赋值流水灯 LED点灯: 1. 通过sbit赋值 #include "reg51.h" sbit key1 =
P2
^0; sbit key2 =
P2
^1; sbit led1 = P1^0; sbit led2 = P1^1; void main(void){ while(1){ /* if
P2
.0
端口
按下(按键接了一个GND,所以按下按键为低电平) 则led1赋低电平,给led2高电平 */ if(key1 == 0
在单片机的
P2
口接8个开关,P0口接8个LED灯(要求P0口接LED的阳极),通过控制
P2
口8个开关控制P0口LED的亮灭,即当
P2
口有开关按下时P0口对应位LED被点亮
问题
在单片机的
P2
口接8个开关,P0口接8个LED灯(要求P0口接LED的阳极),通过控制
P2
口8个开关控制P0口LED的亮灭,即当
P2
口有开关按下时P0口对应位LED被点亮 仿真如下 代码 #include <reg51.h> #define uchar unsigned char #define uint unsigned int void delay() { uint i...
单片机/工控
27,507
社区成员
28,796
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章