?? adc.lst
字號:
C51 COMPILER V7.20 ADC 10/18/2005 11:11:22 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE ADC
OBJECT MODULE PLACED IN ADC.OBJ
COMPILER INVOKED BY: c:\KEIL\C51\BIN\C51.exe ADC.c DB OE
line level source
1
2 //-----------------------------------------------------------------------------
3 // 版權歸新華龍電子公司所有
4 //-----------------------------------------------------------------------------
5 //
6 // 文件名:ADC.c
7 //
8 // 編寫人:LC
9 //
10 // 編寫時間:2005/2/25
11 //
12 // 目標器件: C8051F02x
13 //
14 // 編譯工具: Silicon Laboratories IDE
15 //
16 // 程序說明: 此程序模/數轉化通道AIN0.0的輸入值,測試前將S6的第一撥碼開關撥到ON
17
18 //------------------------------------------------------------------------------------
19 // // 頭文件包含
20 //------------------------------------------------------------------------------------
21 #include <c8051f020.h>
22
23 //------------------------------------------------------------------------------------
24 // 特殊功能寄存器定義
25 //------------------------------------------------------------------------------------
26 sfr16 TMR3RL = 0x92;
27 sfr16 TMR3 = 0x94;
28 sfr16 ADC0 = 0xbe;
29 //------------------------------------------------------------------------------------
30 // 常量定義
31 //------------------------------------------------------------------------------------
32 #define SYSCLK 2000000
33
34 bit LCDBit;
35 unsigned long x;
36 //-----------------------------------------------------------------------------------
37 // 函數定義
38 //------------------------------------------------------------------------------------
39 void PORT_Init (void);
40 void Timer3_Init (int counts);
41 void ADC_Init(void);
42 void ADC_ISR (void);
43 void LCD_Init(void);
44 //------------------------------------------------------------------------------------
45 //主程序
46 //------------------------------------------------------------------------------------
47 void main (void) {
48 1 unsigned char data1,i;
49 1 unsigned char *lcdpoint; //指向 lcddata數組的指針
50 1 unsigned char ADC0Data[10]={0x0a,0x0d,0x0c,0x00,0x68,0x68};
51 1 WDTCN = 0xde;
52 1 WDTCN = 0xad; //禁止看門狗定時器
53 1 LCDBit=0;
54 1 PORT_Init();
55 1 LCD_Init();
C51 COMPILER V7.20 ADC 10/18/2005 11:11:22 PAGE 2
56 1 Timer3_Init (SYSCLK / 12 /5 );
57 1 ADC_Init();
58 1 EA = 1;
59 1
60 1 AMX0SL |=0x00; //通道0
61 1 for(x=0;x<=50000;x++);
62 1
63 1 //AMX0SL |=0x01; //通道1
64 1 //for(i=0;i<=50000;i++);
65 1 //AMX0SL |=0x02; //通道2
66 1 //for(i=0;i<=50000;i++);
67 1 //AMX0SL |=0x03; //通道3
68 1 //for(i=0;i<=50000;i++);
69 1 //AMX0SL |=0x04; //通道4
70 1 //for(i=0;i<=50000;i++);
71 1 //AMX0SL |=0x05; //通道5
72 1 //for(i=0;i<=50000;i++);
73 1 //AMX0SL |=0x06; //通道6
74 1 //for(i=0;i<=50000;i++);
75 1 //AMX0SL |=0x07; //通道7
76 1
77 1 while (1)
78 1 {
79 2 if(LCDBit==1){
80 3 TMR3CN &= 0xfb; //關定時器3
81 3 LCDBit=0; //清LCD顯示位
82 3 P7 = 0x02; //返回初始位置
83 3 P6 = 0x08;
84 3 P6 = 0x09;
85 3 ADC0Data[9]=ADC0&0x0f; //將A/D轉化值存到顯示數組
86 3 ADC0Data[8]=(ADC0>>4)&0x0f;
87 3 ADC0Data[7]=(ADC0>>8)&0x0f;
88 3 ADC0Data[6]=(ADC0>>12)&0x0f;
89 3 P6 = 0x0d; //準備送數據
90 3 for(x=0;x<5000;x++);
91 3 lcdpoint = &ADC0Data;
92 3 for(i=10;i>0;i--) //顯示第一行字符
93 3 {
94 4 data1=*lcdpoint;
95 4 if(data1>=0x0a) data1 += 0x37; //將顯示數據轉化為液晶的顯示字符碼
96 4 else data1 += 0x30;
97 4 P7 = data1;
98 4 P6 = 0x0c;
99 4 P6 = 0x0d;
100 4 lcdpoint++;
101 4 for(x=0;x<100;x++);
102 4 }
103 3 TMR3CN |= 0x04; //使能定時器3
104 3 }
105 2 }
106 1
107 1 }
108
109 //-----------------------------------------------------------------------------
110 // //函數名稱: LCD_Init ()
111 //函數功能: LCD初始化
112 //入口參數: 無
113 //出口參數: 無
114 //全局變量引用: 無
115 //調用模塊: 無
116 //-----------------------------------------------------------------------------
117 void LCD_Init(void)
C51 COMPILER V7.20 ADC 10/18/2005 11:11:22 PAGE 3
118 {
119 1 P6 = 0x09;
120 1 for(x=0;x<50000;x++);
121 1 //P7 = 0x30; /*一行顯示*/
122 1 P7 = 0x38; /*兩行顯示*/
123 1 P6 = 0x08;
124 1 P6 = 0x09;
125 1 for(x=0;x<1000;x++);
126 1 P7 = 0x0e; //開顯示,開光標,字符不閃爍
127 1 P6 = 0x08;
128 1 P6 = 0x09;
129 1 for(x=0;x<1000;x++);
130 1 P7= 0x06; //AC自動增1,整體顯示不移動
131 1 P6 = 0x08;
132 1 P6 = 0x09;
133 1 for(x=0;x<5000;x++);
134 1 P7 = 0x01; //清除DDRAM,置AC=0
135 1 P6 = 0x08;
136 1 P6 = 0x09;
137 1 for(x=0;x<5000;x++);
138 1
139 1 }
140 //------------------------------------------------------------------------------------
141 //函數名稱: PORT_Init ()
142 //函數功能: 通用I/O口及交叉開關初始化
143 //入口參數: 無
144 //出口參數: 無
145 //全局變量引用: 無
146 //調用模塊: 無
147 //------------------------------------------------------------------------------------
148 //
149 void PORT_Init (void)
150 {
151 1 XBR2 = 0x40; //使能交叉開關
152 1 P74OUT |= 0x0ff; //推挽輸出
153 1 }
154
155 //------------------------------------------------------------------------------------
156 //函數名稱: Timer3_Init ()
157 //函數功能: 定時器3初始化
158 //入口參數: int counts
159 //出口參數: 無
160 //全局變量引用: 無
161 //調用模塊: 無
162 //------------------------------------------------------------------------------------
163 void Timer3_Init (int counts)
164 {
165 1 TMR3CN = 0x00;
166 1
167 1 TMR3RL = -counts; //初始化重載值
168 1 TMR3 = 0xffff; //設置自動重載值
169 1 TMR3CN |= 0x04;
170 1 }
171 //--------------------------------------------------------------------------
172 //函數名稱: ADC_Init ()
173 //函數功能: ADC0初始化
174 //入口參數: int counts
175 //出口參數: 無
176 //全局變量引用: 無
177 //調用模塊: 無
178 //--------------------------------------------------------------------------
179 void ADC_Init(void)
C51 COMPILER V7.20 ADC 10/18/2005 11:11:22 PAGE 4
180 {
181 1 ADC0CN |=0x84; /*ADC0使能,定時器3溢出使能模/數轉換*/
182 1 REF0CN |=0x03; /*內部電壓基準提供從VREF腳輸出,ADC0電壓基準取自VREF0*/
183 1 ADC0CF |=0x50; /*轉換周期和增益為1*/
184 1 AMX0CF |=0x00; /*單端輸入*/
185 1 EIE2 |=0x02; /*ADC0轉換結束中斷*/
186 1 }
187 //------------------------------------------------------------------------------------
188 //函數名稱: ADC_ISR ()
189 //函數功能: 定時器3中斷服務程序
190 //入口參數: 無
191 //出口參數: 無
192 //全局變量引用: 無
193 //調用模塊: 無
194 //------------------------------------------------------------------------------------
195 void ADC_ISR (void) interrupt 15
196 {
197 1 AD0INT=0; //清A/D中斷標志
198 1 LCDBit=1; //置LCD顯示位
199 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 677 ----
CONSTANT SIZE = 10 ----
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)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -