📄 386.lst
字号:
C51 COMPILER V6.10 386 03/14/2006 10:33:03 PAGE 1
C51 COMPILER V6.10, COMPILATION OF MODULE 386
OBJECT MODULE PLACED IN E:\安\386\386程序\386.OBJ
COMPILER INVOKED BY: E:\董\软件\lope\kc51\bin\C51.exe E:\安\386\386程序\386.c SMALL OT(0,SIZE) SB OR DB OE
stmt level source
1 //-----------------------2006年2月14日版,是目前可用的唯一版本-------------------------//
2 //#include "stdio.h"
3 #include "string.h"
4 #include <reg52.h>
5 #include <intrins.h>
6 #include <math.h>
7 //#include <absacc.h>
8
9
10 #if 0
#define p 9
#define l 10
#endif
14 //---------------------------------------定义部分----------------------------------------------
15 //P1
16 sbit LS164_CP= P1^0; //触发OUT 时钟,上升沿
17 sbit LS164_AB= P1^1; //OUT 串行输入
18 sbit ISD1420_RECLED= P1^2; //IN 录音状态监视,放音完状态监视
19 sbit ISD1420_PLAYL= P1^3; //OUT 语音存储芯片的电平放音方式 单片机4脚
20 sbit MT8880_D0= P1^4; //OUT/IN 双向数据总线
21 sbit MT8880_D1= P1^5; //OUT/IN 双向数据总线
22 sbit MT8880_D2= P1^6; //OUT/IN 双向数据总线
23 sbit MT8880_D3= P1^7; //OUT/IN 双向数据总线
24
25 //P3
26 sbit MT8880_RW= P3^0; //OUT 读写选择控制
27 sbit MT8880_CP2= P3^1; //OUT 8880的系统时钟
28 sbit Sound_Du= P3^2; //OUT 发出嘟叫声
29 sbit MT8880_CS= P3^3; //OUT 8880的片选
30 sbit MT8880_RS0= P3^4; //OUT 8880的寄存器选择,配合读写脚,控制读/写控制/数据寄存器
31 sbit Control_Listen= P3^5; //OUT 变低时,进入现场监听状态
32 sbit scl= P3^6; //OUT I2C总线控制线
33 sbit sda= P3^7; //OUT I2C总线数据线
34
35 //P0
36 sbit DY= P0^0; //OUT 电源LED指示
37 sbit NOP1= P0^1; //NOP 空脚
38 sbit KD9561_START= P0^2; //OUT 启动KD9561输出
39 sbit ISD1420_REC_ZJ= P0^3; //OUT/IN 录音按钮按下时,与REC脚相连,并监视编程模式下电话是否摘机
40 sbit FQ4_NC_IN= P0^4; //IN 防区4常闭输入
41 sbit FQ123_NC_IN= P0^5; //IN 防区1,2,3常闭输入
42 sbit NOP2= P0^6; //NOP 空脚
43 sbit HX2272_D3= P0^7; //IN 遥控解码器数据总线输入
44
45 //P2
46 sbit BJ= P2^0; //OUT 报警LED指示,并送给LM393
47 sbit LINE_ALARM= P2^1; //IN 电话线路故障报警开关
48 sbit ToneTest= P2^2; //IN 峰值为3.5V的铃流脉冲信号检测
49 sbit J_LineToPhone= P2^3; //OUT 报警时,驱动继电器切断本地电话和外线的联系,同时模拟摘机
50 sbit HX2272_VT= P2^4; //IN 平时为低,无线解码有效就变高
51 sbit HX2272_D0= P2^5; //IN 遥控解码器数据总线输入
52 sbit HX2272_D1= P2^6; //IN 遥控解码器数据总线输入
53 sbit HX2272_D2= P2^7; //IN 遥控解码器数据总线输入
54
55 bit FLAG_BF; //初始状态布防标志=0,不布防
C51 COMPILER V6.10 386 03/14/2006 10:33:03 PAGE 2
56 bit FLAG_ZJ;
57 bit FLAG_BJ;
58 bit FLAG_BF_YS;
59 bit FLAG_YHZJ;
60 int Time_DU;
61 int JISHUMORE;
62 unsigned char j,jj,k,ToneTime_XUNHUAN3,LOCK_JS;
63 bit FLAG_Tone;
64 bit FLAG_BB;FLAG_COMMOND;
65 bit FLAG_366;
66 bit Reset;
67 unsigned char FLAG_LOCK,FLAG_FIRST;
68 unsigned char FLASH_DY;
69 typedef unsigned char Number[22]; //定义一个20字节长的数组类型,用来放6组电话,一组密码,次数振铃,报
-警延迟时间
70 typedef unsigned char Number_P[5];
71 struct ReadArray
72 {
73 unsigned char Number24[22];
74 }READARRAY;
75
76
77 sbit aa7=ACC^7;
78 sbit aa6=ACC^6;
79 sbit aa5=ACC^5;
80 sbit aa4=ACC^4;
81 sbit aa3=ACC^3;
82 sbit aa2=ACC^2;
83 sbit aa1=ACC^1;
84 sbit aa0=ACC^0;
85
86
87 //--------------------------------------函数部分-----------------------------------------------
88 void LED_DRIVER(bit D7,bit D6,bit D5,bit D4,bit D3,bit D2,bit D1,bit D0)
89 {
90 1 LS164_AB=D7; LS164_CP=1; LS164_CP=0;
91 1 LS164_AB=D6; LS164_CP=1; LS164_CP=0;
92 1 LS164_AB=D5; LS164_CP=1; LS164_CP=0;
93 1 LS164_AB=D4; LS164_CP=1; LS164_CP=0;
94 1 LS164_AB=D3; LS164_CP=1; LS164_CP=0;
95 1 LS164_AB=D2; LS164_CP=1; LS164_CP=0;
96 1 LS164_AB=D1; LS164_CP=1; LS164_CP=0;
97 1 LS164_AB=D0; LS164_CP=1; LS164_CP=0;
98 1
99 1 }
100
101 void DELAY(unsigned char time_delay)
102 {
103 1 unsigned char i;
104 1 for(i=0;i<time_delay;i++)
105 1 {
106 2 TMOD=0; //13位不重装定时器方式
107 2 TL0=4;
108 2 TH0=6;
109 2 TCON=0;
110 2 TR0=1; //定时器0启动,定时器1不启动
111 2 wait: if(TF0==0)
112 2 {
113 3 NOP2=0;
114 3 goto wait;
115 3 }
116 2 }
C51 COMPILER V6.10 386 03/14/2006 10:33:03 PAGE 3
117 1 TCON=0;//停动定时器0
118 1 }
119
120 void DELAY_50ms()
121 {
122 1 EA=0;
123 1 TMOD=0; //13位不重装定时器方式
124 1 TL0=48;
125 1 TH0=24;
126 1 TCON=0;
127 1 TR0=1; //定时器0启动,定时器1不启动
128 1 wait: if(TF0==0)
129 1 {
130 2 NOP2=0;
131 2 goto wait;
132 2 }
133 1 TCON=0;//停动定时器0
134 1 }
135
136 void DELAY_20ms()
137 {
138 1 EA=0;
139 1 TMOD=1; //16位不重装定时器方式
140 1 TL0=246;
141 1 TH0=252;
142 1 TCON=0;
143 1 TR0=1; //定时器0启动,定时器1不启动
144 1 wait: if(TF0==0)
145 1 {
146 2 goto wait;
147 2 }
148 1 TCON=0;//停动定时器0
149 1 }
150
151 void DELAY_025ms(unsigned char t_delay)
152 {
153 1 unsigned char ii;
154 1 for(ii=0;ii<t_delay;ii++)
155 1 {
156 2 TMOD=1; //16位不重装定时器方式
157 2 TL0=246;
158 2 TH0=255;
159 2 TCON=0;
160 2 TR0=1; //定时器0启动,定时器1不启动
161 2 wait: if(TF0==0)
162 2 {
163 3 NOP2=0;
164 3 goto wait;
165 3 }
166 2 TCON=0;
167 2 TMOD=0;
168 2 }
169 1 //TCON=0;//停动定时器0
170 1 //TMOD=0;
171 1 }
172
173 void LED_DISPLAY(void)
174 {
175 1 LED_DRIVER(0,0,0,0,0,1,1,0); //显示“1”
176 1 DELAY(2);
177 1 LED_DRIVER(1,1,0,1,1,0,1,0); //显示“2”
178 1 DELAY(2);
C51 COMPILER V6.10 386 03/14/2006 10:33:03 PAGE 4
179 1 LED_DRIVER(1,1,0,0,1,1,1,0); //显示“3”
180 1 DELAY(2);
181 1 LED_DRIVER(1,0,0,0,0,1,1,1); //显示“4”
182 1 DELAY(2);
183 1 LED_DRIVER(1,1,0,0,1,1,0,1); //显示“5”
184 1 DELAY(2);
185 1 LED_DRIVER(1,1,0,1,1,1,0,1); //显示“6”
186 1 DELAY(2);
187 1 LED_DRIVER(0,1,0,0,0,1,1,0); //显示“7”
188 1 DELAY(2);
189 1 LED_DRIVER(1,1,0,1,1,1,1,1); //显示“8”
190 1 DELAY(2);
191 1 LED_DRIVER(1,1,0,0,1,1,1,1); //显示“9”
192 1 DELAY(2);
193 1 LED_DRIVER(0,1,0,1,1,1,1,1); //显示“0”
194 1 DELAY(2);
195 1 LED_DRIVER(1,1,0,1,0,1,1,1); //显示“A”
196 1 DELAY(2);
197 1 LED_DRIVER(1,0,0,1,1,1,0,1); //显示“b”
198 1 DELAY(2);
199 1 LED_DRIVER(0,1,0,1,1,0,0,1); //显示“C”
200 1 DELAY(2);
201 1 LED_DRIVER(1,0,0,1,1,1,1,0); //显示“d”
202 1 DELAY(2);
203 1 LED_DRIVER(0,0,0,0,0,0,0,0); //令所有数码管和BF灯全灭
204 1 }
205
206
207 /*
208
209 void int_t0(void) interrupt 1 /////定时器0中断处理程序,用来处理40ms间隔,启动定时器1
210 {
211 if(ToneTest==0) //过40ms再次检测到铃流,说明的确是铃流,启动定时器1
212 {
213 IE=0; //禁止所有中断
214 EA=1;
215 ET1=0; //开定时器1中断允许
216 TMOD=32; //16位不重装定时器工作方式1
217 TCON=0;
218 TH1=99;
219 TL1=192; //定时1s
220 TR1=1; //定时器1启动
221
222 }
223 else FLAG_Tone=0; //退出铃流检测状态
224 }
225
226 void int_t1(void) interrupt 3 /////定时器1中断处理程序,用来处理1s间隔
227 {
228 if(FLAG_TIME_ZD!=4) //不足5秒间隔,再次启动定时器1
229 {
230 FLAG_TIME_ZD=FLAG_TIME_ZD+1;
231 IE=0; //禁止所有中断
232 EA=1;
233 ET1=0; //开定时器1中断允许
234 TMOD=32; //16位不重装定时器工作方式1
235 TCON=0;
236 TH1=99;
237 TL1=192; //定时1s
238 TR1=1; //定时器1启动
239
240 }
C51 COMPILER V6.10 386 03/14/2006 10:33:03 PAGE 5
241 else //到下一个铃流周期(5秒后的)
242 {
243 if(ToneTest==0)
244 {
245 FLAG_TONE_NUMBER=FLAG_TONE_NUMBER+1;
246 //此值为已经检测到的确定的铃流个数,正在检测的不算在内
247 DELAY_40MS();//进入本个铃流检测处理流程
248 }
249 else FLAG_Tone=0;
250 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -