📄 ts.lst
字号:
C51 COMPILER V6.10 TS 02/13/2006 15:51:04 PAGE 1
C51 COMPILER V6.10, COMPILATION OF MODULE TS
OBJECT MODULE PLACED IN E:\董\文\安\366\程序\t上\ts.OBJ
COMPILER INVOKED BY: E:\董\软件\lope\kc51\bin\C51.exe E:\董\文\安\366\程序\t上\ts.c SMALL OT(0,SIZE) SB OR DB OE
stmt level source
1 //----------------------本程序用于测试上位机 波特率=7500----------------------------------//
2 #include "string.h"
3 #include <reg52.h>
4 #include <intrins.h>
5 #include <math.h>
6 //---------------------------------------定义部分----------------------------------------------
7 //P1
8 sbit MT8880_D0= P1^4; //OUT/IN 双向数据总线 5脚
9 sbit MT8880_D1= P1^5; //OUT/IN 双向数据总线 6脚
10 sbit MT8880_D2= P1^6; //OUT/IN 双向数据总线 7脚
11 sbit MT8880_D3= P1^7; //OUT/IN 双向数据总线 8脚
12 //P3
13 sbit MT8880_RW= P3^2; //OUT 读写选择控制 12脚
14 sbit MT8880_CP2= P3^3; //OUT 8880的系统时钟 13脚
15 sbit MT8880_CS= P3^4; //OUT 14脚
16 sbit MT8880_RS0= P3^5; //OUT 变低时,进入现场监听状态 15脚
17 sbit sda= P3^6; //OUT I2C总线控制线 sda是24C02的5脚 16脚
18 sbit scl= P3^7; //OUT I2C总线数据线 scl是24C02的6脚 17脚
19
20 //P0
21 sbit KD9561_START= P0^2; //OUT 启动KD9561输出 37脚
22 //P2
23 //sbit BJ= P2^0; //OUT 报警LED指示,并送给LM393 21脚
24 sbit LINE_ALARM= P2^1; //IN 电话线路故障报警开关 22脚
25 sbit ToneTest= P2^2; //IN 峰值为3.5V的铃流脉冲信号检测 23脚
26 sbit J_LineToPhone= P2^3; //OUT 报警时,驱动继电器切断本地电话和外线的联系,同时模拟摘机 24脚
27 sbit ZJ_2= P2^6; //out 共同摘机 27脚
28
29 int JISHU;
30 unsigned char i;
31 typedef unsigned char Number[10]; //定义一个10字节长的数组类型,用来放6组电话,一组密码,次数振铃,报
-警延迟时间
32 typedef unsigned char Number_P[5];
33 struct ReadArray
34 {
35 unsigned char Number24[22];
36 }READARRAY;
37 sbit aa7=ACC^7;
38 sbit aa6=ACC^6;
39 sbit aa5=ACC^5;
40 sbit aa4=ACC^4;
41 sbit aa3=ACC^3;
42 sbit aa2=ACC^2;
43 sbit aa1=ACC^1;
44 sbit aa0=ACC^0;
45
46 //--------------------------------------函数部分-----------------------------------------------
47
48 void DELAY_50ms()
49 {
50 1 EA=0;
51 1 TMOD=0; //13位不重装定时器方式
52 1 TL0=48;
53 1 TH0=24;
54 1 TCON=0;
C51 COMPILER V6.10 TS 02/13/2006 15:51:04 PAGE 2
55 1 TR0=1; //定时器0启动,定时器1不启动
56 1 wait: if(TF0==0)
57 1 {
58 2 _nop_();
59 2 goto wait;
60 2 }
61 1 TCON=0;//停动定时器0
62 1 }
63
64 //------------------------------发送数据给上位机----------------------------------//
65
66 void READ_MESSAGE(unsigned char serial1,unsigned char serial2,unsigned char serial3,unsigned char serial4,
-unsigned char serial5,unsigned char serial6)
67 {
68 1 Number NUMBER; //生成记录一次摘机过程的数组
69 1
70 1 TCLK=0; //T2CON中的位 表示发送器波特率由定时器1决定
71 1 RCLK=0; //T2CON中的位 表示接收器波特率由定时器1决定
72 1 SCON=0x88; //1000,1000,串口方式2,禁止接收,9位固定频率,TB8=1,即第9位为1,f/64 波特率=7500
-
73 1 PCON=0; //使SMOD=0
74 1 IE=0; //禁止中断
75 1 NUMBER[0]=serial1;
76 1 NUMBER[1]=serial2;
77 1 NUMBER[2]=serial3;
78 1 NUMBER[3]=serial4;
79 1 NUMBER[4]=serial5;
80 1 NUMBER[5]=serial6;
81 1
82 1 SBUF=170; //发送握手信息 1010,1010
83 1 JISHU=400;
84 1 check_serial_send:
85 1 if(TI!=1)
86 1 {
87 2 JISHU=JISHU-1;
88 2 if(JISHU!=0)
89 2 {
90 3 _nop_();_nop_();
91 3 goto check_serial_send;
92 3 }
93 2 else
94 2 {
95 3 _nop_(); _nop_();
96 3 return;
97 3 }
98 2 }
99 1 TI=0; //清发送完成兼中断标志
100 1
101 1 REN=1; //启动一次接收过程
102 1 JISHU=400;
103 1 check_serial_receive:
104 1 if(RI!=1) //如果SBUF中没有接收到数据,等待
105 1 {
106 2 JISHU=JISHU-1;
107 2 if(JISHU!=0)
108 2 {
109 3 _nop_();_nop_();
110 3 goto check_serial_receive;
111 3 }
112 2 else
113 2 {
114 3 _nop_(); _nop_();
C51 COMPILER V6.10 TS 02/13/2006 15:51:04 PAGE 3
115 3 return;
116 3 }
117 2 }
118 1 RI=0;
119 1 REN=0;
120 1
121 1 for(i=0;i<6;i++) //发送6字节信息
122 1 {
123 2 SBUF=NUMBER[i];
124 2 JISHU=400;
125 2 check_serial_sendmessage:
126 2 if(TI!=1)
127 2 {
128 3 JISHU=JISHU-1;
129 3 if(JISHU!=0)
130 3 {
131 4 _nop_();_nop_();
132 4 goto check_serial_sendmessage;
133 4 }
134 3 else
135 3 {
136 4 _nop_(); _nop_();
137 4 return;
138 4 }
139 3 }
140 2 TI=0; //清发送完成兼中断标志
141 2 }
142 1
143 1 //发送数据到上位机结束
144 1 }
145 //-------------发送数据给上位机程序结束----------------//
146
147 //------------------------------发送数据给上位机的候补测试程序----------------------------------//
148
149 void READ_MESSAGE2(unsigned char serial1,unsigned char serial2,unsigned char serial3,unsigned char serial4
-,unsigned char serial5,unsigned char serial6)
150 {
151 1 Number NUMBER; //生成记录一次摘机过程的数组
152 1
153 1 TCLK=0; //T2CON中的位 表示发送器波特率由定时器1决定
154 1 RCLK=0; //T2CON中的位 表示接收器波特率由定时器1决定
155 1 SCON=0x88; //1000,1000,串口方式2,禁止接收,9位固定频率,TB8=1,即第9位为1,f/64 波特率=7500
-
156 1 PCON=0; //使SMOD=0
157 1 IE=0; //禁止中断
158 1 NUMBER[0]=serial1;
159 1 NUMBER[1]=serial2;
160 1 NUMBER[2]=serial3;
161 1 NUMBER[3]=serial4;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -