欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 單片機(jī)定時器中斷及仿真 時間到LED反轉(zhuǎn) [打印本頁]

作者: 迷路者666    時間: 2022-4-8 09:56
標(biāo)題: 單片機(jī)定時器中斷及仿真 時間到LED反轉(zhuǎn)
設(shè)計(jì)一個單片機(jī)實(shí)驗(yàn),完成對定時器事件進(jìn)行計(jì)數(shù),當(dāng)來2個時,通過中斷用數(shù)碼管顯示相應(yīng)信息或執(zhí)行一個任務(wù),當(dāng)來6個時,又顯示另外的信息或執(zhí)行另一個任務(wù),計(jì)數(shù)具備清零,發(fā)現(xiàn)中斷時,有相應(yīng)信息提示。

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


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

  2. typedef unsigned int u16;          //對數(shù)據(jù)類型進(jìn)行聲明定義
  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,這是共陰極數(shù)碼管0-9的段碼


  11. int count0,count1;

  12. //定時器0溢出中斷程序
  13. void timer0() interrupt 1  //定時器0中斷標(biāo)志位為1
  14. {
  15.         //重新裝載定時器0計(jì)數(shù)初值
  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中斷標(biāo)志位為3
  27. {
  28.         //重新裝載定時器1計(jì)數(shù)初值
  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計(jì)數(shù)初值
  55.         TH0=(65536-50000)/256;    //內(nèi)置時鐘頻率為6MHz,定時器0計(jì)數(shù)50000次,計(jì)數(shù)初值為15536轉(zhuǎn)為16進(jìn)制
  56.         TL0=(65536-50000)%256;    //機(jī)械周期為2us,T0=(65536-計(jì)數(shù)初值)*2us=0.1s
  57.         //裝載定時器1計(jì)數(shù)初值
  58.         TH1=(65536-25000)/256;    //內(nèi)置時鐘頻率為6MHz,定時器0計(jì)數(shù)25000次,計(jì)數(shù)初值為40536轉(zhuǎn)為16進(jìn)制
  59.         TL1=(65536-25000)%256;    //機(jī)械周期為2us,T1=(65536-計(jì)數(shù)初值)*2us=0.05s
  60.         led1=0;   //控制P3.0
  61.         led2=0;   //控制P1.0
  62.         
  63.         while(1)
  64.         {
  65.                  
  66.         }

  67. }
復(fù)制代碼

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






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