📄 test.lst
字号:
C51 COMPILER V8.15 TEST 10/28/2008 11:00:32 PAGE 1
C51 COMPILER V8.15, COMPILATION OF MODULE TEST
OBJECT MODULE PLACED IN TEST.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE TEST.C BROWSE DEBUG OBJECTEXTEND
line level source
1 //#include <reg52.h>
2 #include <intrins.h>
3 #include <STC12.h>
4 #define uchar unsigned char /*宏定义*/
5 #define DIALNUM_LEN 20
6
7 sbit P1_7=P1^7;
8 sbit P1_6=P1^6;
9 sbit P1_5=P1^5;
10 sbit P1_4=P1^4;
11 sbit P1_3=P1^3;
12 sbit P1_2=P1^2;
13 sbit P1_1=P1^1;
14 sbit P1_0=P1^0;
15
16 sbit P2_1=P2^1;
17 sbit P2_0=P2^0;
18 sbit HOOK_OFF_IN=P2^4;
19 sbit P2_6=P2^6;
20 sbit FREE_HAND=P2^2;
21 sbit PSTN_CIN=P2^3;
22 sbit MAN_CIN=P2^7;
23 sbit USB_CIN=P2^6;
24 sbit KEYPAD_INT=P3^2;
25 sbit FSK_R_DATA=P3^4;
26
27 sbit P3_0=P3^0;
28 sbit P3_1=P3^1;
29 sbit P3_2=P3^2;
30 sbit P3_3=P3^3;
31 sbit P3_4=P3^4;
32 sbit P3_5=P3^5;
33 sbit P3_6=P3^6;
34 sbit P3_7=P3^7;
35
36 uchar i = 0;
37 bit temp_0 = 0;
38 bit temp_1 = 0;
39 bit temp_2 = 0;
40 bit temp_3 = 0;
41 bit temp_4 = 0;
42
43
44 char dialNum[DIALNUM_LEN];
45 uchar SumNum = 0;
46 uchar index = 0;
47 uchar ch;
48 uchar record = 0;
49 uchar temp;
50 uchar GetKey;
51 uchar key_test =0x00 ;
52 void dial(uchar dialNum);
53 void dial_all_num(void);
54 void dial_dtmf(void);
55 void send_char_com(uchar ch);
C51 COMPILER V8.15 TEST 10/28/2008 11:00:32 PAGE 2
56 void delay(unsigned int n);
57 void dial_pause(void);
58 uchar scan(void);
59
60
61
62 void init_serialcomm()
63 {
64 1 SCON=0x50; //SCON:serial mode 1,8-bit UART,enable ucvr 设置成串口1方式
65 1 TMOD|=0x20; //TMOD:timer 1,mode 2,8-bit reload 波特率发生器T1工作在模式2上
66 1
67 1 // SMOD=0
68 1 IP=0X10; //串口优先级为1
69 1 PCON|=0x00; // 波特率翻倍设置
70 1 TH1 = 0xFC; //3.579545 external osc
71 1 IE|=0x90; //Enable Serial Interrupt
72 1 TR1=1; //timer 1 run
73 1
74 1 }
75 void init_interruptcomm()
76 {
77 1 IT0 = 0; // INI0 低电平有效
78 1 IT1 = 0; // INI1 低电平有效
79 1 IE|=0x81; //Enable INI0 Interrup
80 1 IE|=0x84; //Enable INI1 Interrup
81 1 }
82
83
84 //INI0中断
85 void Int0_Routine(void) interrupt 0
86 {
87 1 if(IE0 == 1) { //INT0中断请求标志位,进入中断执行时,硬件清0
88 2 EX0 = 0; //关闭中断
89 2 delay(500); //1000
90 2 GetKey = scan();
91 2 delay(500); //1000
92 2 if(GetKey == scan())
93 2 {
94 3 if(ch != 0X00 )
95 3 {
96 4 send_char_com(GetKey);
97 4 }
98 3 }
99 2 delay(50000); //must delay 1500000,防止按一次键两次进入中断
100 2 EX0 = 1; //打开中断
101 2 //delay(1000);//add just now
102 2 }
103 1 }
104
105
106
107 //向串口发送一个字符
108 void send_char_com(uchar ch)
109 {
110 1 SBUF = ch;
111 1 while(TI==0);
112 1 TI=0;
113 1 }
114
115 //向串口发送一个字符串
116
117 void send_char_string(void)
C51 COMPILER V8.15 TEST 10/28/2008 11:00:32 PAGE 3
118 {
119 1 uchar i;
120 1 for(i=0;i<SumNum;i++)
121 1 {
122 2 SBUF = dialNum[i];
123 2 while(TI==0);
124 2 TI=0;
125 2 }
126 1
127 1 }
128
129 //串口接收中断
130
131
132 void serial() interrupt 4 using 3 //字符串!ASCD1234$以'!'开始,以'$'结束
133 {
134 1
135 1 if(RI)
136 1 {
137 2 RI=0;
138 2 ch = SBUF;
139 2
140 2 if(ch=='$')
141 2 {
142 3 record=1;
143 3 SumNum = index;
144 3 index=0;
145 3 }
146 2 else if(ch=='!')
147 2 {
148 3 record = 0;
149 3 index=0;
150 3 SumNum =0;
151 3 }
152 2 else
153 2 {
154 3 record = 0;
155 3 dialNum[index++] = ch;
156 3
157 3 }
158 2 if(record)
159 2 {
160 3 // send_char_string();
161 3 dial_all_num();
162 3 SumNum = 0 ;
163 3 record = 0;
164 3 }
165 2 }
166 1
167 1
168 1
169 1 }
170
171
172 void uart_test(void)
173 {
174 1 if(record)
175 1 {
176 2 //send_char_string();
177 2
178 2 //dial_all_num();
179 2 // send_char_string();
C51 COMPILER V8.15 TEST 10/28/2008 11:00:32 PAGE 4
180 2
181 2
182 2
183 2 SumNum = 0 ;
184 2 record = 0;
185 2 }
186 1 }
187
188
189
190 void delay(unsigned int n)
191 {
192 1 unsigned i;
193 1 i=0;
194 1 while(i<n)i++;
195 1 }
196 //各行键盘扫描
197 void port(p1m0)
198 {
199 1 uchar chTest;
200 1 P1=0;
201 1 P1M0=p1m0;
202 1 P1M1=0X00;
203 1 switch(p1m0)
204 1 {
205 2 case 0X7C:{P1_1=1; delay(100); ch=P1; //500
206 3 switch(ch){
207 4 case 0x42: chTest = 'U';break;
208 4 case 0x22: chTest = '1';break;
209 4 case 0x12: chTest = '5';break;
210 4 case 0x0A: chTest = '8';break;
211 4 case 0x06: chTest = '0';break;
212 4 default:break;
213 4 }
214 3 break; }
215 2 case 0X7A:{ P1_2=1;delay(100); ch=P1;
216 3 switch(ch){
217 4 case 0x44: chTest = 'V';break;
218 4 case 0x24: chTest = '2';break;
219 4 case 0x14: chTest = '6';break;
220 4 case 0x0C: chTest = '9';break;
221 4 case 0x06: chTest = 'F';break;
222 4 default:break;
223 4 }
224 3 break; }
225 2 case 0X76:{ P1_3=1;delay(100); ch=P1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -