📄 www.ourhc.cn.lst
字号:
C51 COMPILER V8.05a WWW_OURHC_CN 06/03/2012 18:29:05 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE WWW_OURHC_CN
OBJECT MODULE PLACED IN www.ourhc.cn.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE www.ourhc.cn.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************
2 汇诚科技
3
4 实现功能:STC12C5A60S2单片机之演示(ADC查询方式)
5 使用芯片:STC12C5A60S2
6 晶振:11.0592MHZ
7 波特率:115200
8 编译环境:Keil
9 作者:zhangxinchun
10 网站:www.ourhc.cn
11 淘宝店:
12 汇诚科技 http://ourhc.taobao.com
13 郑兴电子直销部 http://shop68451856.taobao.com
14 【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
15
16 程序说明:
17 1、P1口八路AD数据转换。
18 2、将转换的数据通过串口发送出去。
19 3、发送数据的格式是:(通道口-数据)
20
21 注意:通道口必须有模拟量输入数据才有效。
22 *********************************************************************/
23 #include "reg52.h"
24 #include "intrins.h"
25
26 #define FOSC 18432000L
27 #define BAUD 9600
28
29 typedef unsigned char BYTE;
30 typedef unsigned int WORD;
31 /********************************************************************
32 初始化设置
33 *********************************************************************/
34 sfr ADC_CONTR = 0xBC; //ADC 控制寄存器
35 sfr ADC_RES = 0xBD; //ADC 转换结果寄存器
36 sfr ADC_LOW2 = 0xBE; //ADC 低2位结果寄存器
37 sfr P1ASF = 0x9D; //Pl口模拟功能控制寄存器
38
39 /********************************************************************
40 ADC 数据转换函数
41 *********************************************************************/
42
43 #define ADC_POWER 0x80 //ADC 电源控制位
44 #define ADC_FLAG 0x10 //ADC 转换结束标志位
45 #define ADC_START 0x08 //ADC 开始转换控制位
46 #define ADC_SPEEDLL 0x00 //420 个时钟周期转换一次
47 #define ADC_SPEEDL 0x20 //280 个时钟周期转换一次
48 #define ADC_SPEEDH 0x40 //140 个时钟周期转换一次
49 #define ADC_SPEEDHH 0x60 //70 个时钟周期转换一次
50
51
52 /********************************************************************
53 延时函数
54 *********************************************************************/
55 void Delay(WORD n)
C51 COMPILER V8.05a WWW_OURHC_CN 06/03/2012 18:29:05 PAGE 2
56 {
57 1 WORD x;
58 1 while (n--)
59 1 {
60 2 x = 5000;
61 2 while (x--);
62 2 }
63 1 }
64 /********************************************************************
65 串口初始化
66 *********************************************************************/
67 void InitUart()
68 {
69 1 SCON = 0x5a;
70 1 TMOD = 0x20;
71 1 TH1 = TL1 = -(FOSC/12/32/BAUD);
72 1 TR1 = 1;
73 1 }
74 /********************************************************************
75 串口数据输出函数
76 *********************************************************************/
77 void SendData(BYTE dat)
78 {
79 1 while (!TI); //等待数据
80 1 TI = 0; //清零标志位
81 1 SBUF = dat; //发送数据
82 1 }
83 /********************************************************************
84 ADC 初始化
85 *********************************************************************/
86 void InitADC()
87 {
88 1 P1ASF = 0xff; //设置P1口为开漏模式,使用AD功能
89 1 ADC_RES = 0; //AD数据寄存器清空
90 1 ADC_CONTR = ADC_POWER | ADC_SPEEDLL; //打开AD电源,转换周期420
91 1 Delay(2); //延时
92 1 }
93 /********************************************************************
94 ADC 数据转换函数
95 *********************************************************************/
96 BYTE GetADCResult(BYTE ch)
97 {
98 1 ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;//开始转换
99 1 _nop_(); //延时一个机器周期
100 1 _nop_(); //延时一个机器周期
101 1 _nop_(); //延时一个机器周期
102 1 _nop_(); //延时一个机器周期
103 1 while (!(ADC_CONTR & ADC_FLAG));//等待转换结束
104 1 ADC_CONTR &= ~ADC_FLAG; //关闭AD转换
105 1
106 1 return ADC_RES; //返回数据
107 1 }
108 /********************************************************************
109 编辑数据函数
110 *********************************************************************/
111 void ShowResult(BYTE ch)
112 {
113 1 SendData(ch); //发送显示通道
114 1 SendData(GetADCResult(ch)); //发送对应通道的数据
115 1 // SendData(ADC_LOW2); //如果你想显示10位结果,选择下一行
116 1 }
117 /********************************************************************
C51 COMPILER V8.05a WWW_OURHC_CN 06/03/2012 18:29:05 PAGE 3
118 主函数
119 *********************************************************************/
120 void main()
121 {
122 1 InitUart(); //串口初始化
123 1 InitADC(); //AD转换初始化
124 1 while (1)
125 1 {
126 2 ShowResult(0); //显示第一通道的数值
127 2 ShowResult(1); //显示第二通道的数值
128 2
129 2 }
130 1 }
131
132 /********************************************************************
133 结束
134 *********************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 114 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -