久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1967|回復: 3
打印 上一主題 下一主題
收起左側

這個單片機程序有些看不懂

[復制鏈接]
跳轉到指定樓層
樓主
ID:272569 發表于 2018-1-6 22:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char          //數據類型宏定義
  4. #define uint unsigned int
  5. #define out  P0                                  //IO端口定義
  6. /*******共陽數碼管 0 ,  1  ,2  ,3 , 4  ,5  ,6 , 7,  8  ,9 ******/
  7. uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x01};

  8. uint i = 0;         //全局變量
  9. uint cnt=0;
  10. /***********主函數*******************************************************/
  11. void main(void)
  12. {
  13.         int j;

  14.         TMOD=0x15;                          // 定時器0工作于計數方式,工作方式1,16位計數
  15.                                             // 定時器1工作于定時方式,工作方式1,16位定時
  16.         TH0=0;                                                                // 清零計數器
  17.         TL0=0;
  18.         TH1=0x4C;                                                        // 12M晶振工作下,定時50ms
  19.         TL1=0x00;
  20.         TR0=1;                                                                // 啟動定時器0
  21.         TR1=1;                                                                // 啟動定時器1
  22.         IE=0x88;                                                        // 打開定時中斷1和總中斷
  23.         while(1)
  24.         {                        
  25.                 P2=0x00;                                                  // 輸出百位
  26.                 out = seg[cnt/100];        
  27.                 P2 = 0x01;
  28.                 for(j=0;j<100;j++);

  29.                 P2=0x00;
  30.                 out = seg[cnt%100/10];                        // 輸出十位
  31.                 P2 = 0x02;         
  32.                 for(j=0;j<100;j++);         

  33.                 P2=0x00;                                                
  34.                 out = seg[cnt%10];                                 // 輸出個位
  35.                 P2 = 0x04;
  36.                 for(j=0;j<100;j++);
  37.         }                  
  38. }

  39. /***********計數器T0中斷處理函數******************************************/
  40. void Timer1_ISR() interrupt 3
  41. {
  42.         static char j = 0;
  43.          i++;
  44.         TH1=0x4C;                                                   // 重設定時器值,50ms @ 12MHz XTAL
  45.         TL1=0x00;
  46.         if(++j == 20)                                           // 50ms * 20 = 1S
  47.         {                          
  48.                 j = 0;
  49.                 i = (TH0 << 8) | TL0;                   // 1S內的計數值
  50.                 cnt=i;
  51.                 i=0;
  52.                 TH0 = 0;                                           // 清零計數
  53.                 TL0 = 0;         
  54.         }
  55. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:111634 發表于 2018-1-7 20:44 | 只看該作者
先學理論,打基礎,否則,問題多多,事倍功半。
回復

使用道具 舉報

板凳
ID:273285 發表于 2018-1-9 08:39 | 只看該作者
具體是哪些地方看不懂呢?簡單瀏覽了一下代碼,這就是個在數碼管上顯示計數器的計數次數的程序啊。
開始配置計時器為50ms產生一次中斷,然后在中斷中判斷是否已經到了1s(即進入中斷20次),如果已經到了1s就把定時器0的數值賦給cnt變量, 從而在主程序中通過數碼管將定時器0的計數顯示出來。
回復

使用道具 舉報

地板
ID:7485 發表于 2018-1-9 10:26 | 只看該作者
你的程序里面,就沒有TL0增加的語句,所以TH0、TL0會一直不變。

你需要在你認為合適的地方增加一句“TL0++;” (不知道你程序的意圖,所以也不知道這一句加在哪兒合適)。


回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品a久久久久 | 亚洲一区二区三区乱码aⅴ 四虎在线视频 | 亚洲一区综合 | 色婷婷av一区二区三区软件 | 久久9热 | 最新日韩精品 | 国产在线精品一区二区三区 | 欧美专区日韩 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 精品久久久999 | 欧美日韩在线观看一区 | 成人精品一区二区三区 | 国产露脸国语对白在线 | 国产精品久久久久久久久久久免费看 | 中文在线观看视频 | 成人亚洲网站 | 免费高清av | 精品成人一区二区 | 视频一区二区在线观看 | 人妖无码 | 国产精品九九九 | 国产电影一区二区三区爱妃记 | 色婷婷综合久久久中字幕精品久久 | 香蕉视频91 | 欧美黑人又粗大 | 午夜寂寞影院列表 | 午夜精品一区二区三区在线观看 | 天堂网色 | 亚洲精品久久区二区三区蜜桃臀 | 美女午夜影院 | 亚洲传媒在线 | 欧美在线a| 男女国产视频 | 成人免费视频久久 | 欧美精品一区二区三区四区 在线 | 一级日批片 | 精品一区二区久久久久久久网精 | 日韩高清成人 | 最新一级毛片 | 亚洲精品久久久久久久久久久久久 | 欧美黑人一区 |