- 打卡等级:常住居民III
- 打卡总天数:120
- 最近打卡:2025-06-17 08:00:06
金牌会员
- 积分
- 1237
|
发表于 2024-10-6 17:25:20
|
显示全部楼层
#define num 46 //数组
int xdata Hdate [num];
int xdata Ldate [num];
/*********************************************************************************************
函数名:外部中断INT初始化函数
调 用:INT_init();
参 数:无
返回值:无
结 果:启动外部中断INT1、INT0中断,设置中断方式
备 注:
/**********************************************************************************************/
//void INT_init (void)
//{
//IT1 = 0; //设置INT1的中断类型为上升沿和下降沿,上升沿和下降沿均可唤醒
//IT1 = 1; //设置INT1的中断类型为仅下降沿,下降沿唤醒
// EX1 = 1; //使能INT1中断
//}
//========================================================================
void INT_0 (void) interrupt 0 using 2 //切换寄存器组到2
{
u8 i;
EX0 = 0; //允许外部中断0中断
//用户函数内容
while(Rc==1)//等待信号出现
{
;
}
for(i=0; i<num; i++)
{
//获取低电平宽度
TCC=0;
TR0 = 1; //T/C0启动开关
while(Rc==0)
{
;
}
TR0=0;
Ldate[i]=TCC;
//获取高电平宽度
TCC=0;
TR0 = 1; //T/C0启动开关
while(Rc==1)
{
;
}
TR0=0;
Hdate[i]=TCC;
}
LED_zs=1;
Delay1(100);
LED_zs=0;
Delay1(100);
LED_zs=1;
Delay1(200);
LED_zs1=0;
Epprom_flag=1;
IE0=0;
Key_Long_bit=0; //长按计数器清零
//lOW_bit=1; //掉电
}
//==================================================================
void fs(void)
{
int fs;
for(fs=0; fs<num; fs++)
{
TCC=0;
TR0 = 1; //T/C0启动开关
while(TCC<Ldate[fs])
{
OP_bit=1;
LED_zs1=!LED_zs1;
}
TR0=0;
TCC=0;
TR0 = 1; //T/C0启动开关
while(TCC<Hdate[fs])
{
red=0;
OP_bit=0;
}
TR0=0;
LED_zs1=0;
}
}
//以前做的学习型遥控器,很好用。 |
|