📄 main.c
字号:
// Others
PCON = 0x00;
PCON2 = 0x00;
AUXR = 0x00;
AUXR1 = 0x00;
AUXR2 = 0x00;
WDTCR = 0x00;
STRETCH= 0x00;
EVRCR = 0x00;
// ISP
//IFD = 0x00;
//IFADRH = 0x00;
//IFADRL = 0x00;
//IFMT = 0x00;
//SCMD = 0x00;
//ISPCR = 0x00;
}
//-----------------------------------------------------------------------------
//unsigned int interruptcnt;
//unsigned char sec32ms=0;
void timer0 (void) interrupt 1// using 2
{
static unsigned char counter=0;
//12mhz ---> 32hz
// TH0 = (65536 -31250) / 256 ;//= 0x50
// TL0 = (65536 -31250) % 256 ;//= 0x38
//22.1184mhz --> 32hz
TH0 = (65536 -57600) / 256 ;//= 0x50
TL0 = (65536 -57600) % 256 ;//= 0x38
////Rec_timout++;
if(Rec_timout!=0)
{
Rec_timout++;
if(Rec_timout==0)
Rec_over = 1;
////{
//// Rec_timout = 0;
////}
}
counter++;
if(counter>=16)//0.5sec
{
counter=0;
if(MotionSettingMode)
IndexPartToggle = TRUE;
//TranSwitch = 0xff;
//if(!flag)
//{
// flag=1;
// P34 = 1;
// P34 = 0;
// delay_50us();
// P34 = 1;
// ///DEV_TW2835_Init();
// //main_111();
//}
}
// UP32ms=1;
}
//unsigned int interruptcnt;
//unsigned char sec32ms=0;
void timer1 (void) interrupt 3 //sing 3
{
// static char counter=0;
// if(counter)
// {
// counter=0;
// LED_R_on();
// }
// else
// {
// counter=1;
// LED_R_off();
// }
// TH0 = (65536 -31250) / 256 ;//= 0x50
// TL0 = (65536 -31250) % 256 ;//= 0x38
//if (++interruptcnt == 4000) { /* count to 4000 */
//second++; /* second counter */
//interruptcnt = 0; /* clear int counter */
// counter++;
// if(counter>=64)
// {
// counter=0;
// TranSwitch = 0xff;
// }
}
void Uart_intr(void) interrupt 4
{
if(SCON & 0x01)
{//receive down flag
//clear flag
Receiveff[RecCNT] = SBUF;
SCON &= 0xfe;
if(RecCNT>=32)
RecCNT=0xff;
RecCNT++;
Rec_timout = 0xf0;
}
}
void init_timer0(void)
{
// T2CON = 0x34;
// SCON = 0x70; //0x50
// TI = 0; //Clear UART Tx and Rx /
// RI = 0;
// TCON = 0x34;
// TMOD = 0x34;
// TF2 = 0;
// TR2 = 1; //Enable Timer2
// TF0 = 0;
//************************************************
//****** Set Timer0 for time interval ******
//************************************************
S_TMOD |= 0x01; //Timer0 working in Mode 1
//TH0=0x85; //Timer0 working in Mode 1 and set 20m sec.
//TL0=0xee; //Working 12MHz 1/12M * 12 = 1us
// 31.25ms = 1*31250
// TH0 = (65536 -31250) / 256 ;//= 0x50
// TL0 = (65536 -31250) % 256 ;//= 0x38
//TH0 = (65536 -15625) / 256;
//TL0 = (65536 -15625) % 256 ;
///22.1184mhz
/// 22.1184*10^6/12 = 1843200 1843200/32=57600
TH0 = (65536 -57600) / 256 ;//= 0x50
TL0 = (65536 -57600) % 256 ;//= 0x38
IE = 0x82;//0X8A // EA, Timer0, Timer 1
//砞﹚ Timer0 , Timer1 常琌 Mode1
//TMOD= 0x11;
TR0 = 1; //Enable Timer 0
//TR1 = 1;
}
///////////////////////////////////////////////////
//
// Function:Init_UART()
// Initial UART at Mode 1 and use Timer1 at mode 2
// We set buad rete is 4800
// 11MHz / 12 / 16 / 4800 = 11.93 => 12
// TH = 256-12 = 0xf4
//
///////////////////////////////////////////////////
//
// Initial UART2 at Mode 1 and use Timer1 at mode 2
// We set buad rete is 4800
// 11MHz / 12 / 16 / 4800 = 11.93 => 12
// S2BRT = 256-12 = 0xf4
//
///////////////////////////////////////////////////
void Init_Uart_12(void)
{
#if BAUDRATE == B_2400
// 11MHz / 12 / 32 / 2400 => 12
S_TMOD |= 0x20; //Set Timer1 Mode 2
SCON=0x50; //Set UART Mode 1
TH1=0xf4; //Set UART to operate at buad rate 9600
TL1=0xf4;
TR1 =1; //Start Timer1
//Uart2
S2CON=0x50; //Set UART Mode 1
S2BRT=0xf4; //Set UART to operate at buad rate 9600
AUXR2|=0x10;
#elif BAUDRATE == B_4800
// 11MHz / 12 / 16 / 4800 => 12
S_TMOD |= 0x20; //Set Timer1 Mode 2
SCON=0x50; //Set UART Mode 1
PCON=0x80; //Set SMOD = 1 (Double Baud rate)
TH1=0xf4; //Set UART to operate at buad rate 9600
TL1=0xf4;
TR1 =1; //Start Timer1
//Uart2
S2CON=0x50; //Set UART Mode 1
S2BRT=0xf4; //Set UART to operate at buad rate 9600
AUXR2=0x08; //SMOD = 1,TX12 = 0 (/12)
AUXR2|=0x10; //TR = 1
#elif BAUDRATE == B_9600
// 11MHz / 12 / 16 / 9600 => 6
TMOD=0x20; //Set Timer1 Mode 2
SCON=0x50; //Set UART Mode 1
PCON=0x80; //Set SMOD = 1 (Double Baud rate)
TH1=0xfa; //Set UART to operate at buad rate 9600
TL1=0xfa;
TR1 =1; //Start Timer1
//Uart2
S2CON=0x50; //Set UART Mode 1
S2BRT=0xfa; //Set UART to operate at buad rate 9600
AUXR2=0x08; //SMOD = 1,TX12 = 0 (/12)
AUXR2|=0x10; //TR = 1
#elif BAUDRATE == B_19200
// 11MHz / 32 / 19200 => 18
S_TMOD |= 0x20; //Set Timer1 Mode 2
SCON=0x50; //Set UART Mode 1
TH1=0x10;//0xee; //Set UART to operate at buad rate 9600
TL1=0x10;//0xee;
TR1 =1; //Start Timer1
//Uart2
// S2CON=0x50; //Set UART Mode 1
// S2BRT=0xee; //Set UART to operate at buad rate 9600
// AUXR2=0x44; //T1X12 = S2TX12 = 1
// AUXR2|=0x10; //TR = 1
#elif BAUDRATE == B_38400
// 11MHz / 16 / 38400 => 18
S_TMOD |= 0x20; //Set Timer1 Mode 2
SCON=0x50; //Set UART Mode 1
PCON=0x80; //Set SMOD = 1 (Double Baud rate)
TH1=0xee; //Set UART to operate at buad rate 9600
TL1=0xee;
TR1 =1; //Start Timer1
//Uart2
S2CON=0x50; //Set UART Mode 1
S2BRT=0xee; //Set UART to operate at buad rate 9600
AUXR2=0x4c; //SMOD = 1,T1X12 = S2TX12 = 1
AUXR2|=0x10; //TR = 1
#elif BAUDRATE == B_57600
// 11MHz / 16 / 57600 => 12
S_TMOD |= 0x20; //Set Timer1 Mode 2
SCON=0x50; //Set UART Mode 1
PCON=0x80; //Set SMOD = 1 (Double Baud rate)
TH1=0xf4; //Set UART to operate at buad rate 9600
TL1=0xf4;
TR1 =1; //Start Timer1
//Uart2
S2CON=0x50; //Set UART Mode 1
S2BRT=0xf4; //Set UART to operate at buad rate 9600
AUXR2=0x4c; //SMOD = 1,T1X12 = S2TX12 = 1
AUXR2|=0x10; //TR = 1
#elif BAUDRATE == B_115200
// 11MHz / 16 / 115200 => 6
S_TMOD |= 0x20; //Set Timer1 Mode 2
SCON=0x50; //Set UART Mode 1
PCON=0x80; //Set SMOD = 1 (Double Baud rate)
TH1=0xfa; //0xfa //Set UART to operate at buad rate 9600
TL1=0xfa; //0xfa
TR1 =1; //Start Timer1
//Uart2
S2CON=0x50; //Set UART Mode 1
S2BRT=0xfa; //Set UART to operate at buad rate 9600
AUXR2=0x4c; //SMOD = 1,T1X12 = S2TX12 = 1
AUXR2|=0x10; //TR = 1
#elif BAUDRATE == B_230400
// 11MHz / 16 / 230400 => 3
S_TMOD |= 0x20; //Set Timer1 Mode 2
SCON=0x50; //Set UART Mode 1
PCON=0x80; //Set SMOD = 1 (Double Baud rate)
TH1=0xfd; //Set UART to operate at buad rate 9600
TL1=0xfd;
TR1 =1; //Start Timer1
//Uart2
S2CON=0x50; //Set UART Mode 1
S2BRT=0xfd; //Set UART to operate at buad rate 9600
AUXR2=0x4c; //SMOD = 1,T1X12 = S2TX12 = 1
AUXR2|=0x10; //TR = 1
#endif
//TEST
}
void Transbuffclr(void)
{
char i;
for(i=0;i<32;i++)
Transmitbuff[i]=0;
}
void TranSmitNow(void)
{
char i;
if(TranSwitch!=0)
{
for(i=0;i<32;i++)
{
SBUF = Transmitbuff[i];
while(TI == 0){} //Write transmitting has been finished
TI = 0;
if(i >= 1)
{
if( Transmitbuff[i]==0xff)
{
///Transbuffclr();
TranSwitch = 0x00;
break;
}
}
}
}
}
void Receivebuffclr(void)
{
char i;
for(i=0;i<32;i++)
Receiveff[i]=0;
}
void ReceiveNow(void)
{
char i;
char t_buf[11]={ 0x55,0xaa,0,'o','k',0,0,0,0,0 ,0xff};
if(Rec_over==1)
{
if((Receiveff[0] == 0x55) && (Receiveff[1] == 0xaa) && (Receiveff[10] == 0xff))
{
//send ok to sender
Transbuffclr();
TranSwitch = 0xff;
RecFUNWK = t_buf[2] = Receiveff[2];
for(i=0;i<11;i++)
Transmitbuff[i] = t_buf[i];
}
RecCNT = 0;
Receivebuffclr();
Rec_over=0;
}
}
void R_FUN_WORK(void)
{
if(RecFUNWK != 0)
{
if(RecFUNWK == 1)
{
//initial into first screen
//Ap_channel_select(1);
P34 = 1;
P34 = 0;
delay_50us();
P34 = 1;
main_111();
}
else if(RecFUNWK == 2)
{
//Ap_channel_select(2);
key_2();
}
else if(RecFUNWK == 3)
{
//Ap_channel_select(3);
key_3();
}
else if(RecFUNWK == 4)
{
//Ap_channel_select(4);
key_4();
}
else if(RecFUNWK == 5)
{
//Ap_channel_select(5);
key_5();
}
else if(RecFUNWK == 6)
{
//Ap_channel_select(3);
key_6();
}
else if(RecFUNWK == 7)
{
//Ap_channel_select(4);
key_7();
}
else if(RecFUNWK == 8)
{
//Ap_channel_select(5);
key_8();
}
else if(RecFUNWK == 9)
{
//Ap_channel_select(5);
key_9();
}
else if(RecFUNWK == 0x0a)
{
//Ap_channel_select(5);
key_10();
}
else if(RecFUNWK == 0x0b)
{
key_11();
}
else if(RecFUNWK == 0x0c)
{
key_12();
}
else if(RecFUNWK == 0x0d)
{
key_13();
//{
// unsigned char _read_value_=0;
//
// ReadAsicByte(DVC_PG1,0x5f,(unsigned char *)&_read_value_);
// RecFUNWK = 0;
//}
}
RecFUNWK = 0;
}
}
void IRQ_CHECK(void)
{
if(!P16)///LOW TRIGGER AND TEST
{
if(Flg_MotionStart == TRUE)
{
Flg_MotionStart = FALSE;
key_2();
}
}
}
void InitComms(void)
{
// initialize communication port
#if 0 //11.059
S_TMOD = (S_TMOD & 0x0F)|0x20; /* 砞﹚ Timer 1 to MODE #2 */
SCON = 0x50; /* 砞﹚ Serial Mode 1 */
TL1 = 0xfd; /* TH1=TL1 = 256 - (freq / (32 * 12 * BAUD)) */
TH1 = 0xfd; /* BAUD RATE = 9600 ; ㄏノ
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -