程序如下:
#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://m.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |