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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

程序這樣寫是單片機定時器不工作還是寫得有問題?

[復制鏈接]
跳轉到指定樓層
樓主
ID:706724 發表于 2024-4-24 22:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
用STC8G1K08A單片機的定時器0 寫了定時亮燈的程序,但發覺不產生定時作用。以下是定時器0的程序。請各位大佬指導一下。
  1. bit FLAG = 0;       //計數完成標志位
  2. sbit led=P5^4;
  3. uint count;     //計數變量1
  4. uint count2;    //計數變量2
  5. uint count3;    //計數變量3


  6. /*****************定時器0函數*******************/
  7. void Timer0_Init(void)                //50毫秒@12.000MHz
  8. {
  9.         AUXR &= 0x7F;                        //定時器時鐘12T模式
  10.         TMOD &= 0xF0;                        //設置定時器模式
  11.         TL0 = 0xB0;                                //設置定時初始值  
  12.         TH0 = 0x3C;                                //設置定時初始值
  13.         TF0 = 0;                                //清除TF0標志
  14.         ET0 = 1;
  15.         TR0 = 1;                                //定時器0開始計時
  16.         
  17. }


  18. void led0()
  19. {
  20.         led=0;        //燈亮
  21.          count  = 0;
  22.    count2 = 1;
  23.    count3 = 11;      //定時1分鐘
  24.    TR0 = 1;  //啟動定時器0
  25.         
  26. }


  27. void led1()
  28. {
  29.         led=0;//燈亮
  30.          count  = 0;
  31.    count2 = 30;        //
  32.    count3 = 11;      //定時0.5小時
  33.     TR0 = 1;  //啟動定時器0
  34.         
  35. }


  36. void led2()
  37. {
  38.         led=0;//燈亮
  39.          count  = 0;
  40.    count2 = 0;        //
  41.    count3 = 11;      //定時1小時
  42.     TR0 = 1;  //啟動定時器0
  43.         
  44.                
  45. }


  46. void led3()
  47. {
  48.           led=0;//燈亮
  49.                 EA=0;//關閉外部中斷,
  50.          count  = 0;
  51.    count2 = 0;        //
  52.    count3 = 8;      //定時4小時
  53.     TR0 = 1;  //啟動定時器
  54.         
  55. }




  56. /********************** Timer0中斷函數************************/
  57. void Timer0_Isr()interrupt 1 using 1
  58. {
  59.         TL0   =        0xB0;
  60.         TH0  =        0x3C;            //50MS
  61.         count++;
  62.         if(count==1200)            //60S 1200
  63.         {
  64.                 count=0;
  65.                 count2++;
  66.                 if(count2==60)        //60分鐘  60
  67.                 {
  68.                         count2=0;
  69.                         count3++;
  70.                         if(count3==12)// 12小時
  71.                         {
  72.                             count3=0;
  73.                                                                                                           led=1;
  74.                                                                                                            EA=1;
  75.                              FLAG = 1;          //計數時間到標志  可重新檢測外圍的是否有中斷
  76.                         }
  77.                 }
  78.         }               
  79. }
復制代碼



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

使用道具 舉報

沙發
ID:619259 發表于 2024-4-25 00:25 | 只看該作者
"EA=1"放進中斷函數里不對呵
回復

使用道具 舉報

板凳
ID:1109793 發表于 2024-4-25 07:23 | 只看該作者
EA要先打開,否則任何中斷都進不去吧
回復

使用道具 舉報

地板
ID:11804 發表于 2024-4-25 09:20 | 只看該作者
單片機一開機上電要打開中斷,后面的中斷才能響應,
void Timer0_Isr()interrupt 1 using 1
{EA=0;
.....
.....
EA=1;

}
.....
EA=1;
void main()
{
while(1){};
}
或者
void main()
{EA=1;
while(1){};
}
回復

使用道具 舉報

5#
ID:161164 發表于 2024-4-25 10:21 | 只看該作者
main()函數呢?被吞了?
回復

使用道具 舉報

6#
ID:624075 發表于 2024-7-2 14:17 | 只看該作者
EA ET0沒開怎么進中斷
回復

使用道具 舉報

7#
ID:1109793 發表于 2024-7-2 14:37 | 只看該作者
heyanrog 發表于 2024-4-25 09:20
單片機一開機上電要打開中斷,后面的中斷才能響應,
void Timer0_Isr()interrupt 1 using 1
{EA=0;

EA=1;
void main()
{
while(1){};
}
這樣也行?
回復

使用道具 舉報

8#
ID:675287 發表于 2024-7-2 15:16 | 只看該作者
在主程序里面打開中斷總開關,不然是不會產生中斷的
回復

使用道具 舉報

9#
ID:1127908 發表于 2024-7-2 15:36 | 只看該作者
EA要先打開,否則任何中斷都進不去吧
回復

使用道具 舉報

10#
ID:23640 發表于 2024-7-2 16:07 | 只看該作者
主函數都不寫?編譯能通過嗎?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表