📄 main.lst
字号:
C51 COMPILER V9.01 MAIN 07/28/2012 10:12:00 PAGE 1
C51 COMPILER V9.01, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /***********************************************************
2 实验名称:ad
3 程序说明:本程序测试了ad
4 实验平台:stc15单片机开发板v1.0版
5 日期:2012-05-27
6 QQ: 259902530
7 www.stcstudy.com 61mcu.taobao.com 版权所有
8 ***********************************************************/
9 /*----------------------------------------
10 本测试程序使用了串口1进行AD数值输出。
11 如果需要更换测试的通道,请改变ch的值。
12 可采用STC下载软件自带串口调试助手观察
13 -----------------------------------------*/
14
15 #include "STC15F2K.h"
16 #include "UART.H"
17 #include <intrins.h>
18
19
20
21 uint GetADC;
22
23 #define URMD 0 //0:使用定时器2作为波特率发生器
24 //1:使用定时器1的模式0(16位自动重载模式)作为波特率发生器
25 //2:使用定时器1的模式2(8位自动重载模式)作为波特率发生器
26
27
28 #define ADC_POWER 0x80 //ADC电源控制位
29 #define ADC_FLAG 0x10 //ADC完成标志
30 #define ADC_START 0x08 //ADC起始控制位
31 #define ADC_SPEEDLL 0x00 //540个时钟
32 #define ADC_SPEEDL 0x20 //360个时钟
33 #define ADC_SPEEDH 0x40 //180个时钟
34 #define ADC_SPEEDHH 0x60 //90个时钟
35
36 void UAS(uint Data,uchar *p);
37 void Delay(uint n);
38 void InitADC();
39
40 uchar ch = 3; //ADC通道号
41
42 void main()
43 {
44 1
45 1 uchar tmp[]="0123456789";
46 1 uchar out[5]="0000";
47 1 P2=0x01;
48 1 InitADC(); //初始化ADC
49 1 IE = 0xa0; //使能ADC中断
50 1 //开始AD转换
51 1 InitUART(); //初始化串口
52 1 SendString("All OK now!!!\r\n\r\n") ;
53 1 while (1)
54 1 {
55 2 SendString("The ADC Num is: ");
C51 COMPILER V9.01 MAIN 07/28/2012 10:12:00 PAGE 2
56 2 SendData(tmp[ch]);
57 2 SendString(" - ") ;
58 2 UAS(GetADC,out);
59 2 SendString(out);
60 2 SendString("\r\n\r\n");
61 2 Delay(150);
62 2 ch++;
63 2 if(ch>5) ch=3;
64 2 }
65 1 }
66
67 /*----------------------------
68 ADC中断服务程序
69 ----------------------------*/
70 void adc_isr() interrupt 5 using 1
71 {
72 1 ADC_CONTR &= !ADC_FLAG; //清除ADC中断标志
73 1 GetADC=(ADC_RES<<2)| (ADC_RESL&0xFC);
74 1
75 1 ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch;
76 1 }
77
78 /*----------------------------
79 初始化ADC
80 ----------------------------*/
81 void InitADC()
82 {
83 1 P1ASF = 0xff; //设置P1口为AD口
84 1 ADC_RES = 0; //清除结果寄存器
85 1 ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch;
86 1 Delay(2); //ADC上电并延时
87 1 }
88
89
90
91 void Delay(uint n)
92 {
93 1 uint x;
94 1
95 1 while (n--)
96 1 {
97 2 x = 5000;
98 2 while (x--);
99 2 }
100 1 }
101
102 void UAS(uint Data,uchar *p)
103 {
104 1 uchar a[]="0123456789";
105 1 *p=a[Data/1000];
106 1 *(p+1)=a[Data%1000/100];
107 1 *(p+2)=a[Data%100/10];
108 1 *(p+3)=a[Data%10];
109 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 395 ----
CONSTANT SIZE = 76 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 32
C51 COMPILER V9.01 MAIN 07/28/2012 10:12:00 PAGE 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 + -