📄 repeater.lst
字号:
C51 COMPILER V7.50 REPEATER 11/09/2006 12:44:08 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE REPEATER
OBJECT MODULE PLACED IN repeater.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE repeater.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //CPU:C8051F330
2 //FUNCTION: microrepeater programe for select band
3 /// there are eight key to select frequency
4 //time 2006-7-4
5
6
7 #include "c8051f330.h"
8 #include "main.h"
9
10
11
12
13
14 //define bit
15 sbit PLL_DATA = P0^5;
16 sbit PLL_CLK = P0^4;
17 sbit PLL_LE = P0^6;
18 sbit muxdut = P0^7;
19
20 // Peripheral specific initialization functions,
21 // Called from the Init_Device() function
22 void Reset_Sources_Init()
23 {
24 1 int i = 0;
25 1 VDM0CN = 0x80;
26 1 for (i = 0; i < 350; i++); // Wait 100us for initialization
27 1 RSTSRC = 0x06;
28 1 }
29
30 void PCA_Init()
31 {
32 1 PCA0MD &= ~0x40;
33 1 PCA0MD = 0x02;
34 1 PCA0CPL2 = 0xff;
35 1
36 1 }
37
38 void Port_IO_Init()
39 {
40 1 // P0.0 - Unassigned, Open-Drain, Digital
41 1 // P0.1 - Unassigned, Open-Drain, Digital
42 1 // P0.2 - Unassigned, Open-Drain, Digital
43 1 // P0.3 - Unassigned, Open-Drain, Digital
44 1 // P0.4 - Unassigned, Push-Pull, Digital
45 1 // P0.5 - Unassigned, Push-Pull, Digital
46 1 // P0.6 - Unassigned, Push-Pull, Digital
47 1 // P0.7 - Unassigned, Open-Drain, Digital
48 1
49 1 // P1.0 - Unassigned, Open-Drain, Digital
50 1 // P1.1 - Unassigned, Open-Drain, Digital
51 1 // P1.2 - Unassigned, Open-Drain, Digital
52 1 // P1.3 - Unassigned, Open-Drain, Digital
53 1 // P1.4 - Unassigned, Open-Drain, Digital
54 1 // P1.5 - Unassigned, Open-Drain, Digital
55 1 // P1.6 - Unassigned, Open-Drain, Digital
C51 COMPILER V7.50 REPEATER 11/09/2006 12:44:08 PAGE 2
56 1 // P1.7 - Unassigned, Open-Drain, Digital
57 1
58 1 P0MDOUT = 0x70;
59 1 // P1MDIN = 0x00;
60 1 XBR1 = 0xC0;
61 1
62 1 }
63
64 void Oscillator_Init()
65 {
66 1 OSCICN = 0x82;
67 1 }
68 /*
69 void Timer_Init()
70 {
71 TMR2CN = 0x20;
72 TMR2RLL = 0x00;
73 TMR2RLH = 0x00;
74 TMR2L = 0x0f;
75 TMR2H = 0x00;
76 }
77 */
78 /*
79 void Interrupts_Init()
80 {
81 IE = 0xA0;
82 }
83 */
84 // Initialization function for device,
85 // Call Init_Device() from your main program
86 void Init_Device(void)
87 {
88 1 Reset_Sources_Init();
89 1 PCA_Init();
90 1 Port_IO_Init();
91 1 Oscillator_Init();
92 1 // Timer_Init();
93 1 //Interrupts_Init();
94 1 }
95
96
97
98 /************************************************************************************/
99 /*FNCTION:PLL CONTROL */
100 /************************************************************************************/
101 //PLL send data
102 void send_data(unsigned long PLL_REGG)
103 {
104 1 unsigned char i;
105 1 for (i=0;i<21;i++)
106 1 {
107 2 PLL_CLK = 1;
108 2 if ((PLL_REGG & 0X100000) ==0)
109 2 {
110 3 PLL_DATA = 0;
111 3 }
112 2 else
113 2 {
114 3 PLL_DATA = 1;
115 3 }
116 2 PLL_CLK = 0;
117 2 PLL_REGG = PLL_REGG << 1;
C51 COMPILER V7.50 REPEATER 11/09/2006 12:44:08 PAGE 3
118 2 }
119 1 PLL_CLK = 1;
120 1 }
121
122 //PLL data prepare
123 void prepare_PLL(unsigned long freqq,unsigned long *AB_REG)
124 {
125 1 unsigned long B;
126 1 unsigned int A;
127 1 B = freqq / 32;
128 1 A = freqq % 32;
129 1 A = A << 2;
130 1 A= A & 0x7c;
131 1 B= B <<7;
132 1 B= B & 0xfff80;
133 1 *AB_REG= 0x1;
134 1 *AB_REG= A + B +*AB_REG;
135 1 }
136
137
138 //-----------------------------------------------------------------------------
139 // Timer2_Init SYSCLK no Interrupt
140 //-----------------------------------------------------------------------------
141 //
142 // Configure Timer2 to auto-reload at interval specified by <counts> (no
143 // interrupt generated) using SYSCLK as its time base.
144 //
145 /*
146 void t2ISR() interrupt 5
147 {
148 TMR2CN &= ~BIT7;
149 PCA0CPH2 = 0X55;
150
151 }
152 */
153
154 unsigned char chang_high_to_low(unsigned char key_data)
155 {
156 1 unsigned char i,j;
157 1 PCA0MD &= ~0x40;
158 1 for (i=0;i<8;i++)
159 1 {
160 2 j = j << 1;
161 2 if ((key_data & 0x01) ==0)
162 2 {
163 3 j &= ~BIT0;
164 3 }
165 2 else
166 2 {
167 3 j |= BIT0;
168 3 }
169 2 key_data = key_data >> 1;
170 2 }
171 1 PCA0MD |= 0x40;
172 1 return(j);
173 1 }
174 void delay(unsigned char i)
175 {
176 1 unsigned char j,k;
177 1 for (j=0;j<i;j++)
178 1 {
179 2 for (k=0;k<i;k++)
C51 COMPILER V7.50 REPEATER 11/09/2006 12:44:08 PAGE 4
180 2 {
181 3 ;
182 3 }
183 2 PCA0CPH2 = 0X55;
184 2 }
185 1 }
186 //main function
187 void main()
188 {
189 1 unsigned char key_in,key_old = 0xff;
190 1 unsigned long freq;
191 1 unsigned long PLL_REG[3]={0x0093,0x0200,0x0000};
192 1 unsigned long *PLL_point;
193 1 unsigned char j,i=0,num_mark=0;
194 1 PCA0MD &= ~0x40;
195 1 Init_Device();
196 1 PLL_point = &PLL_REG;
197 1 //TMR2CN |= BIT2;
198 1 num_mark = 0;
199 1 key_old = 0xff;
200 1 for(;;)
201 1 {
202 2 PCA0MD |= 0x40;
203 2 PCA0CPH2 = 0X55;
204 2 key_in = ~P1;
205 2 key_in = chang_high_to_low(key_in);
206 2 freq = FREQ_BASE + key_in;
207 2 if (key_in != key_old)
208 2 {
209 3 PCA0MD &= ~0x40;
210 3 i=0xff;
211 3 prepare_PLL(freq,(PLL_point+2));
212 3
213 3 for(j=0;j<3;j++)
214 3 {
215 4 PLL_LE = 0;
216 4 send_data(PLL_REG[j]);
217 4 PLL_LE = 1;
218 4 PLL_LE = 0;
219 4 }
220 3 PCA0MD |= 0x40;
221 3 num_mark = 0;
222 3 key_old = key_in;
223 3 PCA0CPH2 = 0X55;
224 3
225 3 }
226 2 delay(100);
227 2 // if ( (muxdut == 0) )
228 2 if ( (muxdut == 0) &&(num_mark == 0x00) )
229 2 {
230 3 PCA0MD &= ~0x40;
231 3 prepare_PLL(freq,(PLL_point+2));
232 3
233 3 for(j=0;j<3;j++)
234 3 {
235 4 PLL_LE = 0;
236 4 send_data(PLL_REG[j]);
237 4 PLL_LE = 1;
238 4 PLL_LE = 0;
239 4 }
240 3 PCA0MD |= 0x40;
241 3 PCA0CPH2 = 0X55;
C51 COMPILER V7.50 REPEATER 11/09/2006 12:44:08 PAGE 5
242 3 i = i+1;
243 3 }
244 2 PCA0CPH2 = 0X55;
245 2 delay(255);
246 2 if (i >10)
247 2 {
248 3 num_mark = 0xff;
249 3 }
250 2 }
251 1
252 1
253 1
254 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 580 ----
CONSTANT SIZE = 12 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 42
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -