单片机二进制计数

#include<AT89X51.H>unsigned char count;void delay10ms(void){unsigned char i,j;for(i=20;i>0;i--)for(j=248;j>0;j--);}void main(void){while(1){if(P3_7==0){count++;if(count==16){count=0;}P1=~count;while(P3_7==0);}}}}

有段程序不是很明白
{count++;if(count==16){count=0;}P1=~count;
这段代码意思是不是
count=16复原为0
还有P1=~count
是什么意思
P1和P1_0这样的表示有什么区别
三个LED是哪段代码控制亮和灭的

楼上的搞笑,他现在不是正在百度嘛。
作者的设计思想是,按一次按键,count加1,P1 = ~count;意思是把count按位取反后赋值到P1端口。我给你列个数据你就懂了。
1、按键按第1次,count = 1; P1 = ~count = 0xfe;LED灯里的L1亮,其他灭。
2、按键按第2次,count = 2; P1 = ~count = 0xfd;LED灯里的L2亮,其他灭。
3、按键按第3次,count = 3; P1 = ~count = 0xfc;LED灯里的L1、L2亮,其他灭。
4、按键按第4次,count = 4; P1 = ~count = 0xfb;LED灯里的L3亮,其他灭。


15、按键按第15次,count = 15; P1 = ~count = 0xf0;LED灯全部亮。
16、按键按第16次,count = 16;然后count = 0;
程序又从头开始。追问

明白了
想问哪里来的地址代码 如0xfe,是51单片机的规格树有吗
还有就是汇编代号在规格书有吗

追答

这个不是地址映射,只是将0xfe赋给端口寄存器而已。
我建议你去把C语言学好,多看点单片机方面的书。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-12
1) 十进制16 = 二进制 1000
2)按你的图 P1口低四位控制灯,当P1.1到P1.4中任意一个为低电平时小灯发光
3)当 count = 1,若P1 = count,则P1 = 00000001,再取个反,P1 = ~count,那么P1 = 11111110,也就是P1.0=0,此时P1.0端口的小灯会亮。
4)P1代表P1.0到P1.7八条路,P1_0代表P1.0一条通路追问

谢谢

第2个回答  2013-09-12
不知道,你可以百度一下
相似回答