|
這是自己做的文檔中一個(gè)題目,運(yùn)用自己學(xué)習(xí)的定時(shí)器加中斷你來(lái)寫一個(gè)流水燈,主要是用來(lái)檢測(cè)自己對(duì)定時(shí)器的掌握。亮燈的代碼沒(méi)有封裝函數(shù),如有需要可以自己封裝
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png (9.91 KB, 下載次數(shù): 77)
下載附件
2019-11-10 15:24 上傳
單片機(jī)源程序如下:
- #include<reg51.h>
- /*
- sbit LED = P1^0;
- sbit LED1 = P1^1;
- sbit LED2 = P1^2;
- sbit LED3 = P1^3;
- sbit LED4 = P1^4;
- sbit LED5 = P1^5;
- sbit LED6 = P1^6;
- sbit LED7 = P1^7;
- */
- unsigned char cnt = 0;
- void main(void)
- {
- unsigned char i = 0;
- unsigned char num = 1;
-
- EA = 1;
- TMOD = 0x01;
- TH0 = 0xFC;//1ms定時(shí)器 0xFC67
- TL0 = 0x67;
- TR0 = 1;
- ET0 = 1;
- while(1)
- {
- switch(num)
- {
- case 1:
- if(cnt >= 100)
- {
- cnt = 0;
- P1 = ~(0x01 << i);
- i++;
- if(i >= 8)
- {
- i = 0;
- num = 0;
- }
- }
- break;
-
- case 0:
- if(cnt >= 100)
- {
- cnt = 0;
- P1 = ~(0x80 >> i);
- i++;
- if(i >= 8)
- {
- i = 0;
- num = 1;
- }
- }
- break;
-
- default:
- break;
- }
- }
-
- //return 0;
- }
- void InterruptTimer0() interrupt 1
- {
- ET0 = 0;
- TH0 = 0xFC;//1S定時(shí)器 0xFC67
- TL0 = 0x67;
- cnt++;
- ET0 = 1;
- }
復(fù)制代碼
所有資料51hei提供下載:
LED-CESHI.rar
(80.16 KB, 下載次數(shù): 11)
2019-11-8 15:01 上傳
點(diǎn)擊文件名下載附件
仿真文件與源碼 下載積分: 黑幣 -5
|
|