📄 adc.lst
字号:
C51 COMPILER V8.08 ADC 10/24/2007 15:46:33 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE ADC
OBJECT MODULE PLACED IN ADC.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ADC.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <INTRINS.H>
2 #include "STK6031.h"
3
4 //********************************************************************************
5 //定义数据类型
6 typedef unsigned char uint8;
7 typedef unsigned int uint16;
8
9
10 /*
11 ********************************************************************************
12 * 函 数 名:InitMCU
13 * 功能描述:初始化MCU,其中包括初始化各I/O口,CHIPCON,
14 CKCON,选择I/O口的功能
15 * 输 入: 无
16 * 返 回: 无
17 ********************************************************************************
18 */
19
20 void InitMcu(void)
21 {
22 1 P0 = 0xFF; //初始化各I/O 口
23 1 P1 = 0xFF;
24 1 P2 = 0xFF;
25 1 P3 = 0xFF;
26 1 P4 = 0x0F;
27 1
28 1 XFR_PADOPT_ADC = 0x02; //设置P4.1 脚作为ADC 输入功能
29 1
30 1 CHIPCON = 0x1A; // 设置CPUCLK=XTAL1/3,允许访问片内AUX 存储器,禁止ALE 输出,允许低电压复位
31 1 CKCON = 0x39; // 设置TIMER0,TIMER1,TIMER2 的计数频率为CPUCLK/4, 设置MOVX 指令访问外部AUX 存储器的时间为3
- 个机器周期
32 1 }
33
34
35 /*
36 ********************************************************************************
37 * 函 数 名: Delay
38 * 功能描述: 延时函数,延时的间隔是1ms
39 * 输 入: Time :控制延时的间隔
40 * 返 回: 无
41 ********************************************************************************
42 */
43
44 void Delay(uint8 Time)
45 {
46 1 uint8 i;
47 1
48 1 // 需要执行2000个指令周期
49 1 while(Time--) {
50 2 i = 199;
51 2 while(i--); //这一段将执行10个指令周期
52 2 }
53 1 }
54
C51 COMPILER V8.08 ADC 10/24/2007 15:46:33 PAGE 2
55
56 /*
57 ********************************************************************************
58 * 函 数 名:GetADCValue
59 * 功能描述:完成ADC 转换并返回3次读到ADC 结果的平均值
60 * 输 入: 无
61 * 返 回: ADC转换后的6 位结果
62 ********************************************************************************
63 */
64
65 uint8 GetADCValue(void)
66 {
67 1 uint8 i;
68 1 uint8 ADCBUFF[3];
69 1 XFR_ADCCH = 0x80|0x02;
70 1 Delay(10);
71 1 for (i=0; i<3; i++)
72 1 {
73 2 ADCBUFF[i] = XFR_ADC & 0x3F;
74 2 }
75 1 return((ADCBUFF[0] + ADCBUFF[1] + ADCBUFF[2])/3);
76 1 }
77
78
79 void main(void)
80 {
81 1 InitMcu();
82 1 while(1)
83 1 {
84 2 Delay(100); // 每100ms 把ADC 转换的6 位结果输入到P1 口的低6 位
85 2 P1 = GetADCValue() & 0x3F;
86 2 }
87 1 }
88
89
90
91
92
93
94
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 97 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 3
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 + -