怎么样利用51单片机实现上升沿中断

来源:百度知道 编辑:UC知道 时间:2024/07/05 14:42:18
我现在有一个含有上升沿的信号,希望接入51单片机的外部中断口INT0,从而在信号到达上升沿时单片机产生中断,然后转去执行的中断程序指令,请问用C语言要怎么写呢?
这个是我用c写的代码!可是每次开机都是先执行中断程序的内容,外部输入上升沿的时候才运行主函数的内容,请问这是为什么呢?!
#include<reg51.h>
#define uchar unsigned char
sbit P3_4=P3^4;
void _light()
{
P3_4=0;
}
void _int() interrupt 0
{
_light();
}
void main(void)
{
while(1)
{
P3_4=1;
IE=0x81;
}
}

TCON的值没有设定

TCON默认0x00,所以IT0的值为低,表示中断0为低电平有效
当IT0为高,表示下降沿有效

如果想要实现上升沿有效可以加反向器

外部中断通过反响器,然后接单片机外部中断脚,然后在程序中设置为边沿触发方式

ORG 0000H
SJMP START
ORG 0003H
SJMP INTT0
ORG 0030H
START:
MOV IE,81H
;
;
;
;
;
INTT0:
中断程序

RETI

很简单,加个反相器.