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