大家好,我想用外部中断1控制外部中断0,当中断1发生后,打开中断0,中断0接口一直有方波输入的,打开中断0后接收到方波的下降沿时,再打开定时器1,同时关闭外部中断0.定时器1定时20mS输出,然后关闭定时器。可是用
proteus仿真出来的结果不对。附上程序,请高手指教,谢谢。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit ready = P3^3; // 充电到
sbit fire = P1^7; // 输出点火
void delay(uint
time);
void exint0(void);
void tim0(void);
void main(void)
{
EA = 1; // 开总中断
IT0 = 1; // INT0下降沿触发
IT1 = 1; // INT1下降沿触发
EX0 = 0; // 关INT0中断
EX1 = 1; // 开INT1中断
TR1 = 0; // 关定时器1
ET1 = 1; // 开定时器1中断
TMOD = 0x10; // 定时器1工作于方式1
TH1 = 0xB8; // 定时20mS
TL1 = 0x00;
ready = 1;
fire = 1;
while(1)
{
delay(200);
}
}
void exint1(void)interrupt 2
{
EX0 = 1;
}
void exint0(void)interrupt 0
{
TR1 = 1; // 打开定时器1
EX0 = 0; // 关INT0中断
}
void tim1(void)interrupt 3
{
TH1 = 0xB8;
TL1 = 0x00;
TR1 = 0; // 关闭定时器
fire = 0; // 点火输出
delay(200);
fire = 1;
}
void delay(uint time)
{
uint i;
uchar j;
for(i=0;i<time;i++)
{
for(j=0;j<200;j++);
for(j=0;j<102;j++);
}
}
没人遇到类似情况吗
我是读IO口前先置高电平后读,我的外部是用电阻上拉到VCC,按键按下拉地,应该没有问题。
你的外部中断0和1都是用你说的IO口加上拉电阻控制的吧
一周热门 更多>