標(biāo)題: 51單片機(jī)實(shí)現(xiàn)仿真從左到右再?gòu)挠业阶蟮牧魉疅粼闯绦?[打印本頁(yè)]

作者: 八月初    時(shí)間: 2019-11-8 15:03
標(biāo)題: 51單片機(jī)實(shí)現(xiàn)仿真從左到右再?gòu)挠业阶蟮牧魉疅粼闯绦?br />這是自己做的文檔中一個(gè)題目,運(yùn)用自己學(xué)習(xí)的定時(shí)器加中斷你來(lái)寫(xiě)一個(gè)流水燈,主要是用來(lái)檢測(cè)自己對(duì)定時(shí)器的掌握。亮燈的代碼沒(méi)有封裝函數(shù),如有需要可以自己封裝

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include<reg51.h>

  2. /*
  3. sbit LED  = P1^0;
  4. sbit LED1 = P1^1;
  5. sbit LED2 = P1^2;
  6. sbit LED3 = P1^3;
  7. sbit LED4 = P1^4;
  8. sbit LED5 = P1^5;
  9. sbit LED6 = P1^6;
  10. sbit LED7 = P1^7;
  11. */



  12. unsigned char cnt = 0;

  13. void main(void)                          
  14. {
  15.         unsigned char i = 0;
  16.         unsigned char num = 1;
  17.        
  18.         EA = 1;
  19.         TMOD = 0x01;
  20.         TH0 = 0xFC;//1ms定時(shí)器 0xFC67
  21.         TL0 = 0x67;
  22.         TR0 = 1;
  23.         ET0 = 1;

  24.         while(1)
  25.         {       
  26.                 switch(num)
  27.                 {
  28.                         case 1:
  29.                                 if(cnt >= 100)
  30.                                 {
  31.                                         cnt  = 0;
  32.                                         P1 = ~(0x01 << i);
  33.                                         i++;
  34.                                         if(i >= 8)
  35.                                         {       
  36.                                                 i = 0;
  37.                                                 num = 0;
  38.                                         }
  39.                                 }       
  40.                                 break;
  41.                        
  42.                         case 0:
  43.                                 if(cnt >= 100)
  44.                                 {
  45.                                         cnt  = 0;
  46.                                         P1 = ~(0x80 >> i);
  47.                                         i++;
  48.                                         if(i >= 8)
  49.                                         {       
  50.                                                 i = 0;
  51.                                                 num = 1;
  52.                                         }
  53.                                 }
  54.                                 break;
  55.                        
  56.                         default:
  57.                                 break;
  58.                 }
  59.         }
  60.        
  61.         //return 0;
  62. }

  63. void InterruptTimer0() interrupt 1
  64. {
  65.                 ET0 = 0;
  66.                 TH0 = 0xFC;//1S定時(shí)器 0xFC67
  67.                 TL0 = 0x67;

  68.                 cnt++;
  69.                 ET0 = 1;
  70. }
復(fù)制代碼

所有資料51hei提供下載:
LED-CESHI.rar (80.16 KB, 下載次數(shù): 11)


作者: lhxtzlhxtz    時(shí)間: 2019-11-11 14:30
我需要這個(gè)程序。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1