关于51单片机io口sbit赋值的问题 15
这是定义sbitDAT=P2^0;这是数组ucharcodetab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9...
这是定义sbit DAT=P2^0;
这是数组uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
num=tab[0];
DAT=num&0x80;
num=num<<1;
-----------------------------------------------------------------------------------------------
DAT=num&0x80;这句赋值是什么意思,是把num和0x80的且运算的最高位赋给dat吗
---------------------------------------------------------------------------------------------
#include<reg52.h>
sbit l1=P1^0;//连接一个发光二极管
unsigned char a=0x40;
int main(){
l1=a;
while(1);
}
如果是最高位赋值,我试了这个程序发光二级管不会亮感觉很奇怪,求解。。。 展开
这是数组uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
num=tab[0];
DAT=num&0x80;
num=num<<1;
-----------------------------------------------------------------------------------------------
DAT=num&0x80;这句赋值是什么意思,是把num和0x80的且运算的最高位赋给dat吗
---------------------------------------------------------------------------------------------
#include<reg52.h>
sbit l1=P1^0;//连接一个发光二极管
unsigned char a=0x40;
int main(){
l1=a;
while(1);
}
如果是最高位赋值,我试了这个程序发光二级管不会亮感觉很奇怪,求解。。。 展开
3个回答
展开全部
DAT=num&0x80;是逻辑与的结果送DAT,这里由最高位决定。
l1=a; 屏蔽后送最低位。
l1=a; 屏蔽后送最低位。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把l1改成P1
0x40 的二进制是 0100 0000
P1^0 只是一个位
P1 有八个io口,即8位,
P1=0X40,就是把 0100 0000 分别赋给P1的八个位
0x40 的二进制是 0100 0000
P1^0 只是一个位
P1 有八个io口,即8位,
P1=0X40,就是把 0100 0000 分别赋给P1的八个位
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询