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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

C8051F120單片機定時器中斷函數不起作用,求分析原因

[復制鏈接]
跳轉到指定樓層
樓主
ID:743654 發表于 2021-7-31 14:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
100黑幣
本帖最后由 cheney03 于 2021-7-31 15:12 編輯

為什么  if(flag_close>4000)         {  KEY=0;} 放中斷中不起作用,KEY沒法置0。
而放到中斷外主函數中該函數可以執行,KEY置零。
通過LED模塊檢測,定時器是正常計數的。

單片機源程序如下:
int flag_close;//關機標志位
sbit KEY=P4^0;//按鍵

void PORT_Init(void) //端口初始化
{
          SFRPAGE  = CONFIG_PAGE;
          XBR0     = 0x04;
          XBR1     = 0x00;
          XBR2     = 0x40;
          flag_open=0;
          flag_close=0;
          P0MDOUT |=0x01;
          P1MDOUT  =0x00;
          P2MDOUT  =0xff;
          P3MDOU    =0xff;   
          P4MDOUT  =0xff;
          P6MDOUT |=0x9f;
          P5MDOUT  =0x00;
          P7MDOUT  =0x00;
}


void Timer0_Init(void) //定時器0初始化
{
   char SFRPAGE_SAVE = SFRPAGE;        // Save Current SFR page

   SFRPAGE = TIMER01_PAGE;             // Set SFR page


   TH0 =0x38;//0X38;                         // Init Timer0 High register
   TL0 = 0x9F;//0x9F;                         // Set the intial Timer0 value
   TMOD = 0x01;
   CKCON|=0x08;                        // 計數器/定時器使用系統時鐘
                                       // Timer0 in 8-bit reload mode
   ET0=1;                              // Timer0 interrupt enabled
   TCON = 0x10;                        // Timer0 ON

   SFRPAGE = SFRPAGE_SAVE;             // Restore SFR page
}

void Timer0_ISR (void) interrupt 1  //定時器0中斷函數
{

  TH0 =0xEC;// 0X38;                         // Init Timer0 High register
  TL0 =0x78; //0x9F;                         //6M(2.5ms),12M(5ms)
  flag_close++;
  if(flag_close>4000)               
  {                                                                 
     KEY=0;
  }               
}


void main(void)
{

while(1);

}

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

使用道具 舉報

沙發
ID:743654 發表于 2021-7-31 15:05 | 只看該作者
sbit LED=P4^0;

void Timer0_ISR (void) interrupt 1  //定時器0中斷函數
{

  TH0 =0xEC;// 0X38;                         // Init Timer0 High register
  TL0 =0x78; //0x9F;                         //6M(2.5ms),12M(5ms)
  flag_close++
  if(flag_close>4000)               
  {                                                                 
     KEY=0;
     LED=~LED;
     flag_close=0;
  }               
}

LED正常閃爍,用示波器檢測P4.0口(KEY)電平,一直維持高電平,無法置零。
回復

使用道具 舉報

板凳
ID:161164 發表于 2021-7-31 15:09 來自觸屏版 | 只看該作者
flag_close++//分號呢? 編譯竟然可以過?
回復

使用道具 舉報

地板
ID:743654 發表于 2021-7-31 15:11 | 只看該作者
lkc8210 發表于 2021-7-31 15:09
flag_close++//分號呢? 編譯竟然可以過?

復制過來的時候漏了,程序可以編譯通過的。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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