📄 lcd.lst
字号:
C51 COMPILER V7.09 LCD 11/10/2008 14:57:44 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: C:\SiLabs\MCU\IDEfiles\C51\BIN\C51.exe lcd.c DB OE
line level source
1 #include "c8051f040.h"
2 #include <intrins.h> // 液晶点阵显示试验 -128*64,控制器DM12864I
3 #include "STDIO.h"
4 #include "ADC.h"
5 #include "const.h"
*** WARNING C317 IN LINE 85 OF const.h: attempt to redefine macro 'SYSCLK'
6 unsigned int result[9];
7 void Delay1us(unsigned char);
8 void Delay1ms(unsigned char);
9 void Delay1s(unsigned char T);
10 void ADC0_Init (void)
11 {
12 1 char SFRPAGE_SAVE = SFRPAGE; // 保存当前SFRPAGE
13 1 SFRPAGE = LEGACY_PAGE; // 改变页
14 1
15 1 REF0CN = 0x07;
16 1
17 1 SFRPAGE = ADC0_PAGE; // 改变页
18 1 ADC0CF = 0x10;
19 1 ADC0CN = 0xC0;
20 1 AMX0SL = 0x00; // 选择AIN0作为ADC mux输出
21 1 //ADC0CF = (SYSCLK/2500000) << 3; // ADC转换时钟= 2.5MHz
22 1 //ADC0CF &= ~0x07; // PGA gain = 1
23 1
24 1 SFRPAGE = SFRPAGE_SAVE; // 恢复SFRPAGE
25 1 }
26
27 void ADC0_Conver (void)
28 {
29 1 unsigned char i; // ADC mux 通道 (0-8)
30 1 unsigned int data temp;
31 1 char SFRPAGE_SAVE = SFRPAGE; // 保存当前SFRPAGE
32 1 SFRPAGE = ADC0_PAGE; // 改变页
33 1
34 1 for (i=0;i<9;i++)
35 1 {
36 2 AMX0SL = i; // 设置mux到通道
37 2 Delay1ms(1);
38 2 AD0INT = 0; // 清除ADC转换完成标志
39 2 AD0BUSY = 1;
40 2 while (!AD0INT);
41 2 temp = ADC0H;
42 2 temp = temp*256 + ADC0L;
43 2 result[i] = temp; // 读ADC值
44 2 }
45 1
46 1 SFRPAGE = SFRPAGE_SAVE; // 恢复SFRPAGE
47 1 }
48 void Timer_Init()
49 {
50 1 SFRPAGE = TMR3_PAGE;
51 1 TMR3CN = 0x04;
52 1 TMR3CF = 0x08;
53 1 RCAP3L = 0x60;
54 1 RCAP3H = 0xFF;
C51 COMPILER V7.09 LCD 11/10/2008 14:57:44 PAGE 2
55 1 }
56 void UART_Init()
57 {
58 1 SFRPAGE = UART0_PAGE;
59 1 SCON0 = 0x50;
60 1 SSTA0 = 0x1A;
61 1 ES0=0;
62 1 PS=0;
63 1 TI0=1;
64 1 RI0=0;
65 1 }
66 void Port_IO_Init()
67 {
68 1 // P0.0 - TX0 (UART0), Open-Drain, Digital
69 1 // P0.1 - RX0 (UART0), Open-Drain, Digital
70 1 // P0.2 - Unassigned, Open-Drain, Digital
71 1 // P0.3 - Unassigned, Open-Drain, Digital
72 1 // P0.4 - Unassigned, Open-Drain, Digital
73 1 // P0.5 - Unassigned, Open-Drain, Digital
74 1 // P0.6 - Unassigned, Open-Drain, Digital
75 1 // P0.7 - Unassigned, Open-Drain, Digital
76 1
77 1 // P1.0 - Unassigned, Open-Drain, Digital
78 1 // P1.1 - Unassigned, Open-Drain, Digital
79 1 // P1.2 - Unassigned, Open-Drain, Digital
80 1 // P1.3 - Unassigned, Open-Drain, Digital
81 1 // P1.4 - Unassigned, Open-Drain, Digital
82 1 // P1.5 - Unassigned, Open-Drain, Digital
83 1 // P1.6 - Unassigned, Open-Drain, Digital
84 1 // P1.7 - Unassigned, Open-Drain, Digital
85 1
86 1 // P2.0 - Unassigned, Open-Drain, Digital
87 1 // P2.1 - Unassigned, Open-Drain, Digital
88 1 // P2.2 - Unassigned, Open-Drain, Digital
89 1 // P2.3 - Unassigned, Open-Drain, Digital
90 1 // P2.4 - Unassigned, Open-Drain, Digital
91 1 // P2.5 - Unassigned, Open-Drain, Digital
92 1 // P2.6 - Unassigned, Open-Drain, Digital
93 1 // P2.7 - Unassigned, Open-Drain, Digital
94 1
95 1 // P3.0 - Unassigned, Open-Drain, Digital
96 1 // P3.1 - Unassigned, Open-Drain, Digital
97 1 // P3.2 - Unassigned, Open-Drain, Digital
98 1 // P3.3 - Unassigned, Open-Drain, Digital
99 1 // P3.4 - Unassigned, Open-Drain, Digital
100 1 // P3.5 - Unassigned, Open-Drain, Digital
101 1 // P3.6 - Unassigned, Open-Drain, Digital
102 1 // P3.7 - Unassigned, Open-Drain, Digital
103 1 // 保存当前SFRPAGE
104 1 SFRPAGE = CONFIG_PAGE; // 改变页
105 1
106 1 //交叉开关配置
107 1 XBR0 = 0x04;
108 1 XBR1 = 0x00;
109 1 XBR2 = 0x40;
110 1 // P0 口分配状况
111 1 // P0.0 = UART0 TX
112 1 // P0.1 = UART0 RX
113 1
114 1 //输出方式
115 1 P5MDOUT = 0xf0;
116 1 }
C51 COMPILER V7.09 LCD 11/10/2008 14:57:44 PAGE 3
117 void Oscillator_Init()
118 {
119 1 SFRPAGE = CONFIG_PAGE;
120 1 OSCICN = 0x83;
121 1 }
122 void Delay1us(unsigned char T)
123 { while(T){
124 2 T--;
125 2 }
126 1 }
127 void Delay1ms(unsigned char T)
128 {
129 1 while (T)
130 1 {
131 2 Delay1us(200);
132 2 Delay1us(200);
133 2 Delay1us(200);
134 2 Delay1us(200);
135 2 Delay1us(200);
136 2 T--;
137 2 }
138 1 }
139 void Delay1s(unsigned char T)
140 {
141 1 while (T)
142 1 {
143 2 Delay1ms(200);
144 2 Delay1ms(200);
145 2 Delay1ms(200);
146 2 Delay1ms(200);
147 2 Delay1ms(200);
148 2 T--;
149 2 }
150 1 }
151 void main(){
152 1 unsigned int i;
153 1 float voltage;
154 1 unsigned int tp;
155 1 Oscillator_Init();
156 1 WDTCN=0xDE; //禁止看门狗定时器
157 1 WDTCN=0xAD;
158 1 Port_IO_Init();
159 1 Timer_Init();
160 1 UART_Init();
161 1 ADC0_Init();
162 1 while(1)
163 1 {
164 2 Delay1ms(2000);
165 2 ADC0_Conver();
166 2
167 2 SFRPAGE = UART0_PAGE; // 改变页
168 2 printf("\n");
169 2 SFRPAGE = CONFIG_PAGE; // 改变页
170 2
171 2 for (i=0;i<9;i++)
172 2 {
173 3 voltage=result[i]*2430.0/4095;
174 3 tp = voltage;
175 3 switch(i)
176 3 {
177 4 case 8:
178 4 voltage=(tp-776)/2.86;
C51 COMPILER V7.09 LCD 11/10/2008 14:57:44 PAGE 4
179 4 tp = voltage;
180 4 SFRPAGE = UART0_PAGE; // 改变页
181 4 printf ("Chip temperature is %d\n",tp);
182 4 SFRPAGE = CONFIG_PAGE; // 改变页
183 4 break;
184 4 default:
185 4 SFRPAGE = UART0_PAGE; // 改变页
186 4 printf ("Channel %d voltage is %dmV\n",i,tp);
187 4 SFRPAGE = CONFIG_PAGE; // 改变页
188 4 break;
189 4 }
190 3 }
191 2 }
192 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 420 ----
CONSTANT SIZE = 54 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 18 10
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -