?? rf_main.c
字號:
/*
**********************************************************************
* RF RECEIVE&SEND SOUND *
* THE SOFT FUNCTIONS *
* FOR RF GUARD *
* *
* File : main.c *
* By : CAESAR *
* Version : V1.0 *
* Date : 07.01.20 *
* Applied : SUNPLUSE SMP65 2204 *
* Clock : Crystal 16MHZ *
* Wdt : Enable *
**********************************************************************
*/
#include <intr6502.h>
#include "bodydef.h"
#include "typedef.h"
#include "RF.h"
#pragma language=extended
unsigned char a,b,c;
unsigned char temp_pa;
int main(void){
b='B';
a=SERIAL_NO1;
a=SERIAL_NO2;
a=SERIAL_NO3;
a=SERIAL_NO4;
c=a;
disable_interrupt();
P_SYS_Ctrl=255;
P_SYS_Ctrl=255;
systeam_initialize();
warn_commande_read();
while(1){
P_WDT_Clr=85;
if(commande_receive()){
commande_verify();
}
nop_instruction();
sensitive_adjust();
// sound_processor();
a=23;
b=15;
c=a*0.135;
if(c==1){
a=34;
}
}
}
//**************************************************************
//***********************systeam initialize*********************
//**************************************************************
void systeam_initialize(void){
disable_interrupt();
P_INT_Flag0=255;
P_INT_Flag1=255;
P_INT_Flag2=255;
P_INT_Ctrl0=0;
P_INT_Ctrl1=0;
P_INT_Ctrl2=0;//clear RAM disable interrupt
time_2ms=16;
time_1500ms=750;
time_384us=3;
sensitive_grade=1;
warning_send_status_YN=1;
P_TMR1_PreloadHi=0;
P_TMR1_Preload=0;
P_TMR0_1_Ctrl0=1;//#%0000 0001
P_TMR0_1_Ctrl0&=252;//%11111100 pause tmr0 count
P_TMR0_1_Ctrl1=68;// fsys/32
P_BUZ_Ctrl=64;//128uS
P_IOA_Dir=254;
P_IOA_Attrib=0;
temp_pa=1;
P_IOA_Data=temp_pa;
P_INT_Ctrl1=C_INT_T1OIE;//enable tmr0 interrupt
P_INT_Ctrl1|=C_INT_T0OIE;//enable tmr1 interrupt
P_INT_Ctrl2=C_INT_ITVALIE;//enable timebase interrupt
increment_down_up=1;
enable_interrupt();
}
//**************************************************************
//*********************warning commande read********************
//**************************************************************
void warn_commande_read(void){
warn_code1=SERIAL_NO1;
warn_code2=SERIAL_NO2;
warn_code3=SERIAL_NO3;
warn_code4=SERIAL_NO4;
warn_code4|=240;//1111 0000
warn_code5=~warn_code1;
warn_code6=~warn_code2;
warn_code7=~warn_code3;
warn_code8=~warn_code4;
}
/*****************************************************************************/
/* V_IRQ() : IRQ interrupt service routine */
/*****************************************************************************/
#pragma function=interrupt
interrupt void V_IRQ(void){
if(testbit(P_INT_Flag1,0)){//tmr0 intterrupt
if(frequency_parameter_change_YN){
P_TMR0_1_Ctrl0&=252;//%11111100 pause tmr0 count
P_TMR0_Preload=frequency_parameter;
P_TMR0_1_Ctrl0|=1;//%00000001 8bit timer
frequency_parameter_change_YN=0;
}
P_INT_Flag1|=C_INT_T0OIF;//clear interrupt flag
if(silence_flag){
clrbit(temp_pa,2);
P_IOA_Data=temp_pa;
}else{
inversebit(temp_pa,2);
P_IOA_Data=temp_pa;
}
return;
}
//=============================================================================
if(testbit(P_INT_Flag1,1)){//tmr1 interrupt
P_INT_Flag1|=C_INT_T1OIF;//clear interrupt flag
logic_time_overflow_error=1;
nop_instruction();
nop_instruction();
//inversebit(temp_pa,4);
//P_IOA_Data=temp_pa;
return;
}
//=============================================================================
if(testbit(P_INT_Flag2,5)){//timebase intterupt 128us
P_INT_Flag2|=C_INT_ITVALIE;//clear interrupt flag
nop_instruction();
--time_384us;
if(time_384us==0){
time_384us=3;
if(warning_send_status_YN){
if(GUARD_DONE_YN==0){
if(GUARD!=15){//16
clrbit(temp_pa,1);
P_IOA_Data=temp_pa;
++GUARD;
}else{
GUARD_DONE_YN=1;
}
}else{
if(PREAMBLE_DONE_YN==0){
if(PREAMBLE!=19){//20
inversebit(temp_pa,1);
P_IOA_Data=temp_pa;
++PREAMBLE;
}else{
PREAMBLE_DONE_YN=1;
}
}else{
if(HEADER_DONE_YN==0){
if(HEADER!=7){//8
clrbit(temp_pa,1);
P_IOA_Data=temp_pa;
++HEADER;
}else{
HEADER_DONE_YN=1;
}
}else{
if(ONE_PULSE_DONE_YN){
warn_commande_parameter();
ONE_PULSE_DONE_YN=0;
}
if(wave_HI_delay!=0){
setbit(temp_pa,1);
P_IOA_Data=temp_pa;
--wave_HI_delay;
}else{
clrbit(temp_pa,1);
P_IOA_Data=temp_pa;
--wave_LOW_delay;
if(wave_LOW_delay==0){
ONE_PULSE_DONE_YN=1;
nop_instruction();
}
}
}
}
}
}
}
//=============================================================================
--time_2ms;
if(time_2ms==0){
time_2ms=16;
--time_200ms;
if(time_200ms==0){
time_200ms=100;
if(commande_key4_YN){
++commande_key4_time;
commande_key4_YN=0;
if(commande_key4_time>10){
nop_instruction();
sensitive_grade_select_EN=1;
nop_instruction();
}
}else{
commande_key4_time=0;
}
}
if(sensitive_grade_select_EN){
if(delay_1500ms_EN){
if(time_1500ms!=0){
--time_1500ms;
}else{
sensitive_grade_change_EN=1;
time_1500ms=750;
}
}else{
time_1500ms=750;
}
}else{
time_1500ms=750;
}
if(buzzer_again!=0){
delay_1500ms_EN=0;
if(buzzer_time==0){
if(sound_out_YN){
buzzer_time=buzzer_low;
sound_out_YN=0;
music_number=0;
silence_flag=1;
clrbit(temp_pa,2);
P_IOA_Data=temp_pa;
speaker_out_start_flag=1;
}else{
buzzer_time=buzzer_high;
sound_out_YN=1;
if(speaker_out_start_flag){
--buzzer_again;
}
if(buzzer_again!=0){
next_music_number=1;
music_initialize();
}
}
}else{
--buzzer_time;
}
}else{
silence_flag=1;
clrbit(temp_pa,2);
P_IOA_Data=temp_pa;
sound_out_YN=0;
music_number=0;
speaker_out_start_flag=0;
buzzer_time=0;
key_code_number=0;
delay_1500ms_EN=1;
}
}
//=============================================================================
if(music_number==1)goto CAESE_1;
if(music_number==2)goto CAESE_2;
if(music_number==3)goto CAESE_3;
if(music_number==4)goto CAESE_4;
if(music_number==5)goto CAESE_5;
if(music_number==6)goto CAESE_6;
goto COME_BACK;
//=============================================================================
CAESE_1://警車 1.8KHZ~3.5KHZ(0.1S)~1.8KHZ(0.1S)
silence_flag=0;
if(frequency_increment_step!=23){//24*128=3.072ms
++frequency_increment_step;
}else{
frequency_parameter_change_YN=1;
frequency_increment_step=0;
if(increment_down_up){
if(frequency_parameter>220){
increment_down_up=0;
}else{
frequency_parameter+=1;
}
}else{
if(frequency_parameter<187){
increment_down_up=1;
++loop_times;
if(loop_times==25){
next_music_number=2;
music_initialize();
loop_times=0;
}
}else{
frequency_parameter-=1;
}
}
}
goto COME_BACK;
//=============================================================================
CAESE_2://國賓開道1 1500HZ~488HZ/ 263ms
silence_flag=0;
if(frequency_increment_step!=11){
++frequency_increment_step;//128uS*12=1.536ms*173=263ms
}else{
frequency_increment_step=0;
frequency_parameter_change_YN=1;
if(frequency_parameter>0){
frequency_parameter-=1;//488HZ
}else{
frequency_parameter=173;//1.5KHZ
++loop_times;
if(loop_times==10){
next_music_number=3;
music_initialize();
loop_times=0;
}
}
}
goto COME_BACK;
//=============================================================================
CAESE_3://救護音 0.97KHZ/1.5KHZ 1S切換
if(frequency_division_16bit!=7030){//7031*128uS=0.9S
++frequency_division_16bit;
}else{
frequency_division_16bit=0;
frequency_parameter_change_YN=1;
if(increment_down_up){
frequency_parameter=173;//1.5KHZ
increment_down_up=0;
}else{
frequency_parameter=127;//0.97KHZ
increment_down_up=1;
++loop_times;
if(loop_times==4){
next_music_number=4;
music_initialize();
loop_times=0;
}
}
}
goto COME_BACK;
//=============================================================================
CAESE_4://警車警戒 340HZ~840HZ/ 16.384ms*111=1.8S
if(frequency_division!=127){//128*128uS=16.384ms
++frequency_division;
}else{
frequency_division=0;
if(silence_flag==0){
frequency_parameter_change_YN=1;
if(frequency_parameter>145){
frequency_parameter=0;
silence_flag=1;
}else{
frequency_parameter+=1;
}
}else{
if(frequency_increment_step!=20){//21*16.384=340ms
++frequency_increment_step;
}else{
frequency_increment_step=0;
silence_flag=0;
++loop_times;
if(loop_times==3){
next_music_number=5;
music_initialize();
loop_times=0;
}
}
}
}
goto COME_BACK;
//=============================================================================
CAESE_5://警車開道 1.887KHZ/280ms
if(frequency_division_16bit!=2407){//2408*128uS=262.144ms
++frequency_division_16bit;
}else{
frequency_division_16bit=0;
if(increment_down_up){
silence_flag=0;
frequency_parameter=190;//1.887KHZ
increment_down_up=0;
}else{
increment_down_up=1;
silence_flag=1;
}
++loop_times;
if(loop_times==10){
next_music_number=6;
music_initialize();
loop_times=0;
}
frequency_parameter_change_YN=1;
}
goto COME_BACK;
//=============================================================================
CAESE_6://國賓開道2 1500HZ~488HZ/ 620ms
silence_flag=0;
if(frequency_increment_step!=27){
++frequency_increment_step;//128uS*28=3.584ms*173=620ms
}else{
frequency_increment_step=0;
frequency_parameter_change_YN=1;
if(frequency_parameter>0){
frequency_parameter-=1;//488HZ
}else{
frequency_parameter=173;//1.5KHZ
++loop_times;
if(loop_times==4){
next_music_number=1;
music_initialize();
loop_times=0;
}
}
}
}
COME_BACK:
return;
} /* V_IRQ() */
#pragma function=default
/*****************************************************************************/
/* V_NMI() : NMI interrupt service routine */
/*****************************************************************************/
#pragma function=interrupt
interrupt void V_NMI(void)
{
} /* V_NMI() */
#pragma function=default
//**************************************************************
//************************music initialize**********************
//**************************************************************
void music_initialize(void){
music_number=next_music_number;
nop_instruction();
if(music_number==1)goto MODE_CASE1;
if(music_number==2)goto MODE_CASE2;
if(music_number==3)goto MODE_CASE3;
if(music_number==4)goto MODE_CASE4;
if(music_number==5)goto MODE_CASE5;
if(music_number==6)goto MODE_CASE6;
goto MODE_BACK;
MODE_CASE1:
frequency_parameter=187;//256-69=187
P_TMR0_1_Ctrl0&=252;//%11111100 pause tmr0 count
P_TMR0_Preload=frequency_parameter;
P_TMR0_1_Ctrl0|=1;//%00000001 8bit timer
nop_instruction();
goto MODE_BACK;
MODE_CASE2:
frequency_parameter=173;//256-83=173
P_TMR0_1_Ctrl0&=252;//%11111100 pause tmr0 count
P_TMR0_Preload=frequency_parameter;
P_TMR0_1_Ctrl0|=1;//%00000001 8bit timer
nop_instruction();
goto MODE_BACK;
MODE_CASE3:
frequency_parameter=127;//256-129=6
P_TMR0_1_Ctrl0&=252;//%11111100 pause tmr0 count
P_TMR0_Preload=frequency_parameter;
P_TMR0_1_Ctrl0|=1;//%00000001 8bit timer
nop_instruction();
goto MODE_BACK;
MODE_CASE4:
frequency_parameter=0;//256-256=0
P_TMR0_1_Ctrl0&=252;//%11111100 pause tmr0 count
P_TMR0_Preload=frequency_parameter;
P_TMR0_1_Ctrl0|=1;//%00000001 8bit timer
nop_instruction();
goto MODE_BACK;
MODE_CASE5:
frequency_parameter=190;//256-66=190
P_TMR0_1_Ctrl0&=252;//%11111100 pause tmr0 count
P_TMR0_Preload=frequency_parameter;
P_TMR0_1_Ctrl0|=1;//%00000001 8bit timer
silence_flag=1;
nop_instruction();
goto MODE_BACK;
MODE_CASE6:
frequency_parameter=173;//256-83=173
P_TMR0_1_Ctrl0&=252;//%11111100 pause tmr0 count
P_TMR0_Preload=frequency_parameter;
P_TMR0_1_Ctrl0|=1;//%00000001 8bit timer
nop_instruction();
MODE_BACK:
nop_instruction();
}
//**************************************************************
//************************commande receive**********************
//**************************************************************
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -