📄 020_initialize.lst
字号:
184 =1 sbit SI = SMB0CN ^ 3; /* SMBUS 0 INTERRUPT PENDING FLAG */
185 =1 sbit AA = SMB0CN ^ 2; /* SMBUS 0 ASSERT/ACKNOWLEDGE FLAG */
186 =1 sbit SMBFTE = SMB0CN ^ 1; /* SMBUS 0 FREE TIMER ENABLE */
187 =1 sbit SMBTOE = SMB0CN ^ 0; /* SMBUS 0 TIMEOUT ENABLE */
188 =1
189 =1 /* T2CON 0xC8 */
190 =1 sbit TF2 = T2CON ^ 7; /* TIMER 2 OVERFLOW FLAG */
191 =1 sbit EXF2 = T2CON ^ 6; /* EXTERNAL FLAG */
192 =1 sbit RCLK0 = T2CON ^ 5; /* UART0 RX CLOCK SOURCE */
193 =1 sbit TCLK0 = T2CON ^ 4; /* UART0 TX CLOCK SOURCE */
194 =1 sbit EXEN2 = T2CON ^ 3; /* TIMER 2 EXTERNAL ENABLE FLAG */
195 =1 sbit TR2 = T2CON ^ 2; /* TIMER 2 ON/OFF CONTROL */
196 =1 sbit CT2 = T2CON ^ 1; /* TIMER OR COUNTER SELECT */
197 =1 sbit CPRL2 = T2CON ^ 0; /* CAPTURE OR RELOAD SELECT */
198 =1
199 =1 /* PSW */
200 =1 sbit CY = PSW ^ 7; /* CARRY FLAG */
201 =1 sbit AC = PSW ^ 6; /* AUXILIARY CARRY FLAG */
202 =1 sbit F0 = PSW ^ 5; /* USER FLAG 0 */
203 =1 sbit RS1 = PSW ^ 4; /* REGISTER BANK SELECT 1 */
204 =1 sbit RS0 = PSW ^ 3; /* REGISTER BANK SELECT 0 */
205 =1 sbit OV = PSW ^ 2; /* OVERFLOW FLAG */
206 =1 sbit F1 = PSW ^ 1; /* USER FLAG 1 */
207 =1 sbit P = PSW ^ 0; /* ACCUMULATOR PARITY FLAG */
208 =1
209 =1 /* PCA0CN D8H */
210 =1 sbit CF = PCA0CN ^ 7; /* PCA 0 COUNTER OVERFLOW FLAG */
211 =1 sbit CR = PCA0CN ^ 6; /* PCA 0 COUNTER RUN CONTROL BIT */
212 =1 sbit CCF4 = PCA0CN ^ 4; /* PCA 0 MODULE 4 INTERRUPT FLAG */
213 =1 sbit CCF3 = PCA0CN ^ 3; /* PCA 0 MODULE 3 INTERRUPT FLAG */
214 =1 sbit CCF2 = PCA0CN ^ 2; /* PCA 0 MODULE 2 INTERRUPT FLAG */
215 =1 sbit CCF1 = PCA0CN ^ 1; /* PCA 0 MODULE 1 INTERRUPT FLAG */
216 =1 sbit CCF0 = PCA0CN ^ 0; /* PCA 0 MODULE 0 INTERRUPT FLAG */
217 =1
218 =1 /* ADC0CN E8H */
219 =1 sbit AD0EN = ADC0CN ^ 7; /* ADC 0 ENABLE */
220 =1 sbit AD0TM = ADC0CN ^ 6; /* ADC 0 TRACK MODE */
221 =1 sbit AD0INT = ADC0CN ^ 5; /* ADC 0 CONVERISION COMPLETE INTERRUPT FLAG */
222 =1 sbit AD0BUSY = ADC0CN ^ 4; /* ADC 0 BUSY FLAG */
223 =1 sbit AD0CM1 = ADC0CN ^ 3; /* ADC 0 START OF CONVERSION MODE BIT 1 */
224 =1 sbit AD0CM0 = ADC0CN ^ 2; /* ADC 0 START OF CONVERSION MODE BIT 0 */
225 =1 sbit AD0WINT = ADC0CN ^ 1; /* ADC 0 WINDOW COMPARE INTERRUPT FLAG */
226 =1 sbit AD0LJST = ADC0CN ^ 0; /* ADC 0 RIGHT JUSTIFY DATA BIT */
227 =1
228 =1 /* SPI0CN F8H */
229 =1 sbit SPIF = SPI0CN ^ 7; /* SPI 0 INTERRUPT FLAG */
230 =1 sbit WCOL = SPI0CN ^ 6; /* SPI 0 WRITE COLLISION FLAG */
231 =1 sbit MODF = SPI0CN ^ 5; /* SPI 0 MODE FAULT FLAG */
232 =1 sbit RXOVRN = SPI0CN ^ 4; /* SPI 0 RX OVERRUN FLAG */
233 =1 sbit TXBSY = SPI0CN ^ 3; /* SPI 0 TX BUSY FLAG */
234 =1 sbit SLVSEL = SPI0CN ^ 2; /* SPI 0 SLAVE SELECT */
235 =1 sbit MSTEN = SPI0CN ^ 1; /* SPI 0 MASTER ENABLE */
236 =1 sbit SPIEN = SPI0CN ^ 0; /* SPI 0 SPI ENABLE */
C51 COMPILER V7.50 020_INITIALIZE 05/07/2007 10:34:34 PAGE 5
237 =1 #endif //_C8051F020_H_
6 //#include "ram_manage.h"
7
8 // Peripheral specific initialization functions,
9 // Called from the Init_Device() function
10 #define CRYSTAL_FREQUENCY 22118400
11 #define T0_INT_TIMES_PER_SEC 10
12 #define T3_INT_TIMES_PER_SEC 30
13 void Reset_Sources_Init()
14 {
15 1 WDTCN = 0xDE;
16 1 WDTCN = 0xAD;
17 1 }
18
19 void Timer_Init()
20 {
21 1 CKCON = 0x20;
22 1 TCON = 0x50;
23 1 TMOD = 0x21;
24 1 TH0 = 0x38;
25 1 TH1 = 0xFB;
26 1 TMR3CN = 0x04;
27 1 TMR3RLH = 0x10;
28 1 TMR3H = 0x10;
29 1 //中断次数设定
30 1 TH0 = ( 65536 - (CRYSTAL_FREQUENCY/12/T0_INT_TIMES_PER_SEC) ) / 256;
31 1 TL0 = ( 65536 - (CRYSTAL_FREQUENCY/12/T0_INT_TIMES_PER_SEC) ) % 256;
32 1
33 1 TMR3RLL = ( 65536 - (CRYSTAL_FREQUENCY/12/T3_INT_TIMES_PER_SEC) ) % 256;
34 1 TMR3RLH = ( 65536 - (CRYSTAL_FREQUENCY/12/T3_INT_TIMES_PER_SEC) ) / 256;
35 1 TMR3L = ( 65536 - (CRYSTAL_FREQUENCY/12/T3_INT_TIMES_PER_SEC) ) % 256;
36 1 TMR3H = ( 65536 - (CRYSTAL_FREQUENCY/12/T3_INT_TIMES_PER_SEC) ) / 256;
37 1 }
38
39 void UART_Init()
40 {
41 1 SCON0 = 0x50;
42 1 SCON1 = 0x50;
43 1 }
44
45 void SPI_Init()
46 {
47 1 SPI0CFG = 0xC0;
48 1 SPI0CN = 0x03;
49 1 SPI0CKR = 0x4F;
50 1 }
51
52 void Port_IO_Init()
53 {
54 1 // P0.0 - TX0 (UART0), Push-Pull, Digital
55 1 // P0.1 - RX0 (UART0), Push-Pull, Digital
56 1 // P0.2 - SCK (SPI0), Push-Pull, Digital
57 1 // P0.3 - MISO (SPI0), Push-Pull, Digital
58 1 // P0.4 - MOSI (SPI0), Push-Pull, Digital
59 1 // P0.5 - NSS (SPI0), Push-Pull, Digital
60 1 // P0.6 - SDA (SMBus), Push-Pull, Digital
61 1 // P0.7 - SCL (SMBus), Push-Pull, Digital
62 1
63 1 // P1.0 - TX1 (UART1), Push-Pull, Digital
64 1 // P1.1 - RX1 (UART1), Push-Pull, Digital
65 1 // P1.2 - INT0 (Tmr0), Push-Pull, Digital
66 1 // P1.3 - Unassigned, Push-Pull, Digital
C51 COMPILER V7.50 020_INITIALIZE 05/07/2007 10:34:34 PAGE 6
67 1 // P1.4 - Unassigned, Push-Pull, Digital
68 1 // P1.5 - Unassigned, Push-Pull, Digital
69 1 // P1.6 - Unassigned, Push-Pull, Digital
70 1 // P1.7 - Unassigned, Push-Pull, Digital
71 1
72 1 // P2.0 - Unassigned, Push-Pull, Digital
73 1 // P2.1 - Unassigned, Push-Pull, Digital
74 1 // P2.2 - Unassigned, Push-Pull, Digital
75 1 // P2.3 - Unassigned, Push-Pull, Digital
76 1 // P2.4 - Unassigned, Push-Pull, Digital
77 1 // P2.5 - Unassigned, Push-Pull, Digital
78 1 // P2.6 - Unassigned, Push-Pull, Digital
79 1 // P2.7 - Unassigned, Push-Pull, Digital
80 1
81 1 // P3.0 - Unassigned, Push-Pull, Digital
82 1 // P3.1 - Unassigned, Push-Pull, Digital
83 1 // P3.2 - Unassigned, Push-Pull, Digital
84 1 // P3.3 - Unassigned, Push-Pull, Digital
85 1 // P3.4 - Unassigned, Push-Pull, Digital
86 1 // P3.5 - Unassigned, Push-Pull, Digital
87 1 // P3.6 - Unassigned, Push-Pull, Digital
88 1 // P3.7 - Unassigned, Push-Pull, Digital
89 1
90 1 P0MDOUT = 0xFF;
91 1 P1MDOUT = 0xFF;
92 1 P2MDOUT = 0xFF;
93 1 P3MDOUT = 0xFF;
94 1 P74OUT = 0xE0;
95 1 XBR0 = 0x07;
96 1 XBR1 = 0x04;
97 1 XBR2 = 0x44;
98 1 }
99
100 void Oscillator_Init()
101 {
102 1 int i = 0;
103 1 OSCXCN = 0x67;
104 1 for (i = 0; i < 3000; i++); // Wait 1ms for initialization
105 1 while ((OSCXCN & 0x80) == 0);
106 1 OSCICN = 0x0F;
107 1 }
108
109 void Interrupts_Init()
110 {
111 1 IE = 0x92;
112 1 EIE2 = 0x01;
113 1 }
114
115 // Initialization function for device,
116 // Call Init_Device() from your main program
117 void Init_Device(void)
118 {
119 1 Reset_Sources_Init();
120 1 Timer_Init();
121 1 UART_Init();
122 1 SPI_Init();
123 1 Port_IO_Init();
124 1 Oscillator_Init();
125 1 Interrupts_Init();
126 1 }
C51 COMPILER V7.50 020_INITIALIZE 05/07/2007 10:34:34 PAGE 7
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION Reset_Sources_Init (BEGIN)
; SOURCE LINE # 13
; SOURCE LINE # 14
; SOURCE LINE # 15
0000 75FFDE MOV WDTCN,#0DEH
; SOURCE LINE # 16
0003 75FFAD MOV WDTCN,#0ADH
; SOURCE LINE # 17
0006 22 RET
; FUNCTION Reset_Sources_Init (END)
; FUNCTION Timer_Init (BEGIN)
; SOURCE LINE # 19
; SOURCE LINE # 20
; SOURCE LINE # 21
0000 758E20 MOV CKCON,#020H
; SOURCE LINE # 22
0003 758850 MOV TCON,#050H
; SOURCE LINE # 23
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -