?? wadc0.lst
字號(hào):
C51 COMPILER V7.05 WADC0 02/14/2006 08:37:38 PAGE 1
C51 COMPILER V7.05, COMPILATION OF MODULE WADC0
OBJECT MODULE PLACED IN WADC0.OBJ
COMPILER INVOKED BY: C:\SiLabs\MCU\IDEfiles\C51\BIN\C51.exe WADC0.c DB OE
stmt level source
1 //參考程序B.WADC0.c程序模/數(shù)轉(zhuǎn)化通道AIN0.0的輸入值,數(shù)碼管顯示兩位16進(jìn)制數(shù).
2 //測(cè)試前將S6的第一撥碼開(kāi)關(guān)撥到ON
3 #include <c8051f020.h>
4 sfr16 TMR3RL = 0x92;
5 sfr16 TMR3 = 0x94;
6 sfr16 ADC0 = 0xbe;
7 #define SYSCLK 2000000
8 bit LCDBit;
9 unsigned long x;
10 void PORT_Init (void);
11 void Timer3_Init (int counts);
12 void ADC_Init(void);
13 void ADC_ISR (void);
14 void LCD_Init(void);
15 void main (void) {
16 1 unsigned char data1,i;
17 1 unsigned char *lcdpoint; //指向 lcddata數(shù)組的指針
18 1 unsigned char ADC0Data[10]={0x0a,0x0d,0x0c,0x00,0x68,0x68};
19 1 WDTCN = 0xde;
20 1 WDTCN = 0xad; //禁止看門狗定時(shí)器
21 1 LCDBit=0;
22 1 // PORT_Init();
23 1 LCD_Init();
24 1 Timer3_Init (SYSCLK / 12 /5 );
25 1 ADC_Init();
26 1 EA = 1;
27 1 AMX0SL =0x00; //選擇通道0
28 1 for(x=0;x<=50000;x++);
29 1 /*
30 1 AMX0SL =0x01; //選擇通道1
31 1 for(i=0;i<=50000;i++);
32 1 AMX0SL =0x02; //選擇通道2
33 1 for(i=0;i<=50000;i++);
34 1 AMX0SL =0x03; //選擇通道3
35 1 */
36 1 while (1)
37 1 {
38 2 if(LCDBit==1){
39 3 TMR3CN &= 0xfb; //關(guān)定時(shí)器3
40 3 LCDBit=0; //清LCD顯示位
41 3 P7 = 0x02; //LCD指針?lè)祷爻跏嘉恢? 42 3 P6 = 0x0;
43 3 P6 = 0x1;
44 3 ADC0Data[9]=ADC0&0x0f; //將A/D轉(zhuǎn)化值存到顯示數(shù)組
45 3 ADC0Data[8]=(ADC0>>4)&0x0f;
46 3 ADC0Data[7]=(ADC0>>8)&0x0f;
47 3 ADC0Data[6]=(ADC0>>12)&0x0f;
48 3 P6 = 0x05; //準(zhǔn)備送數(shù)據(jù)
49 3 for(x=0;x<5000;x++);
50 3 lcdpoint = &ADC0Data;
51 3 for(i=10;i>0;i--) //顯示第一行字符
52 3 {
53 4 data1=*lcdpoint;
54 4 if(data1>=0x0a) data1 += 0x37; //將顯示數(shù)據(jù)轉(zhuǎn)化為液晶的顯示字符碼
55 4 else data1 += 0x30;
C51 COMPILER V7.05 WADC0 02/14/2006 08:37:38 PAGE 2
56 4 P7 = data1;
57 4 P6 = 0x04;
58 4 P6 = 0x05;
59 4 lcdpoint++;
60 4 for(x=0;x<100;x++);
61 4 }
62 3 TMR3CN |= 0x04; //使能定時(shí)器3
63 3 }
64 2 }
65 1 }
66 void LCD_Init(void)
67 {
68 1 P6 = 0x01;
69 1 for(x=0;x<50000;x++);
70 1 //P7 = 0x30; /*一行顯示*/
71 1 P7 = 0x38; /*兩行顯示*/
72 1 P6 = 0x0;
73 1 P6 = 0x1;
74 1 for(x=0;x<1000;x++);
75 1 P7 = 0x0e; //開(kāi)顯示,開(kāi)光標(biāo),字符不閃爍
76 1 P6 = 0x0;
77 1 P6 = 0x1;
78 1 for(x=0;x<1000;x++);
79 1 P7= 0x016; //AC自動(dòng)增1,整體顯示不移動(dòng)
80 1 P6 = 0x1;
81 1 P6 = 0x01;
82 1 for(x=0;x<5000;x++);
83 1 P7 = 0x01; //清除DDRAM,置AC=0
84 1 P6 = 0x00;
85 1 P6 = 0x01;
86 1 for(x=0;x<5000;x++);
87 1 }
88 void PORT_Init (void)
89 {
90 1 XBR2 = 0x40; //使能交叉開(kāi)關(guān)
91 1 P74OUT |= 0x0ff; //推挽輸出
92 1 }
93 void Timer3_Init (int counts)
94 {
95 1 TMR3CN = 0x00; //定時(shí)器T3使用系統(tǒng)時(shí)鐘的12分頻.禁止T3
96 1 TMR3RLL = -counts; //初始化重載值
97 1 TMR3L = 0xffff; //設(shè)置自動(dòng)重載值
98 1 TMR3CN |= 0x04; //允許定時(shí)器T3
99 1 }
100 void ADC_Init(void)
101 {
102 1 ADC0CN |=0x84; /*ADC0使能,定時(shí)器T3溢出使能模/數(shù)轉(zhuǎn)換*/
103 1 REF0CN |=0x03; /*內(nèi)部電壓基準(zhǔn)提供從VREF腳輸出,ADC0電壓基準(zhǔn)取自VREF0*/
104 1 ADC0CF |=0x50; /*轉(zhuǎn)換周期為一個(gè)時(shí)間系統(tǒng),增益為1*/
105 1 AMX0CF |=0x00; /*單端輸入*/
106 1 EIE2 |=0x02; /*ADC0轉(zhuǎn)換結(jié)束中斷*/
107 1 }
108 void ADC_ISR (void) interrupt 15
109 {
110 1 AD0INT=0; //清A/D中斷標(biāo)志
111 1 LCDBit=1; //置LCD顯示位
112 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 666 ----
CONSTANT SIZE = 10 ----
C51 COMPILER V7.05 WADC0 02/14/2006 08:37:38 PAGE 3
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 14
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -