|
以下程序的目的是遙控門鎖程序,就是我按下按鍵觸發(fā)下降沿中斷后 執(zhí)行電動機(jī)“正轉(zhuǎn)1秒”,“延時(shí)1秒”,“反轉(zhuǎn)1秒”程序如下:
可實(shí)驗(yàn)發(fā)現(xiàn),每次中斷都執(zhí)行兩個(gè)回合以上動作,甚至有時(shí)3個(gè)回合。
STC15F408as 型單片機(jī)。
#include "STC15W4K.H" // 包含 "STC15W4K.H"寄存器定義頭文件
sbit P1_4=P1^4; //指示燈
sbit djoff = P1^0; //電機(jī)關(guān)信號
sbit djon = P1^1; //電機(jī)開信號
void delay1S(void) // 22.1184
{
unsigned char i,j,k;
for(i=85;i>0;i--) //注意后面沒分號
for(j=40;j>0;j--) //注意后面沒分號
for(k=255;k>0;k--); //注意后面有分號
}
void main()
{
// INT0 = 1;
IT0=1; // 設(shè)置為下降沿觸發(fā)
EX0=1; // 開外部中斷0
EA=1; // 開總中斷
P1_4 = 0;
while(1)
{
if(P1_4 == 1)
{
djoff = 0; //電機(jī)正轉(zhuǎn)
delay1S(); //延時(shí)一秒
djoff = 1; //電機(jī)正轉(zhuǎn)停
delay1S(); //延時(shí)一秒
djon = 0; //電機(jī)反轉(zhuǎn)
delay1S(); //延時(shí)一秒
djon = 1; //電機(jī)反轉(zhuǎn)停
delay1S();
delay1S();
delay1S();
P1_4 = 0; //指示燈
EA=1; //開總中斷
}
}
}
void EXT0(void) interrupt 0
{
EA=0; //關(guān)總中斷
P1_4 = 1; //進(jìn)入中斷指示燈
}
|
|