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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1890|回復: 0
收起左側

單片機定時器中斷及仿真 時間到LED反轉

[復制鏈接]
ID:449849 發表于 2022-4-8 09:56 | 顯示全部樓層 |閱讀模式
設計一個單片機實驗,完成對定時器事件進行計數,當來2個時,通過中斷用數碼管顯示相應信息或執行一個任務,當來6個時,又顯示另外的信息或執行另一個任務,計數具備清零,發現中斷時,有相應信息提示。

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

中斷

中斷


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

  2. typedef unsigned int u16;          //對數據類型進行聲明定義
  3. typedef unsigned char u8;

  4. sbit led1=P3^0;
  5. sbit led2=P1^0;

  6. sbit k0=P3^2;  //定義按鍵K3

  7. #define smg P2

  8. u8 tab[]=                   //段碼表
  9. {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  10. //0,          1,         2,          3,         4,                5,         6,                7,         8,                9,這是共陰極數碼管0-9的段碼


  11. int count0,count1;

  12. //定時器0溢出中斷程序
  13. void timer0() interrupt 1  //定時器0中斷標志位為1
  14. {
  15.         //重新裝載定時器0計數初值
  16.         TH0=(65536-50000)/256;
  17.         TL0=(65536-50000)%256;
  18.         if(count0==20)   //T0*10=1s LED1閃爍
  19.         {
  20.                 led1=~led1;
  21.                 count0=0;
  22.         }
  23.         count0++;
  24. }

  25. //定時器1溢出中斷程序
  26. void timer1() interrupt 3  //定時器1中斷標志位為3
  27. {
  28.         //重新裝載定時器1計數初值
  29.         TH1=(65536-25000)/256;
  30.         TL1=(65536-25000)%256;
  31.         
  32.         count1++;
  33.         
  34.         if(count1==40)  //T1*10=0.5s LED2閃爍  20為2秒
  35.         {
  36.                 led2=~led2;
  37.                 //count1=0;
  38.         }
  39.         if(count1==120*3) //為6秒
  40.         {
  41.                 smg = tab[6];
  42.                 //count1 = 0;
  43.         }
  44.         
  45. }

  46. int main()
  47. {
  48.         EA=1;    //全局中斷使能
  49.         ET0=1;   //定時器0溢出中斷使能
  50.         ET1=1;   //定時器1溢出中斷使能
  51.         TR0=1;   //定時器0使能
  52.         TR1=1;   //定時器1使能
  53.         TMOD=0x11;   //00010001B,定時器0、1使用工作方式1,16位定時器
  54.         //裝載定時器0計數初值
  55.         TH0=(65536-50000)/256;    //內置時鐘頻率為6MHz,定時器0計數50000次,計數初值為15536轉為16進制
  56.         TL0=(65536-50000)%256;    //機械周期為2us,T0=(65536-計數初值)*2us=0.1s
  57.         //裝載定時器1計數初值
  58.         TH1=(65536-25000)/256;    //內置時鐘頻率為6MHz,定時器0計數25000次,計數初值為40536轉為16進制
  59.         TL1=(65536-25000)%256;    //機械周期為2us,T1=(65536-計數初值)*2us=0.05s
  60.         led1=0;   //控制P3.0
  61.         led2=0;   //控制P1.0
  62.         
  63.         while(1)
  64.         {
  65.                  
  66.         }

  67. }
復制代碼

Keil代碼與Proteus仿真下載:
定時器中斷: 實驗1.7z (48.79 KB, 下載次數: 12)

評分

參與人數 1黑幣 +10 收起 理由
admin + 10 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久高清| 欧美片网站免费 | 日韩二区| 婷婷久久网 | 日本久久久久久 | 成人高清在线视频 | 爱综合| 亚洲三区视频 | 综合色婷婷 | 精品亚洲一区二区三区 | 久久香蕉精品视频 | 国产精品999 | 伊人手机在线视频 | 亚洲色图婷婷 | 综合久久综合久久 | 亚洲激情在线 | 成人亚洲性情网站www在线观看 | www久久久 | 欧美综合国产精品久久丁香 | 一本大道久久a久久精二百 欧洲一区二区三区 | 这里精品 | 久久久久国产一区二区三区四区 | 亚洲欧美日韩国产综合 | 国产精品免费福利 | 日本中文字幕在线观看 | 在线观看av网站永久 | www在线视频 | 欧美一级片在线观看 | 久在线观看 | 香蕉久久久 | 国产精品一区二区三区在线 | 成人午夜精品 | 亚洲一区二区三区视频免费观看 | 一区二区三区在线看 | 亚洲一区二区久久久 | 一级黄色毛片免费 | 成人午夜影院 | 热久久久久 | 精久久久 | 国产精久久久久久久妇剪断 | 亚洲一区在线播放 |