找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1789|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

有大佬幫我再詳細(xì)注解下這個(gè)程序嗎還是有點(diǎn)沒(méi)看懂

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:437648 發(fā)表于 2018-12-22 14:39 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. uchar temp,aa,nn;
  6. sbit rn=P2^0;                                
  7. sbit nb=P2^1;
  8. sbit gn=P2^2;
  9. sbit rw=P2^3;
  10. sbit dx=P2^4;
  11. sbit gw=P2^5;
  12. sbit shi=P3^6;
  13. sbit ge=P3^7;                            /*對(duì)要使用的單片機(jī)各個(gè)口進(jìn)行定義*/
  14. bit flag=0;

  15. uchar code table[]={
  16.     0x3f,0x06,0x5b,0x4f,
  17.     0x66,0x6d,0x7d,0x07,
  18.     0x7f,0x6f,0x77,0x7c,
  19.     0x39,0x5e,0x79,0x71};         /*將數(shù)字0123456789的16進(jìn)制數(shù)定義成數(shù)組用以顯示*/

  20. void delay(uint z);
  21. void disp(uint n);
  22. void nb_flash(void);
  23. void dx_flash(void);
  24. void  xint0();
  25. void timer0();
  26. void  LED_ON();
  27. void  xint1();
  28. void  LED_OFF();
  29. void nanbei();
  30. void dongxi();
  31.                 /*將所使用的子函數(shù)定義*/
  32. void main()
  33. {
  34.         uint num;
  35.         num=0;
  36.         aa=0;
  37.         TMOD=0x01;
  38.         TH0=(65536-50000)/256;
  39.         TL0=(65536-50000)%256;
  40.         EA=1;
  41.         ET0=1;
  42.         TR0=1;
  43.         EX0=1;
  44.         IT0=0;
  45.         EX1=1;
  46.         IT1=1;                       /*中斷初始化*/
  47.         while(1)
  48.         {
  49.             nanbei();   
  50.             nb_flash();
  51.             dongxi();
  52.             dx_flash();                /*主函數(shù)中顯示部分*/
  53.         }
  54. }
  55. void delay(uint z)                    /*延時(shí)子函數(shù)*/
  56. {
  57.         uint x,y;
  58.         for(x=z;x>0;x--)
  59.             for(y=110;y>0;y--);
  60. }
  61. void timer0() interrupt 1             /*定時(shí)器初始化*/
  62. {
  63.         TH0=(65536-50000)/256;
  64.         TL0=(65536-50000)%256;
  65.         aa++;
  66.         if(aa==18)
  67.         {
  68.             aa=0;
  69.             flag=1;
  70.         }   
  71. }
  72. void disp(uint n)                    /*顯示子函數(shù)*/
  73. {
  74.       while(!flag)
  75.       {
  76.           ge=0;
  77.           P0=table[n%10];
  78.           delay(50);
  79.           shi=1;ge=1;
  80.           shi=0;
  81.           P0=table[n/10];
  82.           delay(50);
  83.           shi=1;ge=1;
  84.        }
  85.       if(flag==1)
  86.          flag=0;
  87. }
  88. void nanbei()                    /*南北方向的紅綠燈和數(shù)碼管顯示子函數(shù)*/
  89. {        uint num;
  90.             num=60;
  91.             disp(num);
  92.             while(num<=60&&num>0)
  93.             {     num--;
  94.                  P2=0xde;
  95.                     disp(num);            
  96.             }
  97. }
  98. void dongxi()                     /*東西方向的紅綠燈和數(shù)碼管顯示子函數(shù)*/
  99. {        uint num;            
  100.              num=60;
  101.             while(num<=60&&num>0)
  102.             {    P2=0xf3;      
  103.                 disp(num);
  104.                 num--;
  105.             }
  106. }
  107. void nb_flash(void)              /*南北方向的黃燈和數(shù)碼管顯示子函數(shù)*/
  108. {
  109.         uint a;
  110.         for(a=3;a>0;a--)
  111.         {    P2=0xdd;
  112.              nb=1;
  113.              delay(100);
  114.             nb=0;
  115.             disp(a);
  116.         }
  117. }
  118. void dx_flash(void)                /*東西方向的黃燈和數(shù)碼管顯示子函數(shù)*/
  119. {
  120.         uint a;
  121.         for(a=3;a>0;a--)
  122.         {     P2=0xeb;
  123.              dx=1;
  124.              delay(100);
  125.              dx=0;
  126.              disp(a);
  127.         }
  128. }
  129. void  xint0()  interrupt 2                     /*中斷定義*/
  130. {   
  131.     TH0=(65536-50000)/256;
  132.     TL0=(65536-50000)%256;   
  133.      LED_ON();   
  134. }
  135. void  LED_ON()                       /*開(kāi)關(guān)控制燈的子函數(shù)*/   
  136. {            uint b;
  137.             rn=0;
  138.             rw=0;
  139.             gn=1;
  140.             gw=1;
  141.             nb=1;
  142.             dx=1;
  143.             for(b=5;b>0;b--)
  144.             {
  145.             ge=0;shi=1;
  146.             P0=table[b];
  147.             delay(1000);
  148.             ge=1; shi=1;
  149.             }            
  150.             return;
  151. }
復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:21069 發(fā)表于 2018-12-22 17:33 | 只看該作者
void delay(uint z);
void disp(uint n);
void nb_flash(void);
void dx_flash(void);
void  xint0();
void timer0();
void  LED_ON();
void  xint1();
void  LED_OFF();
void nanbei();
void dongxi();這些函數(shù)多數(shù)別人都有拼音標(biāo)注了,sbit rn=P2^0;                                
sbit nb=P2^1;
sbit gn=P2^2;
sbit rw=P2^3;
sbit dx=P2^4;
sbit gw=P2^5;
sbit shi=P3^6;
sbit ge=P3^7;                            /*對(duì)要使用的單片機(jī)各個(gè)口進(jìn)行定義*/
bit flag=0;這些如果你不喜歡別人的定義名你可以自己整成你喜歡的,這樣整他一下,就不信你還要?jiǎng)e人幫你注解
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表