📄 ts.c
字号:
//----------------------本程序用于测试上位机 波特率=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 + -