📄 pt6911chmodelok.c
字号:
if(Switch_in==1)
m2++;
if(Switch_in==0)
m1=10;
if(m2==10)
{
m1=10;
m0=100;
MD_Key_Flag=1;
}
}
if(m0==90)
m0=0;
}*/
break;
}
case 5: //SQ
{
//Key_Work_Flag=0;
LED_Flash();
//Sq_Key_Flag=1;
break;
}
case 6: //MD+STO
{
//Key_Work_Flag=0;
//MD_STO_Key_Flag=1;
LED_Flash();
break;
}
case 7: //MD+STO+SQ
{
//Key_Work_Flag=0;
LED_Flash();
MD_STO_SQ_Key_Flag=1;
Delete_All_Save();
break;
}
}
// return 0;
}
/**************************************************************************************
此程序是显示模式共13种模式,如果有按键MD时候就进入,否则一直循环
***************************************************************************************/
void Save_Fre_data(void)
{
for(j=0;j<=7;j++)
{
//Display_Frequency_Data[i]=Main_Display_Fre[i]; //第一行显示频率
//LCD_Display(Main_Display_CH,2); //第二行显示通道
Display_Ch_Model_Temp_Fre[j]=Main_Display_Fre[j];
Display_Ch_Model_Temp_CH[3]=0x20;
Display_Ch_Model_Temp_CH[j]=Main_Display_CH[j];
}
}
void Display_Ch_Model(void)
//uint16_t sudu_moshi(void)
{
uint8_t n0=0;
if(Ch_model_sto_enable==0)
{
if(Caiji_shuju_flag==1)
{
Read_Eprom_Address(Linshi_eprom_times*32);
//Display_Ch_Model_Temp_CH[4]=0x43;
//Display_Ch_Model_Temp_CH[5]=0x48;
LCD_Display(Display_Ch_Model_Temp_Fre,1);
LCD_Display(Display_Ch_Model_Temp_CH,2);
Linshi_eprom_times=Linshi_eprom_times+1;
if(Linshi_eprom_times>CH_temp_Count_Time)
Linshi_eprom_times=0;
}
if(Caiji_shuju_flag==2)
{
Read_Eprom_Address((Linshi_eprom_times-1)*32);
//Display_Ch_Model_Temp_CH[4]=0x43;
//Display_Ch_Model_Temp_CH[5]=0x48;
LCD_Display(Display_Ch_Model_Temp_Fre,1);
LCD_Display(Display_Ch_Model_Temp_CH,2);
Linshi_eprom_times=Linshi_eprom_times-1;
if(Linshi_eprom_times==255)
Linshi_eprom_times=CH_temp_Count_Time;
}
if(Caiji_shuju_flag==0)
{
Read_Eprom_Address(Linshi_eprom_times*32);
//Display_Ch_Model_Temp_CH[4]=0x43;
//Display_Ch_Model_Temp_CH[5]=0x48;
LCD_Display(Display_Ch_Model_Temp_Fre,1);
LCD_Display(Display_Ch_Model_Temp_CH,2);
}
Caiji_shuju_flag=0;
}
if(Ch_model_sto_enable==1) //有STO按键按下
{
Linshi_eprom_times=0; //清上面保存临时次数地址
for(Delay_300ms_flag1=1;Delay_300ms_flag1<=CH_Flash_Times;Delay_300ms_flag1++)
{
if(Delay_300ms==1)
{
Display_Ch_Model_Temp_CH[4]=0x43;
Display_Ch_Model_Temp_CH[5]=0x48;
LCD_Display(Display_Ch_Model_Temp_Fre,1);
LCD_Display(Display_Ch_Model_Temp_CH,2);
}
}
for(Delay_300ms_flag2=1;Delay_300ms_flag2<=CH_Flash_Times;Delay_300ms_flag2++)
{
if(Delay_300ms==1)
{
Display_Ch_Model_Temp_CH[4]=0x20; //CH Flash.F No Flash.
Display_Ch_Model_Temp_CH[5]=0x20;
LCD_Display(Display_Ch_Model_Temp_Fre,1);
LCD_Display(Display_Ch_Model_Temp_CH,2);
}
}
if(Caiji_shuju_flag==1)
{
Display_Channel_jisuan();
for(n0=0;n0<=7;n0++)
{
Display_Ch_Model_Temp_CH[n0]=Display_Channel_Data[n0];
}
Bijiao_Daxiao();
if(Is_F_Flag==0)
{
Display_Ch_Model_Temp_CH[3]=0x46;
LCD_Display(Display_Ch_Model_Temp_CH,2);
}
else
LCD_Display(Display_Ch_Model_Temp_CH,2);
Channel_Count++;
if(Channel_Count>99)
Channel_Count=0;
}
if(Caiji_shuju_flag==2)
{
Display_Channel_jisuan();
for(n0=0;n0<=7;n0++)
{
Display_Ch_Model_Temp_CH[n0]=Display_Channel_Data[n0];
}
Bijiao_Daxiao();
if(Is_F_Flag==0)
{
Display_Ch_Model_Temp_CH[3]=0x46;
LCD_Display(Display_Ch_Model_Temp_CH,2);
}
else
LCD_Display(Display_Ch_Model_Temp_CH,2);
Channel_Count--;
if(Channel_Count==0)
Channel_Count=99;
}
if(Caiji_shuju_flag==0) //没有采集到数据就保持
{
//Read_Eprom_Address(Linshi_eprom_times*32);
LCD_Display(Display_Ch_Model_Temp_Fre,1);
LCD_Display(Display_Ch_Model_Temp_CH,2);
}
Caiji_shuju_flag=0; //采集数据标志清0
Key=Key_Scan(); //扫描按键如果有STO就保存此刻的显示数据
if(Key==3)
{
Display_Ch_Model_Temp_CH[3]=0x20;
Display_Ch_Model_Temp_CH[4]=0x43;
Display_Ch_Model_Temp_CH[5]=0x48; //这样保证CH保存后可以看到否则有可能不显示CH因为此时CH可能闪动时候不出现
LCD_Display(Display_Ch_Model_Temp_CH,2);
Save_to_EEprom();
Read_Eprom_Address(0);
DelayMs(600);
Channel_Count=0;
Display_Ch_Model_Flag=1;
Display_Dir_Model_Flag=0;
Display_Fre_Model_Flag=0;
Ch_model_sto_enable=0; //在通道模式下有按键按下标志清0
LCD_Write(0x01,0);
//break;
}
if(Key==4)
{
//LCD_Display(Display_Ch_Model_Temp_Fre,1);
//LCD_Display(Display_Ch_Model_Temp_CH,2);
Display_Ch_Model_Flag=1;
Display_Dir_Model_Flag=0;
Display_Fre_Model_Flag=0;
Ch_model_sto_enable=0; //在通道模式下有按键按下
//break;
}
}
}
void Display_Dir_Model(void)
{
if(Freq_Count==0)
{
//Main_Display_Fre[3]=0x20;
LCD_Display(Main_Display_Fre,1);
LCD_Display(Display_Channel_Data2,2);
//Fre_times();
}
//LCD_Display(Display_Frequency_Data,1);
////////////////////////////////////////////////
//Display_Fre();
if(Freq_Count>0)
{
First_enter_flag=0;
LCD_Display(Display_Frequency_Data,1);
LCD_Display(Display_Channel_Data2,2);
}
//第二行显示通道
for(i=0;i<=7;i++)
{
//Display_Dir_Model_Temp_Fre[i]=Display_Frequency_Data[i];
Display_Dir_Model_Temp_Fre[i]=Display_Frequency_Data[i];
Dir_Frequency_Temp[i]=Display_Frequency_Data[i];
//Display_Dir_Model_Temp_CH[i]=Display_Channel_Data1[i];
}
}
void Display_Fre_Model(void)
{
//if(Fre_x==0) //第一次进入频率模式显示118.000
//{
LCD_Display(Dir_Frequency_Temp,1);
LCD_Display(Display_Dir_Model_Temp_Fre,2);
//Display_Fre();
for(i=0;i<=7;i++)
{
Display_Dir_Model_Temp_Fre[i]=Display_Frequency_Data[i];
Main_Display_Fre[i]=Display_Frequency_Data[i];
}
}
void Read_Eprom_Times(void)
{
for(i=32;i<=3168;i+=32)
{
for(j=0;j<=15;j++)
{
Temp_Fre_Channel_Place[j]=eeprom_read_word(i+j);
if(j==2)
j1=Temp_Fre_Channel_Place[2];
//记录通道显示次数
//else
}
if(j1!=0xFF)
{
CH_temp_Count_Time=i/32+1;
}
else
{
CH_temp_Count_Time=CH_temp_Count_Time-1;
break;
}
}
}
/**************************************************************************************
下面的是中断函数
***************************************************************************************/
SIGNAL(SIG_OVERFLOW1)
{
TCNT1H = DELAY100H;
TCNT1L = DELAY100L; //50ms
Task_No = 0;
Second_Count++;
Delay_300ms=1;
Fre_No_enbale=1;
Read_CH_all_Time=1;
Time_jiesheng_flag=1;
Caiji_flag=1;
//Display_Channel0()
//if(Second_Count%2==0) //Init the Lcd
//{
Task_Select=1;
Task_No = 1;
Task_In();
Second_Count=0;
// //}
/*if(Second_Count%2 ==0) //Init the Lcd
{
Task_Select=2;
Task_No = 1;
Task_In();
}*/
//Second_Count=0;
/*if(Second_Count<=120)
{
if(Second_Count<120)
{
Switch_in=PINF;
Switch_in=Switch_in&0x01;
if(Switch_in!=0)
Second_Count=0;
}
if(Second_Count=120)
{
Fre_Flag=1;
Second_Count=0;
}
}*/
/* if(Second_Count >= SECONDS) //the timer to count 24 hour
{
Second_Timer++;
if(Second_Timer%20==0)
{
Second_Timer=1;
}
if(Second_Timer == 60 )
{
Minute_Timer++;
Second_Over = 1;
if( Minute_Timer == 60 )
{
Hour_Timer++;
Minute_Over = 1;
if( Hour_Timer == 24 )
{
Hour_Over = 1;
}
}
}
}*/
//select the Task number
//select the LCD task number;
//if(Second_Count % 2 == 0)
// Scan_Flag=1;
//if(Second_Count%2!=0)
//Scan_Flag=0;
/* if(Second_Count %20==0)
{
//Key=Key_Scan();
if(Key==0)
{
Second_Timer++;
}
//Second_Count=0;
Time_1Minute_Flag=0;
}
if(Second_Timer==60)
{
Scan_Flag=0;
Time_1Minute_Flag=1;
//Second_Count=0;
//Second_Timer=0;
PORTE&=!_BV(PE3);
DelayMs(50);
PORTE|=_BV(PE3);
DelayMs(50);
PORTE&=!_BV(PE3);
DelayMs(50);
PORTE|=_BV(PE3);
DelayMs(50);
}
//如果1分钟没有按键则返回初始模式20X50=1秒
if(Second_ms_Count<=20)
{
if(Second_ms_Count<20)
{
//Key_Scan();
//if((Key==0)||((Key_Work_Flag==1)&&(Key!=0x17))) //如果没有按键或者有按键不等于MD
{
Second_ms_Count++;
}
//else
//{
// Setup_Flag=1;
//}
}
if(Second_ms_Count==20)
{
Second_ms_Count=0;
Second_Timer++;
}
}
if(Second_Timer==60)
{
Time_1Minute_Flag=1;
PORTE&=!_BV(PE3);
DelayMs(50);
PORTE|=_BV(PE3);
DelayMs(50);
PORTE&=!_BV(PE3);
DelayMs(50);
PORTE|=_BV(PE3);
DelayMs(50);
Second_Timer=0;
Second_ms_Count=0;
}*/
//Task_Lock = 1;
//Task lock flag locked after select the Task number to ensure the Task execute.
//clean the time over flags and the timer
}
int main(void)
{
Second_ms_Count=0;
Second_Count =0;
//Second_Timer =0;
//Minute_Timer =0;
//Hour_Timer = 0;
//Second_Over = 0;
//Minute_Over = 0;
//Hour_Over = 0;
Task_Front = 0;
Task_Rear = 0;
Task_No = 0;
Task_Begin = 0;
//LCD_Shift_Timer = 0;
//LCD_State = 1;
//LCD_Start_Flag = 0;
Task_Lock = 0; //0----enable write, 1----enable;
Turn_Display_Flag=1;
cli();
Port_Init();
LCD_Init();
//ADC_Init();
//Display_Frequency_Data[0] = 0x3e;
//Display_Channel_Data[0] = 0x3e;Temp_Eprom_Place
//Display_Zibianke();
/********************************************************************
write eeprom
*********************************************************************/
/*********************************************************************/
// USART_Init(BAUDRATEH,BAUDRATEL);
Timerone_Init();
Key=Key_Scan();
if(Key==6) //按住STO+MD进入设置状态。
//if(Key==1)
{
for(Count=0;Count<=100;Count++)
{
LCD_Write(0x01,0);
LCD_Display(Display_Blank,2);
LCD_Display(Display_FSG90,1); //时间长了按键有滞后好像按键没有反映。
// DelayMs(300);
LCD_Display(Display_SETUP,1);
Key=Key_Scan();
// DelayMs(300);
if(Key==4)
{
for(j1=0;j1<=100;j1++)
{
DelayMs(10);
Key=Key_Scan();
DelayMs(10);
if(Key==0)
{
m=1;
//IN_Setup_State();
j1=100;
}
if(j1==90)
j1=0;
}
////m1
//IN_Setup1_State();
//IN_Setup_State();
}
if(Key==2)
break;
if(Count==90)
Count=0;
}
//Key=0;
}
Read_Eprom_Times();
sei();
/*********************************************************************
初始化显示频率通道并且可以保存
************************************************************************/
Display_Eeprom0_address(0);
////////////////////////////////////////////////////////////////////////
while(1)
{
// USART_Transmit(Reset_Timer);
Task_Select = Task_Out();
Read_Eprom_Times();
PORTE&=!_BV(PE3);
switch(Task_Select)
{
case 1:
{
// DelayMs(10);
Caiji_shuju();
if(Display_Ch_Model_Flag==1) //通道模式
{
Display_Ch_Model();
}
if(Display_Dir_Model_Flag==1) //直接模式
{
Display_Dir_Model();
}
if(Display_Fre_Model_Flag==1) //双频率
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -