?? adc2.lst
字號:
C51 COMPILER V7.01 ADC2 05/04/2004 11:25:47 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE ADC2
OBJECT MODULE PLACED IN ADC2.OBJ
COMPILER INVOKED BY: C:\keil7\C51\BIN\C51.EXE ADC2.c DB OE
stmt level source
1 /////////ADC2調試程序,p1.2口單端輸入/////////////////
2 /////////T2定時采樣,ADC2監控中斷/////////////////////
3 /////////ADC2.c////////////////////////////////////////
4 #include "lcd.h"
*** WARNING C258 IN LINE 29 OF LCD.H: 'num': mspace on parameter ignored
*** WARNING C258 IN LINE 29 OF LCD.H: 'line': mspace on parameter ignored
*** WARNING C258 IN LINE 30 OF LCD.H: 'num': mspace on parameter ignored
*** WARNING C258 IN LINE 30 OF LCD.H: 'str': mspace on parameter ignored
*** WARNING C258 IN LINE 31 OF LCD.H: 'inum': mspace on parameter ignored
*** WARNING C258 IN LINE 39 OF LCD.H: 'num': mspace on parameter ignored
*** WARNING C258 IN LINE 39 OF LCD.H: 'fbit': mspace on parameter ignored
*** WARNING C258 IN LINE 39 OF LCD.H: 'line': mspace on parameter ignored
*** WARNING C235 IN LINE 48 OF LCD.H: parameter 1: different types
*** WARNING C258 IN LINE 126 OF LCD.H: 'inum': mspace on parameter ignored
*** WARNING C258 IN LINE 207 OF LCD.H: 'num': mspace on parameter ignored
*** WARNING C258 IN LINE 207 OF LCD.H: 'fbit': mspace on parameter ignored
*** WARNING C258 IN LINE 207 OF LCD.H: 'line': mspace on parameter ignored
*** WARNING C258 IN LINE 212 OF LCD.H: 'num': mspace on parameter ignored
*** WARNING C258 IN LINE 212 OF LCD.H: 'line': mspace on parameter ignored
*** WARNING C258 IN LINE 216 OF LCD.H: 'inum': mspace on parameter ignored
*** WARNING C258 IN LINE 216 OF LCD.H: 'str': mspace on parameter ignored
*** WARNING C258 IN LINE 216 OF LCD.H: 'page': mspace on parameter ignored
*** WARNING C236 IN LINE 216 OF LCD.H: '_showintmes': different length of parameter lists
5 #define ADC0START temppage=SFRPAGE;SFRPAGE=0x00;AD0BUSY=1;SFRPAGE=temppage
6 #define ADJRATEDIF 260L
7 #define ADJRATESE 130L
8 sfr16 RCAP2=0xca;
9 sfr16 RCAP3=0xca;
10 sfr16 RCAP4=0xca;
11 sfr16 TMR4=0xcc;
12 sfr16 TMR3=0xcc;
13 sfr16 TMR2=0xcc;
14 sfr16 PCA0CP0=0xfb;
15 sfr16 PCA0CP1=0xfd;
16 sfr16 PCA0CP2=0xe9;
17 sfr16 PCA0CP3=0xeb;
18 sfr16 PCA0CP4=0xed;
19 sfr16 PCA0CP5=0xe1;
20 sfr16 ADC0VAL=0xbe;
21 sfr16 ADC0GT=0xc4;
22 sfr16 ADC0LT=0xc6;
23 uchar temppage;
24 bit isnewdata;
25 bit adc_is_capture;
26 uchar kk;
27 long realvol;
28 void adc2_mux(uchar type,uchar source);
29 void adc2_source(uchar source);
30 void anologPort_ini(uchar port);
31 void adc2_ini();
32 void config();
33 void t2_ini();
34 void t2_baud(uint t2reload);
35 void t2_ini(){
36 1 SFRPAGE = 0x00;
C51 COMPILER V7.01 ADC2 05/04/2004 11:25:47 PAGE 2
37 1 TMR2CF = 0x08; // T2時鐘為系統時鐘
38 1 TMR2CN = 0x04; // 開啟T2定時器
39 1 }
40 void t2_baud(uint t2reload){
41 1 SFRPAGE = 0x00;
42 1 RCAP2=~t2reload+1;
43 1 TMR2=RCAP2;
44 1 }
45 void adc2_mux(uchar type,uchar source){//type 配置測量方式為差動還是單端輸入
46 1 //source 為ADC2通道選擇(共有8個通道)
47 1 SFRPAGE=0x02;
48 1 AMX2CF=type;
49 1 AMX2SL=source;
50 1 }
51 void adc2_source(uchar source){//ADC2通道選擇
52 1 SFRPAGE=0x02;
53 1 AMX2SL=source;
54 1 }
55 void anologPort_ini(uchar port){//配置p1口模擬輸入管腳
56 1 SFRPAGE=0x0f;
57 1 P1MDIN&=~port;//將相應管腳配置成模擬輸入口
58 1 }
59 void adc2_ini(){
60 1 SFRPAGE=0x02;
61 1 ADC2CF=0x09;//ADC2時鐘為系統時鐘2分頻,PGA增益為1
62 1 ADC2CN=0x86;//AD2TM=0,ADC2為連續跟蹤模式由T2溢出率啟動ADC2
63 1 SFRPAGE=0x00;
64 1 REF0CN|=0x0b;//采用AV+作為參考電壓
65 1 /*BIASE=1,偏移產生器工作,注意若AD啟動此位必須置1,不管是否采用內部參考電平
66 1 REFBE=1,內部參考電平工作,電路部分須將VREF參考輸出(C8051F40的第12管腳)與
67 1 VREF2(C8051F040的17管腳)相連,并最好并聯一個4.7uF和0.1uF的旁路電容以電平濾波*/
68 1 anologPort_ini(0x0f);//將P1.0-P1.3配置到AMUX2 0-3通道上,pdf文件上p2是錯誤的。
69 1 adc2_mux(0x01,2);
70 1 /* 0,1通道為差動輸入模式,其他為單端輸入模式,選擇2通道單端輸入進入AD轉化*/
71 1 EIE2|= 0x08; //開ADC2中斷
72 1 t2_ini();
73 1 t2_baud(6000);//設置6000個T2時鐘為采樣周期
74 1 SFRPAGE=0x00;
75 1 TR2=1;
76 1 }
77 void adc2_capture(uchar greater,uchar less){
78 1 SFRPAGE=0x02;
79 1 ADC2GT=greater;
80 1 ADC2LT=less;
81 1 AD2WINT=0;
82 1 EIE2|=0x10;
83 1 }
84 void config (void) {
85 1 //看門狗禁止
86 1 WDTCN = 0x07;
87 1 WDTCN = 0xDE;
88 1 WDTCN = 0xAD;
89 1 SFRPAGE = 0x0F;
90 1 XBR0 = 0x00;
91 1 XBR1 = 0x00;
92 1 XBR2 = 0x40; //交叉開關使能,使得P0-P3口能輸出
93 1 XBR3 = 0x00;
94 1 SFRPAGE = 0x0F;
95 1 P0MDOUT = 0x00; //端口配置,P0-P3,P6-P7口為開漏輸出
96 1 P1MDOUT = 0x00;
97 1 P2MDOUT = 0x00;
98 1 P3MDOUT = 0x00;
C51 COMPILER V7.01 ADC2 05/04/2004 11:25:47 PAGE 3
99 1 P4MDOUT = 0x00; //P4口為開漏,若為推挽式則無法讀取LCD數據
100 1 P5MDOUT = 0x07;
101 1 P6MDOUT = 0x00;
102 1 P7MDOUT = 0x00;
103 1 P1MDIN = 0xFF; //所有端口為數字輸入,沒有模擬輸入端口
104 1 P2MDIN = 0xFF;
105 1 P3MDIN = 0xFF;
106 1 SFRPAGE = 0x0F;
107 1 CLKSEL = 0x00;
108 1 OSCXCN = 0x00;
109 1 OSCICN = 0x84;
110 1 //采用內部晶振,為24.5MHZ8分頻
111 1 }
112 void main(){
113 1 uchar i;
114 1 config();
115 1 dispini();
116 1 adc2_ini();
117 1 i=0;
118 1 kk=0;
119 1 isnewdata=0;
120 1 adc_is_capture=0;
121 1 adc2_capture(64,128);//當電壓在0.83-1.65之內發生ADC2中斷
122 1 EA=1;
123 1 while(1){
124 2 if(isnewdata){
125 3 i++;
126 3 if(i>40){
127 4 i=0;
128 4 showline("AIN1.2 VAL",0);
129 4 showf(realvol,4,1);
130 4 }
131 3 isnewdata=0;
132 3 }
133 2 if(adc_is_capture){ //ADC2監控條件測試
134 3 adc_is_capture=0;
135 3 showline("ADC2 CAPTURE",0);
136 3 showf(realvol,4,1);
137 3 delay1ms(100);
138 3 EIE2|=0x10;//開ADC2監控中斷
139 3
140 3 }
141 2 }
142 1 }
143
144 void ADC2_WIN_ISR() interrupt 17{//ADC2監控中斷程序
145 1 //只要ADC轉化值在此監視范圍內,則一直處于此中斷
146 1 adc_is_capture=1;
147 1 SFRPAGE=0x02;
148 1 AD2WINT=0;
149 1 EIE2&=~0x10;//關ADC2監控中斷
150 1 /*
151 1 注意c8051f040.h頭文件定義錯誤
152 1 原定義為:
153 1 sbit AD2WINT = ADC2CN ^ 3;
154 1 sbit AD2CM2 = ADC2CN ^ 2;
155 1 sbit AD2CM1 = ADC2CN ^ 1;
156 1 sbit AD2CM0 = ADC2CN ^ 0;
157 1 改為:
158 1 sbit AD2WINT = ADC2CN ^ 0;
159 1 sbit AD2CM2 = ADC2CN ^ 3;
160 1 sbit AD2CM1 = ADC2CN ^ 2;
C51 COMPILER V7.01 ADC2 05/04/2004 11:25:47 PAGE 4
161 1 sbit AD2CM0 = ADC2CN ^ 1;
162 1 */
163 1
164 1 }
165 void ADC2_ISR() interrupt 18{//ADC2轉化完畢中斷程序
166 1 AD2INT=0;
167 1 kk=ADC2;
168 1 realvol=(long)kk;
169 1 realvol*=ADJRATESE;//realvol為真實電壓值的1.0e4倍
170 1 isnewdata=1;
171 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 3038 ----
CONSTANT SIZE = 87 ----
XDATA SIZE = 32 4
PDATA SIZE = ---- ----
DATA SIZE = 6 40
IDATA SIZE = ---- 11
BIT SIZE = 2 6
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 19 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -