📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 01/03/2009 12:35:54 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND CODE
stmt level source
1 /****************************************************************************
2 * File: MAIN.C *
3 * Version: 1.0 *
4 * Created: 21.06.2005 *
5 * Last Change: 22.06.2005 *
6 * Author: yuanjun yin *
7 * Compiler: KEIL C51 uVision2 V2.23 *
8 * Description: 89C54RD+-Firmware for MFRC500 Demo Serial Reader *
9 ****************************************************************************/
10
11 #include <stc89c54rd+.h>
12 #include "main.h"
13
14 unsigned int key_time;
15 uchar rxhead;
16 uint txhead=0;
17 uchar xdata receive_buf1[20];
18 unsigned char xdata send_buf1[20];
19 unsigned char data datalen;
20 unsigned int senddatalen;
21 unsigned char bell_sec;
22 unsigned int timecounter;
23 unsigned char callnumber=0;
24 uchar idata phonecode[]={1,3,3,8,10,10,9,9,1,1,6,0};// 本人通信号码
25 /////////////////////////////////////
26
27 sbit BELL=P4^1;
28 sbit CSE=P4^0;
29 sbit RSE=P2^1;
30 sbit WRE=P3^6;
31 sbit RDE=P3^7;
32 //sbit INT=P3^3;
33
34 sbit IRQ_PIN=P3^3;
35 ///////////////////////////////////
36 void init(void);
37 unsigned char CMP_STRING(unsigned char *pt1,
38 unsigned char *pt2,unsigned char len);
39
40 unsigned char output(uchar hhh);
41 void write_eeprom(unsigned int addrdata,unsigned char data2);
42 void write_pagedata(unsigned char pagenumber);
43 unsigned char read_eeprom(unsigned int addrdata);
44 void erase_eeprom(unsigned char sectors);
45 void bell1(unsigned char dd);
46 void time2init(void);
47 void command_press(void);
48 uchar readsr(void);
49 void writesr(uchar a);
50 uchar readdata(void);
51 void writedata(uchar a);
52 void init_mt8888(void);
53 void dtmfout(void);
54 void delayms(uint n);
55 void sendDTMFdata(uchar d);
C51 COMPILER V7.06 MAIN 01/03/2009 12:35:54 PAGE 2
56 uchar GetDTMFdata(void);
57 void sendPhone(uchar *arr);
58 void open_power(void);
59
60
61 unsigned char bdata flag;
62 // sbit out_flag=flag^0;
63 // sbit up_flag=flag^1; //上活门标志
64 // sbit down_flag=flag^2; //下活门标志
65 // sbit life_flag=flag^3; //生死门标志
66 // sbit second_flag=flag^4; //输出二次标志
67 // sbit reset_flag=flag^5;
68 // sbit display_flag=flag^6;
69 // sbit desk_flag=flag^7;
70
71 sbit ACC0 = ACC^0;
72 sbit ACC7 = ACC^7;
73
74 unsigned char bdata flag1;
75 // sbit M_FLAG=flag1^0;
76 // sbit HALF_FLAG=flag1^1;
77 // sbit SHORT_FLAG=flag1^2;
78 // sbit RCV_BIT=flag1^3;
79 // sbit M_DATA_FLAG=flag1^4;
80 sbit receive_flag=flag1^5;
81 // sbit R_MRC=flag1^6;
82
83
84 unsigned char bdata flag2;
85 sbit phone_flag=flag2^0;
86 sbit off_flag=flag2^1;
87 sbit on1_flag=flag2^2;
88 sbit off1_flag=flag2^3;
89 // sbit st_a4=flag2^4;
90 // sbit st_a5=flag2^5;
91 // sbit st_a6=flag2^6;
92
93
94 unsigned char bdata flag3;
95 // sbit st_e=flag3^0;
96 // sbit st_e1=flag3^1;
97 // sbit st_e2=flag3^2;
98 // sbit st_e3=flag3^3;
99 // sbit st_e4=flag3^4;
100 // sbit st_e5=flag3^5;
101 // sbit st_e6=flag3^6;
102 // sbit key_9=flag3^7;
103
104 unsigned char bdata flag4;
105 // sbit X_BIT=flag4^0;
106 // sbit M_KPFLG=flag4^1;
107 sbit bell_flag=flag4^2;
108 // sbit sec4=flag4^3;
109 // sbit sec5=flag4^4;
110 // sbit sec6=flag4^5;
111 // sbit sec7=flag4^6;
112 // sbit c_bit=flag4^7;
113 /****************************************************************************
114
115 ****************************************************************************/
116 void main (void)
117 {
C51 COMPILER V7.06 MAIN 01/03/2009 12:35:54 PAGE 3
118 1 unsigned char counter,counter2,ttt;
119 1 unsigned char mfout=2;//readbuf[16];
120 1 unsigned char tt1[2];
121 1 unsigned char tt;
122 1 unsigned int i;
123 1 unsigned int count,yyjj;
124 1
125 1 init();
126 1
127 1 yyjj=12;
128 1 bell1(1);
129 1 // yyjyj=0;
130 1 ONTEL=0;
131 1 OUT1=1;
132 1 OUT2=1;
133 1 delayms(500);
134 1 init_mt8888();
135 1 OUT1=1; //打开电源
136 1 OUT2=1;
137 1
138 1 // sendPhone(phonecode);
139 1
140 1 // dtmfout();
141 1 for(;;)
142 1 {
143 2 if(phone_flag==1)
144 2 {
145 3 phone_flag=0;
146 3 open_power();
147 3 ONTEL=0;
148 3 }
149 2 // {
150 2 // delayms(60);
151 2 // i=GetDTMFdata();
152 2 // i=i&0x0f;
153 2 // if(i==5)
154 2 // {
155 2 // OUT1=!OUT1;
156 2 // OUT2=!OUT2;
157 2 /// }
158 2 // }
159 2 // i=10;
160 2 }
161 1 }
*** WARNING C280 IN LINE 118 OF MAIN.C: 'counter': unreferenced local variable
*** WARNING C280 IN LINE 118 OF MAIN.C: 'counter2': unreferenced local variable
*** WARNING C280 IN LINE 118 OF MAIN.C: 'ttt': unreferenced local variable
*** WARNING C280 IN LINE 120 OF MAIN.C: 'tt1': unreferenced local variable
*** WARNING C280 IN LINE 121 OF MAIN.C: 'tt': unreferenced local variable
*** WARNING C280 IN LINE 122 OF MAIN.C: 'i': unreferenced local variable
*** WARNING C280 IN LINE 123 OF MAIN.C: 'count': unreferenced local variable
162 void open_power(void)
163 {
164 1 unsigned int ii;
165 1 OUT1=0;
166 1 OUT2=0;
167 1 for(ii=0;ii<65533;ii++);
168 1 for(ii=0;ii<65533;ii++);
169 1 OUT1=1;
170 1 OUT2=1;
171 1
172 1 }
C51 COMPILER V7.06 MAIN 01/03/2009 12:35:54 PAGE 4
173 /****************************************************************************
174
175 ****************************************************************************/
176 void init (void)
177 {
178 1
179 1 IP=0x00;
180 1 TCON=1;
181 1 TMOD=0x21; //定时器0为8位自动重装;定时器1为16位计数器工作方式
182 1 time2init();
183 1 //外部中断0的触发方式为边沿方式
184 1 SCON=0x50;
185 1 PCON|=0x80; //dual 4800X2=9600
186 1 TH1=TL1=0xfa; //TH1=TL1=256-(11059200/4800/32/12+0.5)
187 1 // TH1=0xf8;
188 1 // TL1=0xa3;
189 1 TH0=0xfc;
190 1 TL0=0x21;
191 1
192 1 ET0=1;
193 1 EX0=1;
194 1 TR1=1;
195 1 TR0=1;
196 1 PS=1;
197 1 PX0=1;
198 1 ES=1;
199 1 EA=1;
200 1 }
201 void time2init(void)
202 {
203 1 T2MOD &= 0xFC; /* T2OE=0;定时器2输出不允许 */
204 1 T2MOD |= 0x01; /* DCEN=1;可以设置为向上/下计数:此程序中为向上达到0xff时溢出*/
205 1 EXF2=0; /* reset flag 定时器2外部标志位清除*/
206 1 TCLK=0;
207 1 RCLK=0; /* disable baud rate generator 不用于波特率发生器*/
208 1 EXEN2=0; /* ignore events on T2EX 视T2EX(P1.1)端信号无效*/
209 1 TH2=0xFd;//MSB_reload_value; /* Init msb_value 填入初始化值*/
210 1 TL2=0x16;//LSB_reload_value; /* Init lsb_value */
211 1 RCAP2H=0xfd;//MSB_reload_value; /* reload msb_value重载值 */
212 1 RCAP2L=0x16;//LSB_reload_value; /* reload lsb_value */
213 1 C_T2=0; /* timer mode 定时模式*/
214 1 CP_RL2=0; /* reload mode 重载模式*/
215 1 // EA=1; /* interupt enable 中断允许*/
216 1 ET2=1; /* enable timer2 interrupt 允许T2中断*/
217 1 TR2=1; /* timer2 run 开始计时*/
218 1 }
219 ////////////////////////////////////////////////
220 void bell1(unsigned char dd)
221 {
222 1 if(dd==0)return;
223 1 else
224 1 {
225 2 bell_flag=1;
226 2 BELL=0;
227 2 bell_sec=dd;
228 2 }
229 1 }
230
231 ///////////////////////////////////////////////////////////////////////////
232 void timer2(void) interrupt 5 using 3
233 {
234 1 key_time++;
C51 COMPILER V7.06 MAIN 01/03/2009 12:35:54 PAGE 5
235 1 timecounter++;
236 1 if(key_time>30000){callnumber=0;ONTEL=0;}
237 1 if(callnumber>200)
238 1 {
239 2 // OUT1=0;
240 2 // OUT2=0;
241 2 callnumber=0;
242 2 // ONTEL=1;
243 2 phone_flag=1;
244 2 }
245 1 TF2=0;
246 1 }
247 ///////////////////////////////////////
248 void delay_10ms (uint _10ms)
249 {
250 1
251 1 ET2 = 0; // Disable timer2 interrupt
252 1 T2CON = 0x04; // 16-bit auto-reload, clear TF2, start timer
253 1 while (_10ms--)
254 1 {
255 2 while (!TF2)
256 2 {
257 3 // if (CmdValid || CmdReceived)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -