?? inital.c
字號:
#include<string.h>
#include <AT898252.H>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
extern uchar mod_buff_tail;
extern uchar mod_buff[16];
extern uchar k_stat;
#define LCDCOM_W XBYTE[0x7f00]
extern void wait(void);
extern void mod_comd(uchar *str);
void delay(void)
{
uchar i,j;
for(i=0;i<100;i++)
for(j=0;j<100;j++);
}
/*系統初始化函數*/
void init(void)
{
IP=0x10; /*串口中斷為最高優先級*/
TMOD=0x21; /*定時器1方式2,定時器0方式1*/
TH1=0xf3; /*2400baud*/
TL1=0xf3;
SCON=0x50; /*串口方式1,允許接收*/
PCON=0x80; /*smod=1;*/
ET1=0; /*定時器1作為波特率發生器不需要中斷*/
TR1=1; /*開定時器1*/
EA=1; /*開總中斷*/
}
/*液晶屏初始化*/
void init_lcd(void )
{
LCDCOM_W=0x30;
delay();
LCDCOM_W=0x30;
delay();
LCDCOM_W=0x30;
delay();
wait();
LCDCOM_W=0x38;
wait();
LCDCOM_W=0x06;
wait();
LCDCOM_W=0x0f;
wait();
LCDCOM_W=0x01;
wait();
}
/*MODEM初始化函數,為防止通信死鎖,使當地安排喂狗s*/
void modem_init(void )
{
uchar i,j,k;
WMCON|=WDTRST_; /*喂狗*/
mod_buff_tail=0; /*緩存器尾指針清零*/
for(i=0;i<16;i++)
mod_buff[i]=0; /*緩存區清零*/
for(i=0;i<5;i++)
for(j=0;j<100;j++)
for(k=0;k<40;k++);
WMCON|=WDTRST_; /*喂狗*/
mod_comd("ATZ0"); /*復位MODEM*/
for(i=0;i<5;i++)
for(j=0;j<100;j++)
for(k=0;k<40;k++);
WMCON|=WDTRST_; /*喂狗*/
mod_comd("ATVE0"); /*V0:數字格式回顯,E0:抑制命令回顯主機*/
mod_buff_tail=0; /*從隊形緩沖區頭部開始存放數據*/
for(i=0;i<16;i++)
mod_buff[i]=0; /*緩存區清零,是否有必要重復清零??*/
while(!((mod_buff[0]==0x30)&(mod_buff[1]==0x0d))); /*等待回顯*/
WMCON|=WDTRST_; /*喂狗*/
mod_comd("ATS0=1S9=255");
mod_buff_tail=0; /*從隊形緩沖區頭部開始存放數據*/
for(i=0;i<16;i++)
mod_buff[i]=0; /*緩存區清零,是否有必要重復清零??*/
while(!((mod_buff[0]==0x30)&(mod_buff[1]==0x0d))); /*等待回顯*/
WMCON|=WDTRST_; /*喂狗*/
/*為適應三線制通信,必須進行以下設置*/
mod_comd("AT&D0"); /*MODEM忽略DTR信號*/
mod_buff_tail=0; /*從隊形緩沖區頭部開始存放數據*/
for(i=0;i<16;i++)
mod_buff[i]=0; /*緩存區清零,是否有必要重復清零??*/
while(!((mod_buff[0]==0x30)&(mod_buff[1]==0x0d))); /*等待回顯*/
for(i=0;i<10;i++)
for(j=0;j<100;j++)
for(k=0;k<40;k++);
WMCON|=WDTRST_; /*喂狗*/
mod_comd("AT&S0"); /*MODEM長開啟DSR信號*/
mod_buff_tail=0; /*從隊形緩沖區頭部開始存放數據*/
for(i=0;i<16;i++)
mod_buff[i]=0; /*緩存區清零,是否有必要重復清零??*/
while(!((mod_buff[0]==0x30)&(mod_buff[1]==0x0d))); /*等待回顯*/
for(i=0;i<10;i++)
for(j=0;j<100;j++)
for(k=0;k<40;k++);
WMCON|=WDTRST_; /*喂狗*/
mod_comd("AT&Q0"); /*MODEM異步通信*/
mod_buff_tail=0; /*從隊形緩沖區頭部開始存放數據*/
for(i=0;i<16;i++)
mod_buff[i]=0; /*緩存區清零,是否有必要重復清零??*/
while(!((mod_buff[0]==0x30)&(mod_buff[1]==0x0d))); /*等待回顯*/
WMCON|=WDTRST_; /*喂狗*/
mod_comd("AT&C1"); /*MODEM跟蹤遠程來的載波信號*/
mod_buff_tail=0; /*從隊形緩沖區頭部開始存放數據*/
for(i=0;i<16;i++)
mod_buff[i]=0; /*緩存區清零,是否有必要重復清零??*/
while(!((mod_buff[0]==0x30)&(mod_buff[1]==0x0d))); /*等待回顯*/
WMCON|=WDTRST_; /*喂狗*/
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -