📄 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 + -