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

📄 ts.c

📁 该程序可作为386的接警程序使用
💻 C
📖 第 1 页 / 共 2 页
字号:
//----------------------本程序用于测试上位机 波特率=7500----------------------------------//
  #include "string.h"
  #include <reg52.h>
  #include <intrins.h>
  #include <math.h>
//---------------------------------------定义部分----------------------------------------------
//P1
sbit MT8880_D0=       P1^4;  //OUT/IN  双向数据总线                                5脚
sbit MT8880_D1=       P1^5;  //OUT/IN  双向数据总线                                6脚  
sbit MT8880_D2=       P1^6;  //OUT/IN  双向数据总线                                7脚
sbit MT8880_D3=       P1^7;  //OUT/IN  双向数据总线                                8脚 
//P3
sbit MT8880_RW=        P3^2;  //OUT      读写选择控制                                12脚  
sbit MT8880_CP2=       P3^3;  //OUT     8880的系统时钟                               13脚 
sbit MT8880_CS=       P3^4;  //OUT                                                 14脚 
sbit MT8880_RS0=      P3^5;  //OUT     变低时,进入现场监听状态                    15脚
sbit sda=             P3^6;  //OUT     I2C总线控制线  sda是24C02的5脚              16脚 
sbit scl=             P3^7;  //OUT     I2C总线数据线  scl是24C02的6脚              17脚 

//P0
sbit KD9561_START=    P0^2;  //OUT     启动KD9561输出                               37脚
//P2
//sbit BJ=              P2^0;  //OUT     报警LED指示,并送给LM393                     21脚 
sbit LINE_ALARM=      P2^1;  //IN      电话线路故障报警开关                         22脚 
sbit ToneTest=        P2^2;  //IN      峰值为3.5V的铃流脉冲信号检测                 23脚
sbit J_LineToPhone=   P2^3;  //OUT     报警时,驱动继电器切断本地电话和外线的联系,同时模拟摘机   24脚
sbit ZJ_2=          P2^6;  //out          共同摘机                                   27脚 

int JISHU; 
unsigned char i;
typedef unsigned char Number[10];      //定义一个10字节长的数组类型,用来放6组电话,一组密码,次数振铃,报警延迟时间
typedef unsigned char Number_P[5];
struct ReadArray 
 {
  unsigned char Number24[22];
 }READARRAY;  
sbit aa7=ACC^7;
sbit aa6=ACC^6;
sbit aa5=ACC^5;
sbit aa4=ACC^4;
sbit aa3=ACC^3;
sbit aa2=ACC^2;
sbit aa1=ACC^1;
sbit aa0=ACC^0;

//--------------------------------------函数部分-----------------------------------------------

void DELAY_50ms()
{
 EA=0;
 TMOD=0; //13位不重装定时器方式
 TL0=48;
 TH0=24;
 TCON=0;
 TR0=1; //定时器0启动,定时器1不启动
 wait: if(TF0==0)
      {
       _nop_();
       goto wait;
      }   
 TCON=0;//停动定时器0
}

//------------------------------发送数据给上位机----------------------------------//

void READ_MESSAGE(unsigned char serial1,unsigned char serial2,unsigned char serial3,unsigned char serial4,unsigned char serial5,unsigned char serial6)    
{  
  Number NUMBER;       //生成记录一次摘机过程的数组 

            TCLK=0;   //T2CON中的位 表示发送器波特率由定时器1决定
            RCLK=0;   //T2CON中的位 表示接收器波特率由定时器1决定 
            SCON=0x88; //1000,1000,串口方式2,禁止接收,9位固定频率,TB8=1,即第9位为1,f/64  波特率=7500          
            PCON=0;  //使SMOD=0
            IE=0;    //禁止中断 
           NUMBER[0]=serial1;
           NUMBER[1]=serial2;
           NUMBER[2]=serial3;
           NUMBER[3]=serial4;
           NUMBER[4]=serial5;
           NUMBER[5]=serial6;
           
            SBUF=170; //发送握手信息 1010,1010
            JISHU=400;
check_serial_send:
            if(TI!=1)
            {
             JISHU=JISHU-1;
             if(JISHU!=0)
             {
              _nop_();_nop_();
              goto check_serial_send;
             }
             else
             {
               _nop_(); _nop_(); 
               return;       
             }
            }
            TI=0;     //清发送完成兼中断标志
                     
            REN=1;   //启动一次接收过程
            JISHU=400;
check_serial_receive:
            if(RI!=1)   //如果SBUF中没有接收到数据,等待
            {
             JISHU=JISHU-1;
             if(JISHU!=0)
              {
               _nop_();_nop_();                 
               goto check_serial_receive;  
              }
             else
              {
               _nop_(); _nop_(); 
               return;       
              }           
            } 
            RI=0;
            REN=0;
            
            for(i=0;i<6;i++)  //发送6字节信息
            {             
             SBUF=NUMBER[i];
             JISHU=400;
 check_serial_sendmessage:
             if(TI!=1)
             {
              JISHU=JISHU-1;
              if(JISHU!=0)
               {
                _nop_();_nop_();                 
                goto check_serial_sendmessage;  
               }
              else
               {
                _nop_(); _nop_(); 
                return;       
               }           
             }            
             TI=0;     //清发送完成兼中断标志  
            }  
               
      //发送数据到上位机结束  
}
//-------------发送数据给上位机程序结束----------------//

//------------------------------发送数据给上位机的候补测试程序----------------------------------//

void READ_MESSAGE2(unsigned char serial1,unsigned char serial2,unsigned char serial3,unsigned char serial4,unsigned char serial5,unsigned char serial6)    
{  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -