📄 adc.lst
字号:
C51 COMPILER V8.02 ADC 07/05/2010 14:42:48 PAGE 1
C51 COMPILER V8.02, 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 /*------------------------------------------------------------------*/
2 /* --- STC MCU International Limited -------------------------------*/
3 /* --- STC 1T Series MCU A/D Conversion Demo -----------------------*/
4 /* --- Mobile: (86)13922805190 -------------------------------------*/
5 /* --- Fax: 86-755-82944243 ----------------------------------------*/
6 /* --- Tel: 86-755-82948412 ----------------------------------------*/
7 /* --- Web: www.STCMCU.com -----------------------------------------*/
8 /* If you want to use the program or the program referenced in the */
9 /* article, please specify in which data and procedures from STC */
10 /*------------------------------------------------------------------*/
11
12 #include "reg51.h"
13 #include "intrins.h"
14
15 #define FOSC 18432000L
16 #define BAUD 9600
17
18 typedef unsigned char BYTE;
19 typedef unsigned int WORD;
20
21 /*Declare SFR associated with the ADC */
22 sfr ADC_CONTR = 0xBC; //ADC control register
23 sfr ADC_RES = 0xBD; //ADC hight 8-bit result register
24 sfr ADC_LOW2 = 0xBE; //ADC low 2-bit result register
25 sfr P1ASF = 0x9D; //P1 secondary function control register
26
27 /*Define ADC operation const for ADC_CONTR*/
28 #define ADC_POWER 0x80 //ADC power control bit
29 #define ADC_FLAG 0x10 //ADC complete flag
30 #define ADC_START 0x08 //ADC start control bit
31 #define ADC_SPEEDLL 0x00 //420 clocks
32 #define ADC_SPEEDL 0x20 //280 clocks
33 #define ADC_SPEEDH 0x40 //140 clocks
34 #define ADC_SPEEDHH 0x60 //70 clocks
35
36 void InitUart();
37 void SendData(BYTE dat);
38 void Delay(WORD n);
39 void InitADC();
40
41 BYTE ch = 0; //ADC channel NO.
42
43 void main()
44 {
45 1 InitUart(); //Init UART, use to show ADC result
46 1 InitADC(); //Init ADC sfr
47 1 IE = 0xa0; //Enable ADC interrupt and Open master interrupt switch
48 1 //Start A/D conversion
49 1 while (1);
50 1 }
51
52 /*----------------------------
53 ADC interrupt service routine
54 ----------------------------*/
55 void adc_isr() interrupt 5 using 1
C51 COMPILER V8.02 ADC 07/05/2010 14:42:48 PAGE 2
56 {
57 1 ADC_CONTR &= !ADC_FLAG; //Clear ADC interrupt flag
58 1
59 1 SendData(ch); //Show Channel NO.
60 1 SendData(ADC_RES); //Get ADC high 8-bit result and Send to UART
61 1
62 1 //if you want show 10-bit result, uncomment next line
63 1 // SendData(ADC_LOW2); //Show ADC low 2-bit result
64 1
65 1 if (++ch > 7) ch = 0; //switch to next channel
66 1 ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch;
67 1 }
68
69 /*----------------------------
70 Initial ADC sfr
71 ----------------------------*/
72 void InitADC()
73 {
74 1 P1ASF = 0xff; //Set all P1 as analog input port
75 1 ADC_RES = 0; //Clear previous result
76 1 ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch;
77 1 Delay(2); //ADC power-on delay and Start A/D conversion
78 1 }
79
80 /*----------------------------
81 Initial UART
82 ----------------------------*/
83 void InitUart()
84 {
85 1 SCON = 0x5a; //8 bit data ,no parity bit
86 1 TMOD = 0x20; //T1 as 8-bit auto reload
87 1 TH1 = TL1 = -(FOSC/12/32/BAUD); //Set Uart baudrate
88 1 TR1 = 1; //T1 start running
89 1 }
90
91 /*----------------------------
92 Send one byte data to PC
93 Input: dat (UART data)
94 Output:-
95 ----------------------------*/
96 void SendData(BYTE dat)
97 {
98 1 while (!TI); //Wait for the previous data is sent
99 1 TI = 0; //Clear TI flag
100 1 SBUF = dat; //Send current data
101 1 }
102
103 /*----------------------------
104 Software delay function
105 ----------------------------*/
106 void Delay(WORD n)
107 {
108 1 WORD x;
109 1
110 1 while (n--)
111 1 {
112 2 x = 5000;
113 2 while (x--);
114 2 }
115 1 }
116
C51 COMPILER V8.02 ADC 07/05/2010 14:42:48 PAGE 3
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 + -