📄 interrupt.c
字号:
#include "config.h"
extern unsigned char dp2rass[5];
extern unsigned char rass2dp;
extern unsigned int test_freq;
extern unsigned char rxed_flag;
extern unsigned int seed;
extern unsigned char timer1;
extern unsigned int TCNT1_H;
extern unsigned int TCNT1_L;
extern unsigned int D15_0;
//#pragma interrupt_handler timer1_ovf_isr:7
void timer1_ovf_isr(void)
{
//在这里改变频率
timer1=1;
TCNT1H = TCNT1_H; //reload counter high value
TCNT1L = TCNT1_L; //reload counter low value
ml2035(D15_0,1);
SEI();
}
//#pragma interrupt_handler uart0_rx_isr:10
void uart0_rx_isr(void)
{
//uart has received a character in UDR
static int rxnum=0;
unsigned char mid;
mid=UDR;
if(!(mid&0x01))//判断是命令还是数据请求,是请求,则
{
rxed_flag=1;
dp2rass[0]=mid;
return;
}
dp2rass[rxnum++]=mid;
PORTC ^=1<<pc0;
if(rxnum>4)
{
rxnum=0;
PORTC &=~(1<<pc0);
rxed_flag=1;
}
SEI();
}
//#pragma interrupt_handler uart0_tx_isr:12
void uart0_tx_isr(void)
{
//character has been transmitted
//use pc0 to show transmitter over
PORTC |=1<<pc1;
delay_us(100);
PORTC &=~(1<<pc1);
SEI();
}
//#pragma interrupt_handler ana_comp_isr:13
void ana_comp_isr(void)
{
//analog comparator compare event
rass2dp=0;
PORTC ^=1<<pc2;
if(ana_freq)
{
//unsigned int test_freq;
unsigned int ana_com[2];
unsigned int dert_time;
static unsigned char ana_num=0;
unsigned int dert_freq;
ana_com[ana_num++]=(TCNT1H<<8)+TCNT1L;
if(ana_num>1)
{
ana_num=0;
if(ana_com[0]<ana_com[1])
dert_time=ana_com[1]-ana_com[0];
else
dert_time=ana_com[1]+0xffff-ana_com[0];
test_freq =7200/(dert_time+1);
dert_freq=(test_freq>seed)?(test_freq-seed):(seed-test_freq);
if(dert_freq<50)
rass2dp=0;
else
rass2dp=1;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -