📄 main.lst
字号:
C51 COMPILER V6.23a MAIN 12/19/2002 16:43:10 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE main.c DB OE
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
13 void SYSCLK_Init (void)
14 {
15 1 int i; // delay counter
16 1 OSCXCN = 0x67; // start external oscillator with
17 1 // 18.432MHz crystal
18 1 for (i=0; i < 256; i++) ; // Wait for osc. to start up
19 1 while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
20 1 OSCICN = 0x88; // select external oscillator as SYSCLK
21 1 // source and enable missing clock
22 1 // detector
23 1 // OSCICN = 0x07; //interal 16MHZ
24 1 }
25
26 #define PRT0CF P0MDOUT
27 #define PRT1CF P1MDOUT
28 #define PRT2CF P2MDOUT
29
30 void PORT_Init (void)
31 {
32 1 XBR0 = 0x07; // Enable SMBus, SPI0, and UART0
33 1 XBR1 = 0x00;
34 1 XBR2 = 0x44; // Enable crossbar and weak pull-ups
35 1 EMI0CF = 0x27;
36 1 EMI0TC = 0x21;
37 1 P74OUT = 0xFF;
38 1 P0MDOUT = 0x15;
39 1
40 1 P1MDOUT |= 0x3C; //P1.2-P1.5推挽输出
41 1 P1 &= 0xc3; //P1.2-P1.5=0
42 1 }
43
44 void SPI0_Init (void)
45 {
46 1 SPI0CFG = 0x07; // data sampled on 1st SCK rising edge
47 1 // 8-bit data words
48 1 SPI0CFG|=0xC0; //CKPOL =1;
49 1
50 1 SPI0CN = 0x03; // Master mode; SPI enabled; flags
51 1 // cleared
52 1 SPI0CKR = SYSCLK/2/8000000-1; // SPI clock <= 8MHz (limited by
53 1 // EEPROM spec.)
54 1 }
55
C51 COMPILER V6.23a MAIN 12/19/2002 16:43:10 PAGE 2
56 unsigned char Count1ms;
57 void Timer0_Init (void)
58 {
59 1 CKCON|=0x8;
60 1 TMOD|=0x1; //16Bit
61 1 Count1ms=10;
62 1 TR0 = 0; // STOP Timer0
63 1 TH0 = (-SYSCLK/1000) >> 8; // set Timer0 to overflow in 1ms
64 1 TL0 = -SYSCLK/1000;
65 1 TR0 = 1; // START Timer0
66 1 IE|= 0x2;
67 1 }
68
69 void Timer0_ISR (void) interrupt 1 //1ms
70 {
71 1 TH0 = (-SYSCLK/1000) >> 8;
72 1 TL0 = -SYSCLK/1000;
73 1 if (Count1ms) Count1ms--;
74 1 }
75
76 void Delay1ms(unsigned char T)
77 {
78 1 Count1ms=T;
79 1 while (Count1ms);
80 1 }
81
82 void Delay1s(unsigned char T)
83 {
84 1 while (T)
85 1 {
86 2 Delay1ms(200);
87 2 Delay1ms(200);
88 2 Delay1ms(200);
89 2 Delay1ms(200);
90 2 Delay1ms(200);
91 2 T--;
92 2 }
93 1 }
94 char GetKeyValue(void);
95 void Test7279(bit LoopFlag);
96 void init_adc(void);
97 unsigned int GetADCValue(char No);
98 void DispLED(char *DispBuf,char ShowDot); //ShowDot 显示小数点位
99 void main (void)
100 {
101 1 unsigned int w;
102 1 char No,i,buf[6];
103 1 No=1;
104 1 WDTCN = 0xde;
105 1 WDTCN = 0xad; //关看门狗
106 1 SYSCLK_Init (); //初始化时钟
107 1 Timer0_Init(); //初始化定时器
108 1 PORT_Init (); //初始化IO口
109 1 SPI0_Init (); //初始化SPI0
110 1 init_adc();
111 1 CPT1CN|=0x80; //使能比较器1
112 1 REF0CN = 0x07; //使能片内参考电压
113 1 DAC0CN |= 0x80; //使能DAC0
114 1 DAC0H=0; DAC0L=0;
115 1
116 1 EA=1; //开中断
117 1
C51 COMPILER V6.23a MAIN 12/19/2002 16:43:10 PAGE 3
118 1 Test7279(0);
119 1 w = GetADCValue(1);
120 1 for (;;)
121 1 {
122 2 i=GetKeyValue();
123 2 if ((i>=1)&&(i<=3))
124 2 No=i;
125 2 Delay1ms(250);
126 2 buf[0]=No;
127 2 buf[1]=' ';
128 2 buf[2]=(w%10000)/1000;
129 2 buf[3]=(w%1000)/100;
130 2 buf[4]=(w%100)/10;
131 2 buf[5]=(w%10);
132 2 if (No==2)
133 2 DispLED(buf,3);
134 2 else
135 2 DispLED(buf,4);
136 2 w = GetADCValue(No);
137 2 }
138 1
139 1 }
140
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 360 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 9
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 + -