📄 main.c
字号:
#include "config.h"
unsigned char dp2rass[5];
unsigned int test_freq;
unsigned char rass2dp=1;
unsigned int seed;
unsigned char rxed_flag=0;//接收完数据为1
unsigned char dp2rass[5];
unsigned char work_state;
unsigned char work_mode;
unsigned char work_grade;
unsigned char Ns;//频率点的个数
unsigned int Fh,Fl;
unsigned char TCNT1_L;
unsigned char TCNT1_H;
unsigned int D15_0;//为2315控制字
unsigned char timer1;
void main(void)
{
//unsigned int rand;
//unsigned int first,second;
//unsigned char x,y;
//unsigned int num,mod1=0;
unsigned int j=1;
CLI(); //stop errant interrupts until set up
port_init();
timer1_init();
uart0_init();
MCUCR = 0x00;
EMCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x80;
SEI(); //re-enable interrupts
//all peripherals are now initialized
do
{
if(rxed_flag==1) //如果刚刚接收完dp的数据,则
{
if(!(dp2rass[0]&0x01))//判断是命令还是数据请求
UDR=rass2dp; //为0时是dp请求rass的状态信息,
else //为1时是dp发送给rass的命令
{
work_state=(dp2rass[0]&0x02)>>1;
if(work_state==0) //如果是关闭工作命令,则
{
ACSR = ACSR & 0xF7; //关闭时间、比较中断
TCCR1B = 0x00;
ml2035(0,1); //关闭2305,1666
ds1666(128,0);
}
else //如果是开始工作指令的话
{
TCCR1B = 0x05; //start Timer1,comparator
comparator_init();
data_process();
seed=TCNT1L;
ds1666(128,0);
switch(work_grade)
{
case 0: ds1666(128,1);break;
case 1: ds1666(119,1);break;
case 2: ds1666(110,1);break;
case 3:
defaulf:ds1666(96,1);
}
}
}
rxed_flag=0;
}
if(timer1==1) //计数溢出中断后改变频率
{
if(work_mode==0) //random mode
D15_0=rand(seed);
else
{
D15_0=line(j++);
if(j>Ns)
j=1;
}
timer1=0;
}
}
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -