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

標題: 單片機死活不進中斷 求分析原因 [打印本頁]

作者: 19980813    時間: 2020-1-21 10:37
標題: 單片機死活不進中斷 求分析原因
/*****************************************
*函數名:delay_us(u16 i)
**作用*:較高精度的延時,延時范圍1~65536us
**傳入參數:i,無符號十六位
**傳出參數:無
*****************************************/
void delay_us(u16 i)//定時范圍1~65536us
{

  AUXR &= 0x7F;  //定時器時鐘12T模式
TMOD &= 0xF0;  //設置定時器模式
TMOD |= 0x01;  //設置定時器模式
TL0 = (65536-i)&0x00ff;  //設置定時初值
TH0 = (65536-i)>>8;  //設置定時初值
TF0 = 0;  //清除TF0標志
a=1;
  EA = 1;
  ET0 = 1;                        //使能定時器0中斷
TR0 = 1;                        //定時器0開始計時
while(a);
}
/*****************************************
函數名: Timer0Callback()  interrupt 1
作用 :定時器T0的回調函數
傳入:無
傳出:無
*****************************************/
void Timer0Callback ()   interrupt 1 using 1
{
led=~led;
a=0;
}


作者: 19980813    時間: 2020-1-21 10:39
單片機型號為IAP15F2K61S2
作者: znz43a    時間: 2020-1-21 11:55
主程序main在哪里?
作者: wulin    時間: 2020-1-21 15:38
19980813 發表于 2020-1-21 10:39
單片機型號為IAP15F2K61S2

IAP15F2K61S2端口模式需要初始化,程序中連main入口都沒有這么運行?給你補充完整。
  1. #include <STC15F2K60S2.H>

  2. sbit led=P1^0;

  3. unsigned int a,b;

  4. void Timer0Init()                //10毫秒@11.0592MHz
  5. {
  6.         AUXR &= 0x7F;                //定時器時鐘12T模式
  7.         TMOD &= 0xF0;                //設置定時器模式
  8.         TL0 = 0x00;                        //設置定時初值
  9.         TH0 = 0xDC;                        //設置定時初值
  10.         TF0 = 0;                                //清除TF0標志
  11.         TR0 = 1;                                //定時器0開始計時
  12.         EA = 1;
  13.         ET0 = 1;  
  14. }

  15. void main()
  16. {
  17.         P0M0 = 0x00;
  18.         P0M1 = 0x00;
  19.         P1M0 = 0x00;
  20.         P1M1 = 0x00;
  21.         P2M0 = 0x00;
  22.         P2M1 = 0x00;
  23.         P3M0 = 0x00;
  24.         P3M1 = 0x00;
  25.         P4M0 = 0x00;
  26.         P4M1 = 0x00;
  27.         P5M0 = 0x00;
  28.         P5M1 = 0x00;
  29.         P6M0 = 0x00;
  30.         P6M1 = 0x00;
  31.         P7M0 = 0x00;
  32.         P7M1 = 0x00;
  33.         Timer0Init();
  34.         b=50;//延時時間=b*10ms
  35.         while(1);
  36. }

  37. void Timer0Callback() interrupt 1 using 1
  38. {
  39.         a++;
  40.         if(a>=b)
  41.         {
  42.                 a=0;
  43.                 led=~led;//閃爍頻率1Hz
  44.         }
  45. }
復制代碼


作者: lele5211314    時間: 2020-1-21 16:59
你在哪里調用的delay_us函數
作者: lele5211314    時間: 2020-1-21 17:00
你這個中斷函數寫的有問題,你這個只能進一次中斷,沒有在終端里面對定時器賦初值,具體可以咨詢我1014461948@1qq.com
作者: mffhxa    時間: 2020-1-21 17:42
延時函數里a=1;while(a);執行到這里就死在這了。
作者: 新人菜鳥    時間: 2020-1-21 20:24
建議可以直接在STC那個燒寫軟件中,直接復制中斷或者定時器程序,我有有時候就是寄存器稍微配置弄錯了,或者明明想開中斷0,但是敲的是中斷1的,或者對照著數據手冊,好好看一看,應該是那個寄存器弄錯了,我有時候調了一天,就是有的位應該寫1但是給的0
作者: 19980813    時間: 2020-1-21 20:59
有主程序   主程序調用初始化函數
作者: 19980813    時間: 2020-1-21 21:00
znz43a 發表于 2020-1-21 11:55
主程序main在哪里?

主程序在另一個頁面里   主程序調用初始化函數
作者: 19980813    時間: 2020-1-21 21:04
有沒有可能是while里的標志識別不了
作者: 19980813    時間: 2020-1-21 23:08
調試發現在while 里出不來但是為什么呢
難道while的優先級還沒中斷高?
但是不應該呀

作者: 19980813    時間: 2020-1-21 23:56
mffhxa 發表于 2020-1-21 17:42
延時函數里a=1;while(a);執行到這里就死在這了。

調試發現就是死在這里了,但是為什么
作者: LanSeXinQing    時間: 2020-1-22 14:27
你開總中斷了么?
作者: lwh999995    時間: 2020-1-22 15:53
1. 16位要在中斷里面重賦值
2. 你這函數弄不了
3. IO模式也沒設置
4. 重寫吧
作者: csmyldl    時間: 2020-1-22 18:20
請別人看程序,有些需要完整的程序,如中斷初始化設置,中斷程序的寫法,上面程序好象在delay_us中設置了定時計數器,主程序是否調用它,是否有另外的初始化程序,不得而知
作者: 19980813    時間: 2020-1-23 14:12
找到原因了,分頁里有個相同的回調函數被調用了,編譯器沒提示




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