程序如下:
#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);
}
}
前面那个delay是延时,但主函数这部分我看不懂,请高手指点,谢谢啦
它这个程序的电路图可能是当p1口低电平是 LED 等被点亮. 8位2进制数累加既是:00000000— 00000001— 00000010— 000000011..... 11111111 .
开始的a=0 , 进入循环后,a=1, 既是00000001, 取反后 p1=~a;则P1=FFFFFFF0, 因为是低电平有效 这个时候 P1口的8个LED灯的 最后一个被点亮。。然后
以此类推。 呃,我个人认为是这样的哈, 呵呵 ,希望能帮到你.
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |