小白求助,中斷程序跳不出來,不能往下執(zhí)行,大神幫忙看看怎么改 #include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit IN1=P3^1;//接IN1 控制正轉(zhuǎn) sbit IN2=P3^2;//接IN2 控制反轉(zhuǎn) sbit IN3=P3^3; sbit IN4=P3^4; sbit ENA=P3^5; //使能 sbit ENB=P3^6; uchar time; void delay(uint); void head(); void stop(); void configpwm(); void main() { configpwm(); /*執(zhí)行完這兩個語句以后, head(); 就不往下執(zhí)行stop這條語句了,是哪個地方不對,大神幫 delay(300); 忙看看怎么改*/ stop(); } void configpwm() { TMOD=0x01;//定時器0工作方式1 TH0=0xff;//(65536-200)/256;//賦初值定時 TL0=0xf7;//(65536-200)%256;//0.2ms EA=1;//開總中斷 ET0=1;//開定時器0中斷 TR0=1;//啟動定時器0 } void timer0() interrupt 1 { TR0=0;//賦初值時,關閉定時器 TH0=0xff;//(65536-200)/256;//賦初值定時 + TL0=0xf7;//(65536-200)%256;//0.2ms TR0=1;//打開定時器 time++; if(time>=100) time=0;//50hz if(time<=80) { ENA=0; //占空比20% ENB=0; } else { ENA=1; ENB=1; } } void head(uint i) { IN1=1; //正轉(zhuǎn) 前 IN2=0; IN3=0; IN4=1; } void stop() { IN1=0; IN2=0; IN3=0; IN4=0; } void delay(uint z) { uint x,y; for(x=1000;x>0;x--) { for(y=z;y>0;y--); } } |
wulin 發(fā)表于 2018-1-25 18:16
你的中斷周期太短,大約9us,中斷服務內(nèi)容又占用較多時間,留給CPU處理main函數(shù)的時間微乎其微。所以delay ...
luoluoluo136 發(fā)表于 2018-1-25 19:25
你這個程序也不能實現(xiàn)。。。應該在stop后面再延時。詳細看我發(fā)的。
歡迎光臨 (http://www.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |