求助问题
STC89C52和两个SR501实现计数加减
功能描述:使用STC89C52和两个SR501模块,通过两个外部中断实现计数加减数码管显示结果。
代码
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit Duan=P3^2; //定义数码管的段选使能端
sbit Wei =P3^3; //定义数码管的位选使能端
#define Digital_tube_Wei_Enable Wei=1; //开启控制数码管的位选使能端
#define Digital_tube_Wei_Disable Wei=0; //关闭控制数码管的位选使能端
#define Digital_tube_Duan_Enable Duan=1; //开启控制数码管的段选使能端
#define Digital_tube_Duan_Disable Duan=0; //关闭控制数码管的段选使能端
#define Digital_tube_Duan P0 //定义数码管数据端口
u8 code Dis_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //将BCD码转换成数码管扫描码的数组
u8 code Dis_Position[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; //定义数码管位选的数组
u8 count=0;
//省略延时函数
void IrInit()
{
IT0=1;//下降沿触发
IT1=1;
EX0=1;//打开中断0允许
EX1=1;
EA=1; //打开总中断
IP=0x05;
}
void main()
{
IrInit();
Digital_tube_Wei_Enable;
Digital_tube_Duan=0x00;
Digital_tube_Wei_Disable;
while(1)
{
Digital_tube_Duan_Enable;
Digital_tube_Duan=Dis_table[count]; //送入要显示的cCounter的数值
Digital_tube_Duan_Disable;
}
}
void int0() interrupt 2
{
EA=0;
delay_Ms(50);
--count;
EA=1;
delay_Ms(50);
}
void int1() interrupt 0
{
EA=0;
delay_Ms(50);
++count;
EA=1;
delay_Ms(50);
}
问题描述
设置了中断优先级 但是只能进中断0 无法实现两个模块分别 控制计数 一个加 一个减的情况
望各位大佬指出问题所在
小弟在此感谢各位大佬
SR501 高电平触发