AT89S51一段程序,怎样理解?
发布网友
发布时间:2024-10-09 03:05
我来回答
共3个回答
热心网友
时间:2024-10-30 14:14
P1口共有P1.0~P1.7这8 个IO 口,对应也是一个字节的8 位输出 。
MOV P1,#01111111B;最下面的LED点亮
是P1.7为低电平 ,其它7 个口为高电平,这样就是最下面那个LED亮。如果是MOV P1,#10111111B,就是下面第2 个LED亮。
。。。。。。
由此类推,你就知道道理了。
热心网友
时间:2024-10-30 14:15
我觉得这个你应该从硬件的角度理解这个编码的问题。
假如你P口的驱动能力足够,从单片机P口出来后就连接到发光二极管对地。当你从此管脚输出高电平时,发光二极管导通,于是点亮;同理,当输出低电平是截止。
编码不是随意编,而是根据你所需要某个时刻需要点亮某个管脚的LED编码的。
P1.0~P1.7与#01111111B...#10111111B这些数字之间的没什么必然的对应关系,只是从P1口输入对应的电平。如果非要说所谓的对应关系的,就是给端口输出赋值时的二进制数的从低到高对应的是P1.0~P1.7
热心网友
时间:2024-10-30 14:15
"#01111111B、#10111111B...#11111111B"都是立即数,送给P1口后,P1口的各个位也就是这个立即数的各个位了。所以为1的位,灯是灭的,因高电平,LED不亮;为0的位,灯是亮的,因输出低电平时,LED亮。这是由于P1口接上了8个LED的缘故,并且这些LED是低亮,高不亮的。
立即数在程序中的程序存储器空间。也就是,在代码区。