用8个发光管演示出8位二进制数累加过程

2019-07-16 02:38发布

#include<reg52.h>  //52单片机头文件
#include <intrins.h> //包含有左右循环移位子函数的库
#define uint unsigned int    //宏定义
#define uchar unsigned char  //宏定义
void delay(uint z)  //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.
{     //delay(500);大约延时500ms.
uint x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
void main()      //主函数
{
uchar a;
while(1)        //大循环
{
  a++;
  P1=~a;
  delay(200);
}
}
请问这个程序为什么能实现8个发光管演示出8位二进制数累加过程,而且在使用a++之前不用先给a赋值吗?新手,很困惑,望高手解答!


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
芸芸众生3737
1楼-- · 2019-07-16 17:25
 精彩回答 2  元偷偷看……
星期日LYR
2楼-- · 2019-07-16 17:29
a是uchar类型,范围0到255,255等于1111 1111,a=0,~a=1111 1111;
a=1,~a=1111 11110;a=2,~a=1111 1101。。。以此类推

一周热门 更多>