⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inital.c

📁 用于远程控制系统下位机的设置程序
💻 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 + -