填坑—c語言寫微控制器中斷程式無法返回到中斷點—解決辦法
阿新 • • 發佈:2021-01-13
在寫定時器中斷時,想每隔20ms就中斷一次,結果怎麼都返回不了
原程式
#include<reg51.h> unsigned char i; //定時器0初始化 void IT0_INIT() { TMOD=0x01; TH0=(65536-2000)/256; TL0=(65536-2000)%256; EA =1;//先開總中斷 ET0=1;//後開定時器中斷 TR0=1; } //中斷不會返回 void main(){ IT0_INIT(); while(1) P0=0x0ff;//數碼管全亮 } void IT0PROC() interrupt 1 { i++; if(i=10)//20ms到 P0=0x00; else { TH0=(65536-2000)/256; TL0=(65536-2000)%256; } }
修改後程式
#include<reg51.h> unsigned char i; //定時器0初始化 void IT0_INIT() { TMOD=0x01; TH0=(65536-2000)/256; TL0=(65536-2000)%256; ET0=1;//先開定時器中斷 EA =1;//後開總中斷 TR0=1; } //中斷會返回 void main(){ IT0_INIT(); while(1) P0=0x0ff;//數碼管全亮 } void IT0PROC() interrupt 1 { i++; if(i=10)//20ms到 P0=0x00; else { TH0=(65536-2000)/256; TL0=(65536-2000)%256; } }