📄 interrupt.c
字号:
//*************************************//
// //
// 在该页添加所需要的中断任务 //
// //
//*************************************//
#include "define.h"
/*********************************中断服务函数************************************/
/*外部中断0*/
void Input_Zero(void) interrupt 0 using 1
{
// TODO: 在此添加程序代码
Int_flag = 1;
}
/*TO定时中断器函数*/
void TIMER_Zero(void) interrupt 1 using 1
{
static uchar aa = 0;
uchar test;
TH0 = 0x4C;
TL0 = 0x00;
/*error*/
//TH0 = (65536 - (unsigned int)(SYSTEMTIMERZERO / (float)(12 / SYSTEMFOSC))) / 256; //给定时器赋初值
//TL0 = (65536 - (unsigned int)(SYSTEMTIMERZERO / (float)(12 / SYSTEMFOSC))) % 256;
/*error end*/
// TODO: 在此添加程序代码
aa++;
if(aa == 20)
{
aa = 0;
Time_flag = 1;
miao++;
TxBuf[0] = miao;
TxBuf[1] = miao;
P2 ^= BIT0;
}
}
/*外部中断1*/
void Input_One(void) interrupt 2 using 1
{
// TODO: 在此添加程序代码
}
/*T1定时中断器函数*/
void TIMER_One(void) interrupt 3 using 1
{
/*error*/
//TH1 = (65536 - (unsigned int)(SYSTEMTIMERZERO / (float)(12 / SYSTEMFOSC))) / 256; //给定时器赋初值
//TL1 = (65536 - (unsigned int)(SYSTEMTIMERZERO / (float)(12 / SYSTEMFOSC))) % 256;
/*error end*/
// TODO: 在此添加程序代码
}
/*串口中断函数*/
void UART_Service(void) interrupt 4 using 1
{
unsigned char R_Data;
if(RI)
{
RI=0;
R_Data=SBUF;
Restart(R_Data);/*实时监测自定义下载命令*/
/*下面为实际的串口接收中断处理*/
// TODO: 在此添加程序代码
}
else
{
//TI=0;
/*下面为实际的串口发送中断处理*/
// TODO: 在此添加程序代码
}
}
void Restart(unsigned char R_Data)
{
static unsigned char di = 0;
if(R_Data == download[di])
{
di++;
if(download[di] == '\0')
{
EX0 = OFF; //关闭外部中断0
ET0 = OFF; //关闭T0定时器中断
TR0 = OFF; //关闭T0定时器
EX1 = OFF; //关闭外部中断1
ET1 = OFF; //关闭T1定时器中断
TR1 = OFF; //关闭T1定时器
ES = OFF; //关闭串口中断
TR1 = OFF; //关闭T1定时器
EA = OFF; //关闭总中断
/*error*/
//TH0 = (65536 - (unsigned int)(SYSTEMTIMERZERO / (float)(12 / SYSTEMFOSC))) / 256; //给定时器赋初值
//TL0 = (65536 - (unsigned int)(SYSTEMTIMERZERO / (float)(12 / SYSTEMFOSC))) % 256;
/*error end*/
/*此处延时1ms左右再重启系统,姑且就用11.0592MHz的晶振作为系统时钟来计算*/
TH0 = (65536 - SYSTEMRESTART) / 256;
TL0 = (65536 - SYSTEMRESTART) % 256;
TR0 = ON; //启动T0定时器
//WDT_CONTR = 0x3f; //最长看门狗定时,时间至少为1.25秒
//while(!TF0); //等待定时器溢出
//IAP_CONTR = 0x60; /*定时时间到软复位到ISP程序区*/
}
}
else
di=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -