新手,老师们!利用外部脉冲,能在外部中断中
新手,利用外部脉冲,能在外部中断中实现计数吗?如果能,请教如何实现
程序代码://盛杰瑞办公设备实验室
#include <AT89X52.h> //调用51单片机的头文件
void INIT0(void) interrupt 0
{
P3_2 =!P3_2;
P3_0=1; //接到p3.4脚
}
void INIT1(void)interrupt 3
{
P3_2=!P3_2;
}
//---------------------------------------
void main(void) //主函数,单片机开机后就是从这个函数开始运行
{
//***定时器Timer0初始化***
TMOD=0x22;
//设置定时器0为方式1
TL0=256-20 ; //设置定时器0初值低8位
TH0=256-20 ; //设置定时器0初值高8位
TR0=1; //启动定时器0
ET0=1; //Timer0中断允许
TL1=256-5 ; //设置定时器0初值低8位
TH1=256-5 ; //设置定时器0初值高8位
TR1=1; //启动定时器0
ET1=1;
//**********************
//***外部中断INT0初始化***
IT0=1; //下降沿触发方式
EX0=1; //外部INT0中断允许
//**********************
//***开全局中断设置****
//外部中断INT0设置了中断允许,此处要开全局中断
EA=1; //开全局中断
//*********************
while(1) //死循环,单片机初始化后,将一直运行这个死循环
{
}
}

程序代码:#include <AT89X52.h>
unsigned char k;
void INIT0(void) interrupt 0
{
//***此处用户自行添加外部INT0中断处理程序***
P3_2=1; //p3.2输出高电平。用来点亮灯
for(k=0;k<1000;k++); //亮灯时长 ,调整k的值
P3_2=0; //
for(k=0;k<10000;k++); //灭灯时长
//******************************************
}
void main(void)
{
IT0=1; //下降沿触发方式
EX0=1;
//**********************
EA=1;
while(1)
{
}
}[此贴子已经被作者于2017-2-16 17:00编辑过]
