📄 init.lst
字号:
C51 COMPILER V7.02b INIT 12/21/2002 22:32:37 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE INIT
OBJECT MODULE PLACED IN Init.OBJ
COMPILER INVOKED BY: D:\keil702\C51\BIN\C51.EXE Init.c OPTIMIZE(0,SPEED) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "c8051f020.h"
2 #include <intrins.h>
3
4 void Delay1us(unsigned char us)
5 {
6 1 while (us)
7 1 {
8 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
9 2 --us;
10 2 }
11 1 }
12 void SYSCLK_Init (void)
13 {
14 1 int i; // delay counter
15 1 OSCXCN = 0x67; // start external oscillator with
16 1 // 18.432MHz crystal
17 1 for (i=0; i < 256; i++) ; // Wait for osc. to start up
18 1 while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
19 1 OSCICN = 0x88; // select external oscillator as SYSCLK
20 1 // source and enable missing clock
21 1 // detector
22 1 // OSCICN = 0x07; //interal 16MHZ
23 1 }
24
25 #define PRT0CF P0MDOUT
26 #define PRT1CF P1MDOUT
27 #define PRT2CF P2MDOUT
28
29 void PORT_Init (void)
30 {
31 1 XBR0 = 0x07; // Enable SMBus, SPI0, and UART0
32 1 XBR1 = 0x00;
33 1 XBR2 = 0x44; // Enable crossbar and weak pull-ups
34 1 EMI0CF = 0x27;
35 1 EMI0TC = 0x21;
36 1 P74OUT = 0xFF;
37 1 P0MDOUT = 0x15;
38 1
39 1 P1MDOUT |= 0x3C; //P1.2-P1.5推挽输出
40 1 P1 &= 0xc3; //P1.2-P1.5=0
41 1 }
42
43 void SPI0_Init (void)
44 {
45 1 SPI0CFG = 0x07; // data sampled on 1st SCK rising edge
46 1 // 8-bit data words
47 1 SPI0CFG|=0xC0; //CKPOL =1;
48 1
49 1 SPI0CN = 0x03; // Master mode; SPI enabled; flags
50 1 // cleared
51 1 SPI0CKR = SYSCLK/2/8000000-1; // SPI clock <= 8MHz (limited by
52 1 // EEPROM spec.)
53 1 }
54 int g_Count1ms;
55 bit FlashFlag,Flag500ms;
C51 COMPILER V7.02b INIT 12/21/2002 22:32:37 PAGE 2
56 unsigned char C_1s;
57
58 unsigned char Count1ms;
59 void Timer0_Init (void)
60 {
61 1 g_Count1ms=0;
62 1 FlashFlag=0;Flag500ms=0;
63 1 CKCON|=0x8;
64 1 TMOD|=0x1; //16Bit
65 1 Count1ms=10;
66 1 TR0 = 0; // STOP Timer0
67 1 TH0 = (-SYSCLK/1000) >> 8; // set Timer0 to overflow in 1ms
68 1 TL0 = -SYSCLK/1000;
69 1 TR0 = 1; // START Timer0
70 1 IE|= 0x2;
71 1 }
72 void Timer0_ISR (void) interrupt 1 //1ms
73 {
74 1 TH0 = (-SYSCLK/1000) >> 8;
75 1 TL0 = -SYSCLK/1000;
76 1 if (Count1ms) Count1ms--;
77 1 g_Count1ms++;
78 1 if (g_Count1ms%500)
79 1 {
80 2 Flag500ms=1;
81 2 if (FlashFlag) FlashFlag=1;
82 2 else FlashFlag=0;
83 2 }
84 1 if (g_Count1ms%1000)
85 1 {
86 2 if (C_1s) C_1s--;
87 2 g_Count1ms=0;
88 2 }
89 1 }
90
91 void Delay1ms(unsigned char T)
92 {
93 1 Count1ms=T;
94 1 while (Count1ms);
95 1 }
96
97 void Delay1s(unsigned char T)
98 {
99 1 while (T)
100 1 {
101 2 Delay1ms(200);
102 2 Delay1ms(200);
103 2 Delay1ms(200);
104 2 Delay1ms(200);
105 2 Delay1ms(200);
106 2 T--;
107 2 }
108 1 }
109
110 void Test7279(bit LoopFlag);
111 void TestLCD(void);
112 void DispLED(char *buf);
113 void TestI2C (void);
114
115 void main (void)
116 {
117 1 WDTCN = 0xde;
C51 COMPILER V7.02b INIT 12/21/2002 22:32:37 PAGE 3
118 1 WDTCN = 0xad; //关看门狗
119 1 SYSCLK_Init (); //初始化时钟
120 1 Timer0_Init(); //初始化定时器
121 1 PORT_Init (); //初始化IO口
122 1 SPI0_Init (); //初始化SPI0
123 1
124 1 CPT1CN|=0x80; //使能比较器1
125 1 REF0CN = 0x03; //使能片内参考电压
126 1 DAC0CN |= 0x80; //使能DAC0
127 1 DAC0H=0; DAC0L=0;
128 1
129 1 EA=1; //开中断
130 1 Test7279(0);
131 1 TestI2C();
132 1 // TestLCD();
133 1 }
134
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 326 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 ----
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -