📄 phone.lst
字号:
C51 COMPILER V7.06 PHONE 09/27/2007 22:32:42 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE PHONE
OBJECT MODULE PLACED IN phone.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE phone.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //Copyright(C), 2007-2007, Whcsdc Tech. Co., Ltd.
2 //File name:fydefine.h
3 //Author:"杨军"
4 //Version:"2007版"
5 //Date: "2007年8月1日"
6 //Description:"定义了整个程序"
7
8 #include "fymain.h"
9
10 //"重量"
11 UBDWORD gu_Val1,gu_Val2;//"全局变量
12 //"DTMF发送"
13 sbit DATA = P2^4;
14 sbit CLK = P2^3;
15 sbit DTMF_CS = P2^5;
16 //"DTMF接收"
17 sbit DTMF_CHK = P3^5;
18 sbit OE = P3^3;
19 //"响铃"
20 sbit RING = P2^6;
21 sbit CP = P3^4;
22 //"是否在线(忙音)"
23 sbit DX_CHK = P2^7;
24 //"摘挂机"
25 sbit SW = P3^7;
26 //"无线接收信号"
27 sbit VI = P3^2;
28
29 //"CPU控制"
30 sbit CPU_PASS = P3^6;
31 sbit BEEP = P0^4;
32
33 uchar idata Check0 ;
34 uchar idata Counter0 ;
35 uchar idata Check1 ;
36 uchar idata Counter1 ;
37 uchar idata Counter3 ;
38 //uchar data wireless _at_ 0x14 ;
39 uchar data wireless;
40
41 //"bit"
42 uchar volatile bdata flag = 0;
43
44 sbit WIRELESS_FG = flag^0;
45
46
47 uchar code Table_DTMF[] =
48 {0x0a,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0d,0x0e,0x0f,0x00,0x0b,0x0c,0x1f};
49 // 0 1 2 3 4 5 6 7 8 9 A B C D * #
50 uchar code dial[] = "13720357726@";
51
52 uchar code Table_Key[] = {Key1,Key2,Key3,KeyF0,Key4,Key5,Key6,KeyF1,Key7,Key8,Key9,KeyF2,\
53 Key10,Key0,Key11,KeyF3};
54
55 void SysInit(void);
C51 COMPILER V7.06 PHONE 09/27/2007 22:32:42 PAGE 2
56 void SoftInit(void);
57 void delay(uint iCnt);
58 uchar check_DXC(void);
59 uchar check_RING(void);
60 uchar check_DV(void);
61 void checkRING_Init();
62 void checkDV_Init();
63 void checkDXC_Init();
64 void senddata_ht9200(uchar in);
65 void send_ht9200(uchar in);
66 uchar DTMF_read(void);
67 void dial_up(uchar *dial);
68 //"按键函数"
69 uchar Read_KeyBoard(void);
70 bit KeyBoard_If_Hit(void);
71 void Beep(void);
72
73 Main()
74 {
75 1 SysInit();
76 1 SoftInit();
77 1 // dial_up(dial);
78 1 while (1)
79 1 {
80 2
81 2 }
82 1
83 1 }
84
85 void SysInit(void)
86 {
87 1
88 1 }
89
90 void Beep(void)
91 {
92 1 uchar i;
93 1 BEEP = 1;
94 1
95 1 for (i = 0; i < 254; i++);
96 1
97 1 BEEP = 0;
98 1 }
99
100 void SoftInit(void)
101 {
102 1 down();
103 1 //"开中断"
104 1 IE = 0;
105 1 IT0 = 1;
106 1 ET0 = 1;
107 1 EA = 1;
108 1 Beep();
109 1 CPU_PASS = 0;
110 1 // P0= 0;
111 1 }
112
113 void dial_up(uchar *dial)
114 {
115 1 uchar len,i;
116 1 len = strlen(dial);
117 1 plunk();
C51 COMPILER V7.06 PHONE 09/27/2007 22:32:42 PAGE 3
118 1 for (i=0; i<len; i++)
119 1 {
120 2 send_ht9200((dial[i]-48));
121 2 }
122 1 }
123
124 void delay(uint iCnt)
125 {
126 1 while(iCnt--);
127 1 }
128
129
130 void senddata_ht9200(uchar in)
131 {
132 1 uchar i;
133 1 for (i=0;i<5;i++)
134 1 {
135 2 if (((in>>i)&0x01) == 1)
136 2 {
137 3 DATA = 1;
138 3 }
139 2 else
140 2 {
141 3 DATA = 0;
142 3 }
143 2 CLK = 0;
144 2 CLK = 1;
145 2 }
146 1 }
147
148 /******************************************
149 发送子程序
150 in 为要发送的数 0-15
151 ******************************************/
152 void send_ht9200(uchar in)
153 {
154 1 uchar i;
155 1 DTMF_CS = 0;
156 1 CLK = 1;
157 1 delay(6000); //delay about 6 ms
158 1 EA = 0;
159 1 senddata_ht9200(Table_DTMF[in]) ;
160 1 EA = 1 ;
161 1 for (i=0 ;i< 15;i++)
162 1 delay(6000); //delay about 100 ms
163 1 DTMF_CS = 1 ;
164 1 }
165 /*****************************************
166 DTMF 读程序
167 返回 DTMF值
168 *****************************************/
169 uchar DTMF_read(void)
170 {
171 1 uchar temp ;
172 1 uchar i ;
173 1
174 1 EA = 0 ;
175 1 P0 = 0xff ;
176 1 OE = 1 ;
177 1 ACC = ACC ;
178 1 temp = P0&0x0f ;
179 1 OE = 0 ;
C51 COMPILER V7.06 PHONE 09/27/2007 22:32:42 PAGE 4
180 1 EA = 1 ;
181 1 for (i=0;i<16;i++)
182 1 {
183 2 if (temp == Table_DTMF[i])
184 2 return i ;
185 2 }
186 1 return(0xff) ;
187 1 }
188
189 /******************************************
190 初始化检测程序
191 ******************************************/
192 void checkRING_Init()
193 {
194 1 Check0 = 2 ;
195 1 Counter0 = 20 ;
196 1 }
197
198 void checkDV_Init()
199 {
200 1 Check1 = 2;
201 1 Counter1 = 20;
202 1 }
203
204 void checkDXC_Init()
205 {
206 1 /* Check3 = 2 ;*/
207 1 Counter3 = 20 ;
208 1 }
209
210 /***************************************
211 检测有无振铃RING 程序
212 返回 TRUE :有
213 FALSE:无
214 ***************************************/
215 uchar check_RING(void) //
216 {
217 1 uchar flag ;
218 1 flag = RING ; //check RING
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -