📄 chengxu.lst
字号:
C51 COMPILER V9.00 CHENGXU 05/13/2013 13:04:19 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE CHENGXU
OBJECT MODULE PLACED IN chengxu.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE chengxu.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************
2 汇诚科技
3
4 实现功能:AD_UART程序,数码管显示模拟量值
5 使用芯片:STC12C5204AD
6 晶振:11.0592MHZ
7 编译环境:Keil
8 硬件环境:四位数显两路输入三按键
9 作者:yang
10 QQ:790244909
11 网站:www.ourhc.cn
12 物联网测试网站:http://hualongelectron.eicp.net/
13 日期:2013-04-02
14 淘宝店:
15 华龙电子直销:http://hlelectrony.taobao.com
16 电子开发直销:http://shop63233873.taobao.com
17 汇诚科技网路购物:http://shop36330473.taobao.com
18 【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
19 ********************************************************************/
20
21 /********************************************************************
22 程序说明:
23 1、P1口八路AD数据转换。
24 2、将转换的数据通过串口发送出去。
25 3、发送数据的格式是:(通道口-数据)
26
27 注意:通道口必须有模拟量输入数据才有效。
28
29 ********************************************************************/
30
31 #include<STC12C5A60S2.H> //库文件
32 #include <intrins.h>
33 #include"SMG.H"
34 #define uchar unsigned char//宏定义无符号字符型
35 #define uint unsigned int //宏定义无符号整型
36 #define FOSC 11059200L
37 #define BAUD 9600
38
39 #define ADC_POWER 0x80 //ADC 电源控制位
40 #define ADC_FLAG 0x10 //ADC 转换结束标志位
41 #define ADC_START 0x08 //ADC 开始转换控制位
42 #define ADC_SPEEDLL 0x00 //420个时钟周期转换一次
43 #define ADC_SPEEDL 0x20 //280 个时钟周期转换一次
44 #define ADC_SPEEDH 0x40 //140个时钟周期转换一次
45 #define ADC_SPEEDHH 0x60 //70个时钟周期转换一次
46 void delay(uint x);
47 extern void t_to_dis(void);
48 extern void display(void); //显示函数
49
50 /********************************************************************
51 延时函数
52 *********************************************************************/
53 void delay(uint x)//延时程序 0.1秒
54 {
55 1 uchar m,n,s;
C51 COMPILER V9.00 CHENGXU 05/13/2013 13:04:19 PAGE 2
56 1 for(m=x;m>0;m--)
57 1 for(n=20;n>0;n--)
58 1 for(s=248;s>0;s--);
59 1 }
60
61 /********************************************************************
62 功能:串口初始化,波特率9600,方式1
63 *********************************************************************/
64
65 void Init_Com(void)
66 {
67 1 TMOD = 0x20;
68 1 PCON = 0x00;
69 1 SCON = 0x50;
70 1 TH1 = 0xFd;
71 1 TL1 = 0xFd;
72 1 TR1 = 1;
73 1 }
74
75 /********************************************************************
76 AD转换初始化程序
77 *********************************************************************/
78
79 void InitADC()
80 {
81 1 P1ASF|=0x10; //设置P1口为开漏模式,使用AD功能
82 1 ADC_RES=0; //AD数据寄存器清空
83 1 ADC_CONTR=ADC_POWER|ADC_SPEEDL|ADC_START;//打开AD电源,转换周期XX
84 1 delay(10); //延时
85 1 }
86
87 /********************************************************************
88 AD转换控制程序
89 *********************************************************************/
90 uchar GetADCResult(uchar px) //转换输出的数据 (PX为通道口)
91 {
92 1 ADC_CONTR = ADC_POWER | ADC_SPEEDLL |px| ADC_START;//开始转换
93 1 _nop_(); //延时一个机器周期
94 1 _nop_(); //延时一个机器周期
95 1 _nop_(); //延时一个机器周期
96 1 _nop_(); //延时一个机器周期
97 1 while (!(ADC_CONTR & ADC_FLAG));//等待转换结束
98 1 ADC_CONTR &= ~ADC_FLAG; //关闭AD转换
99 1 return ADC_RES; //返回数据
100 1 }
101 /********************************************************************
102 串口数据发送
103 *********************************************************************/
104 void SendData(uchar dat)
105 {
106 1 SBUF = dat; //发送数据
107 1 while (!TI); //等待数据
108 1 TI = 0; //清零标志位
109 1 }
110 /********************************************************************
111 编辑数据函数
112 *********************************************************************/
113 void show(uchar ch)
114 {
115 1 SendData(ch); //发送显示通道
116 1 SendData(GetADCResult(ch)); //发送对应通道的数据
117 1 }
C51 COMPILER V9.00 CHENGXU 05/13/2013 13:04:19 PAGE 3
118 /********************************************************************
119 /********************************************************************
120 主函数
121 *********************************************************************/
122 void main()
123 {
124 1 P2M1=0;
125 1 P2M0=0xff;
126 1 P1M1=0;
127 1 P1M0=0x0f;
128 1 P3M1&=0x7f;
129 1 P3M0|=0x80;
130 1
131 1 Init_Com();//串口初始化
132 1 InitADC(); //AD转换初始化
133 1 while(1)
134 1 {
135 2 // show(0); //显示第一通道的数值
136 2 // show(1); //显示第二通道的数值
137 2 // show(2); //显示第三通道的数值
138 2 // show(3); //显示第四通道的数值
139 2 show(4); //显示第五通道的数值
140 2 // show(5); //显示第六通道的数值
141 2 // show(6); //显示第七通道的数值
142 2 // show(7); //显示第八通道的数值
143 2 t_to_dis();
144 2 display();
145 2 }
146 1 }
147
148 /********************************************************************
149 结束
150 *********************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 265 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 ----
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 + -