📄 www.ourhc.cn.lst
字号:
C51 COMPILER V8.05a WWW_OURHC_CN 06/03/2012 18:31:11 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 /*Declare SFR associated with the ADC */
33 sfr ADC_CONTR = 0xBC; //ADC control register
34 sfr ADC_RES = 0xBD; //ADC hight 8-bit result register
35 sfr ADC_LOW2 = 0xBE; //ADC low 2-bit result register
36 sfr P1ASF = 0x9D; //P1 secondary function control register
37
38 /*Define ADC operation const for ADC_CONTR*/
39 #define ADC_POWER 0x80 //ADC power control bit
40 #define ADC_FLAG 0x10 //ADC complete flag
41 #define ADC_START 0x08 //ADC start control bit
42 #define ADC_SPEEDLL 0x00 //420 clocks
43 #define ADC_SPEEDL 0x20 //280 clocks
44 #define ADC_SPEEDH 0x40 //140 clocks
45 #define ADC_SPEEDHH 0x60 //70 clocks
46
47 void InitUart();
48 void SendData(BYTE dat);
49 void Delay(WORD n);
50 void InitADC();
51
52 BYTE ch = 0; //ADC channel NO.
53
54 void main()
55 {
C51 COMPILER V8.05a WWW_OURHC_CN 06/03/2012 18:31:11 PAGE 2
56 1 InitUart(); //Init UART, use to show ADC result
57 1 InitADC(); //Init ADC sfr
58 1 IE = 0xa0; //Enable ADC interrupt and Open master interrupt switch
59 1 //Start A/D conversion
60 1 while (1);
61 1 }
62
63 /*----------------------------
64 ADC interrupt service routine
65 ----------------------------*/
66 void adc_isr() interrupt 5 using 1
67 {
68 1 ADC_CONTR &= !ADC_FLAG; //Clear ADC interrupt flag
69 1
70 1 SendData(ch); //Show Channel NO.
71 1 SendData(ADC_RES); //Get ADC high 8-bit result and Send to UART
72 1
73 1 //if you want show 10-bit result, uncomment next line
74 1 // SendData(ADC_LOW2); //Show ADC low 2-bit result
75 1
76 1 if (++ch > 7) ch = 0; //switch to next channel
77 1 ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch;
78 1 }
79
80 /*----------------------------
81 Initial ADC sfr
82 ----------------------------*/
83 void InitADC()
84 {
85 1 P1ASF = 0xff; //Set all P1 as analog input port
86 1 ADC_RES = 0; //Clear previous result
87 1 ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch;
88 1 Delay(2); //ADC power-on delay and Start A/D conversion
89 1 }
90
91 /*----------------------------
92 Initial UART
93 ----------------------------*/
94 void InitUart()
95 {
96 1 SCON = 0x5a; //8 bit data ,no parity bit
97 1 TMOD = 0x20; //T1 as 8-bit auto reload
98 1 TH1 = TL1 = -(FOSC/12/32/BAUD); //Set Uart baudrate
99 1 TR1 = 1; //T1 start running
100 1 }
101
102 /*----------------------------
103 Send one byte data to PC
104 Input: dat (UART data)
105 Output:-
106 ----------------------------*/
107 void SendData(BYTE dat)
108 {
109 1 while (!TI); //Wait for the previous data is sent
110 1 TI = 0; //Clear TI flag
111 1 SBUF = dat; //Send current data
112 1 }
113
114 /*----------------------------
115 Software delay function
116 ----------------------------*/
117 void Delay(WORD n)
C51 COMPILER V8.05a WWW_OURHC_CN 06/03/2012 18:31:11 PAGE 3
118 {
119 1 WORD x;
120 1
121 1 while (n--)
122 1 {
123 2 x = 5000;
124 2 while (x--);
125 2 }
126 1 }
127
128 /********************************************************************
129 结束
130 *********************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 135 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
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 + -