📄 366.lst
字号:
C51 COMPILER V6.10 366 01/16/2006 16:07:10 PAGE 1
C51 COMPILER V6.10, COMPILATION OF MODULE 366
OBJECT MODULE PLACED IN E:\董\文\安\366\程序\下\366.OBJ
COMPILER INVOKED BY: E:\董\软件\lope\kc51\bin\C51.exe E:\董\文\安\366\程序\下\366.c SMALL OT(0,SIZE) SB OR DB OE
stmt level source
1 //----------------------------------------晶振480K 波特率7500--------------------------------------------/
-/
2 //#include "stdio.h"
3 #include "string.h"
4 #include <reg52.h>
5 #include <intrins.h>
6 #include <math.h>
7 //---------------------------------------定义部分----------------------------------------------
8 //P1
9 sbit MT8880_D0= P1^4; //OUT/IN 双向数据总线 5脚
10 sbit MT8880_D1= P1^5; //OUT/IN 双向数据总线 6脚
11 sbit MT8880_D2= P1^6; //OUT/IN 双向数据总线 7脚
12 sbit MT8880_D3= P1^7; //OUT/IN 双向数据总线 8脚
13 //P3
14 sbit MT8880_RW= P3^2; //OUT 读写选择控制 12脚
15 sbit MT8880_CP2= P3^3; //OUT 8880的系统时钟 13脚
16 sbit MT8880_CS= P3^4; //OUT 14脚
17 sbit MT8880_RS0= P3^5; //OUT 变低时,进入现场监听状态 15脚
18 sbit sda= P3^6; //OUT I2C总线控制线 sda是24C02的5脚 16脚
19 sbit scl= P3^7; //OUT I2C总线数据线 scl是24C02的6脚 17脚
20
21 //P0
22 sbit KD9561_START= P0^2; //OUT 启动KD9561输出 37脚
23 //P2
24 //sbit BJ= P2^0; //OUT 报警LED指示,并送给LM393 21脚
25 sbit LINE_ALARM= P2^1; //IN 电话线路故障报警开关 22脚
26 sbit ToneTest= P2^2; //IN 峰值为3.5V的铃流脉冲信号检测 23脚
27 sbit J_LineToPhone= P2^3; //OUT 报警时,驱动继电器切断本地电话和外线的联系,同时模拟摘机 24脚
28 sbit ZJ_2= P2^6; //out 共同摘机 27脚
29
30 int JISHU;
31 unsigned char POINTER_24C02,i;
32 typedef unsigned char Number[10]; //定义一个10字节长的数组类型,用来放6组电话,一组密码,次数振铃,报
-警延迟时间
33 typedef unsigned char Number_P[5];
34 struct ReadArray
35 {
36 unsigned char Number24[22];
37 }READARRAY;
38 sbit aa7=ACC^7;
39 sbit aa6=ACC^6;
40 sbit aa5=ACC^5;
41 sbit aa4=ACC^4;
42 sbit aa3=ACC^3;
43 sbit aa2=ACC^2;
44 sbit aa1=ACC^1;
45 sbit aa0=ACC^0;
46
47 //--------------------------------------函数部分-----------------------------------------------
48
49 void DELAY_50ms()
50 {
51 1 EA=0;
52 1 TMOD=0; //13位不重装定时器方式
53 1 TL0=48;
C51 COMPILER V6.10 366 01/16/2006 16:07:10 PAGE 2
54 1 TH0=24;
55 1 TCON=0;
56 1 TR0=1; //定时器0启动,定时器1不启动
57 1 wait: if(TF0==0)
58 1 {
59 2 _nop_();
60 2 goto wait;
61 2 }
62 1 TCON=0;//停动定时器0
63 1 }
64
65 void MT8880_StatusRegister_READ()
66 {
67 1
68 1 MT8880_CP2=0;
69 1 MT8880_RW=1; //读状态寄存器
70 1 MT8880_RS0=1;
71 1 MT8880_CS=0;
72 1 MT8880_D0=1;
73 1 MT8880_D1=1;
74 1 MT8880_D2=1;
75 1 MT8880_D3=1;
76 1 MT8880_CP2=1;
77 1
78 1 }
79
80 void MT8880_DataRegister_READ()
81 {
82 1 MT8880_CP2=0;
83 1 MT8880_RW=1; //读接收数据寄存器
84 1 MT8880_RS0=0;
85 1 MT8880_CS=0; //给时钟信号
86 1 MT8880_D0=1;
87 1 MT8880_D1=1;
88 1 MT8880_D2=1;
89 1 MT8880_D3=1;
90 1 MT8880_CP2=1; //读状态寄存器值到D0-D3口
91 1
92 1 }
93
94 void MT8880_ControlRegister_Initialize()
95 {
96 1 MT8880_CP2=0;
97 1
98 1 MT8880_RS0=1; //du 1
99 1 MT8880_RW=1;
100 1 MT8880_CS=0;
101 1 MT8880_D0=1;
102 1 MT8880_D1=1;
103 1 MT8880_D2=1;
104 1 MT8880_D3=1;
105 1 MT8880_CP2=1;
106 1 MT8880_CP2=0;
107 1 MT8880_CS=1;
108 1
109 1 MT8880_RS0=1; //xie 1
110 1 MT8880_RW=0;
111 1 MT8880_CS=0;
112 1 MT8880_D0=0;
113 1 MT8880_D1=0;
114 1 MT8880_D2=0;
115 1 MT8880_D3=0;
C51 COMPILER V6.10 366 01/16/2006 16:07:10 PAGE 3
116 1 MT8880_CP2=1;
117 1 MT8880_CP2=0;
118 1 MT8880_CS=1;
119 1
120 1 MT8880_RS0=1; //xie2
121 1 MT8880_RW=0;
122 1 MT8880_CS=0;
123 1 MT8880_D0=0;
124 1 MT8880_D1=0;
125 1 MT8880_D2=0;
126 1 MT8880_D3=0;
127 1 MT8880_CP2=1;
128 1 MT8880_CP2=0;
129 1 MT8880_CS=1;
130 1
131 1 MT8880_RS0=1; //xie3
132 1 MT8880_RW=0;
133 1 MT8880_CS=0;
134 1 MT8880_D0=0;
135 1 MT8880_D1=0;
136 1 MT8880_D2=0;
137 1 MT8880_D3=1;
138 1 MT8880_CP2=1;
139 1 MT8880_CP2=0;
140 1 MT8880_CS=1;
141 1
142 1
143 1 MT8880_RS0=1; //xie4
144 1 MT8880_RW=0;
145 1 MT8880_CS=0;
146 1 MT8880_D0=0;
147 1 MT8880_D1=0;
148 1 MT8880_D2=0;
149 1 MT8880_D3=0;
150 1 MT8880_CP2=1;
151 1 MT8880_CP2=0;
152 1 MT8880_CS=1;
153 1
154 1 MT8880_RS0=1; //du 2
155 1 MT8880_RW=1;
156 1 MT8880_CS=0;
157 1 MT8880_D0=1;
158 1 MT8880_D1=1;
159 1 MT8880_D2=1;
160 1 MT8880_D3=1;
161 1 MT8880_CP2=1;
162 1 MT8880_CP2=0;
163 1 MT8880_CS=1;
164 1
165 1 MT8880_D0=1; //总线复位
166 1 MT8880_D1=1;
167 1 MT8880_D2=1;
168 1 MT8880_D3=1;
169 1
170 1 }
171
172
173 void MT8880_ControlRegister_Write()
174 {
175 1 MT8880_CS=1;
176 1
177 1 MT8880_RW=0; //写控制寄存器
C51 COMPILER V6.10 366 01/16/2006 16:07:10 PAGE 4
178 1 MT8880_RS0=1;
179 1 MT8880_D0=1; //使能tone输出
180 1 MT8880_D1=0; //选用双音多频方式,不用CP方式
181 1 MT8880_D2=0; //此脚在实际电路中未接,不管
182 1 MT8880_D3=1; //本次操作CRA,下一个写操作选择CRB
183 1 MT8880_CS=0;
184 1 MT8880_CP2=1;//给时钟信号,写D0-D3口值到控制寄存器
185 1 MT8880_CP2=0;
186 1 MT8880_CS=1;
187 1
188 1 MT8880_RW=0; //写控制寄存器
189 1 MT8880_RS0=1;
190 1 MT8880_D0=0;
191 1 MT8880_D1=0;
192 1 MT8880_D2=0;
193 1 MT8880_D3=0;
194 1 MT8880_CS=0;
195 1 MT8880_CP2=1; //给时钟信号,写D0-D3口值到控制寄存器
196 1 MT8880_CP2=0;
197 1 MT8880_CS=1;
198 1
199 1 MT8880_D0=1; //总线复位
200 1 MT8880_D1=1;
201 1 MT8880_D2=1;
202 1 MT8880_D3=1;
203 1 }
204
205 void MT8880_WriteOne(unsigned char SendData) //使用入口参数,即要发送的数
206 {
207 1 MT8880_CS=1;
208 1 MT8880_CP2=0;
209 1 MT8880_RW=0; //写传输数据寄存器
210 1 MT8880_RS0=0;
211 1
212 1 switch(SendData)
213 1 {
214 2 case 10: MT8880_D0=0; MT8880_D1=1; MT8880_D2=0; MT8880_D3=1;break;
215 2 case 1: MT8880_D0=1; MT8880_D1=0; MT8880_D2=0; MT8880_D3=0;break;
216 2 case 2: MT8880_D0=0; MT8880_D1=1; MT8880_D2=0; MT8880_D3=0;break;
217 2 case 3: MT8880_D0=1; MT8880_D1=1; MT8880_D2=0; MT8880_D3=0;break;
218 2 case 4: MT8880_D0=0; MT8880_D1=0; MT8880_D2=1; MT8880_D3=0;break;
219 2 case 5: MT8880_D0=1; MT8880_D1=0; MT8880_D2=1; MT8880_D3=0;break;
220 2 case 6: MT8880_D0=0; MT8880_D1=1; MT8880_D2=1; MT8880_D3=0;break;
221 2 case 7: MT8880_D0=1; MT8880_D1=1; MT8880_D2=1; MT8880_D3=0;break;
222 2 case 8: MT8880_D0=0; MT8880_D1=0; MT8880_D2=0; MT8880_D3=1;break;
223 2 case 9: MT8880_D0=1; MT8880_D1=0; MT8880_D2=0; MT8880_D3=1;break;
224 2 case 11: MT8880_D0=1; MT8880_D1=1; MT8880_D2=0; MT8880_D3=1;break; // *
225 2 case 12: MT8880_D0=0; MT8880_D1=0; MT8880_D2=1; MT8880_D3=1;break; // #
226 2 }
227 1 MT8880_CS=0; //给时钟信号,写D0-D3口值到控制寄存器
228 1 MT8880_CP2=1;
229 1
230 1 MT8880_CP2=0;
231 1 MT8880_CS=1;
232 1
233 1 MT8880_D0=1; //写操作完后一定要总线复位
234 1 MT8880_D1=1;
235 1 MT8880_D2=1;
236 1 MT8880_D3=1;
237 1
238 1 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -