?? ad.lst
字號:
C51 COMPILER V7.06 AD 03/23/2005 22:21:02 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE AD
OBJECT MODULE PLACED IN ad.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe ad.c DB OE
stmt level source
1 #include <main.H>
2 #include <intrins.h>
3
4
5 //#include <C8051F020.H>
6 //*******************************************************************//
7 // NOTE:The max value of frequency is *//
8 // gain:1,2,4,8,16,0.5; *//
9 //*******************************************************************//
10 void SampFunc(long SYSCLK, int totalChannel , long sampleRate , float gain , volatile unsigned int *sam
-ples , long numSample)
11 {
12 1 //unsigned int *samples2;
13 1 static int channel=0;
14 1 volatile int i=0 ;
15 1 for(i=0;i<numSample;i++)
16 1 samples[i]=0;
17 1 // int j;
18 1 SFRPAGE=0x0;
19 1 AD0INT = 0; // 清除ADC0轉換結束標志
20 1 EIE2 &= ~0x02; // 禁止ADC0中斷
21 1 Timer3_Init(SYSCLK/sampleRate); //初始化定時器3以ADC0采樣速率溢出
22 1 ADC0_Init(gain); //初始化ADC
23 1 SFRPAGE=0x0;
24 1 AD0EN=1; //允許ADC
25 1 //EA=1; //允許全局中斷
26 1
27 1 SFRPAGE=0x01;
28 1 TMR3CN |= 0x04; // 啟動定時器3
29 1 //for(i=0 ; i<numSample ; i++)
30 1 //{
31 1 //SFRPAGE=0x01;
32 1 //TMR3CN |= 0x04; // 啟動定時器3
33 1
34 1 //SFRPAGE=0x00;
35 1 //while (AD0INT == 0); //ADC完成了一次數據轉換
36 1
37 1 //AD0INT = 0; // 清除ADC0轉換結束標志
38 1
39 1 //samples[i] = ADC0H;
40 1 //samples[i]=(samples[i]<<8)|ADC0L; // 讀和存儲ADC0值
41 1 // channel++;
42 1 // if(channel==totalChannel)
43 1 // {
44 1 // channel=0;
45 1 // }
46 1 // AMX0SL = channel;
47 1 //}
48 1 // EIE2 &= ~0x02; // 禁止ADC0中斷
49 1 // ADC0_DONE = 1; // 設置DONE標志
50 1
51 1
52 1 // 上傳采樣值到UART0//////?????????
53 1 // LED = 0; // 上傳其間關LED 滅///////?????????
54 1 //AD0EN = 0; // AD采集完NUM_SAMPLES個數據后,關閉ADC0
C51 COMPILER V7.06 AD 03/23/2005 22:21:02 PAGE 2
55 1 //EA=0;
56 1 //////如何停止定時器3的工作????????
57 1 i=0;
58 1 SFRPAGE=0x0;
59 1 while(1)
60 1 {
61 2
62 2 //AD0INT = 0; // 清除ADC0轉換結束標志
63 2 while (AD0INT == 0);
64 2 AD0INT == 0;
*** WARNING C275 IN LINE 64 OF AD.C: expression with possibly no effect
65 2 samples[i] = ADC0; // 讀和存儲ADC0值
66 2 i++;
67 2 if(i ==numSample)
68 2 break;
69 2 }
70 1 SFRPAGE=0x0;
71 1 EIE2 &= ~0x02; // 禁止ADC0中斷
72 1 AD0EN=0;
73 1 // ADC0_DONE = 1; // 設置DONE標志
74 1 SFRPAGE=0x01;
75 1 TMR3CN &= ~0x04; // 停止定時器3
76 1 EA=0;
77 1 }
*** WARNING C280 IN LINE 10 OF AD.C: 'totalChannel': unreferenced local variable
*** WARNING C280 IN LINE 13 OF AD.C: 'channel': unreferenced local variable
78
79
80 //-----------------------------------------------------------------------------
81 // 定時器3初始化
82 //-----------------------------------------------------------------------------
83 //
84
85 // 配置定時器3 自動重裝間隔由 <counts> 決定(不產生中斷) 使用系統時鐘為時基
86 //
87 void Timer3_Init (int counts)
88 {
89 1 SFRPAGE=0x01;
90 1 //TMR3CN = 0x02; // 停止定時器3; 清除TF3;
91 1 // 使用系統時鐘作為時基
92 1 TMR3CF =0x08;
93 1 TMR3CN =0x00;
94 1 //TMR3RL = -counts; // 初始化重裝值
95 1
96 1 TMR3L = 0xFF; // 立即開始重裝
97 1 TMR3H = 0xFF;
98 1 RCAP3 = -counts; // 初始化重裝值
99 1 //RCAP3 = 0x0;
100 1 EIE2 &= ~0x01; // 禁止定時器3中斷
101 1 //EIE2 &= ~0x02;
102 1 //TMR3CN |= 0x04; // 啟動定時器3
103 1 }
104
105
106 //-----------------------------------------------------------------------------
107 // ADC0初始化
108 //-----------------------------------------------------------------------------
109 //
110 // 配置ADC0 使用定時器3溢出作為轉換開始信號,轉換結束產生一個中斷,
111 // 使用左對齊輸出模式
112 // 使能ADC轉換結束中斷中斷使能ADC0 但禁止ADC0轉換結束中斷
113 //
C51 COMPILER V7.06 AD 03/23/2005 22:21:02 PAGE 3
114 void ADC0_Init (float gain)
115 {
116 1
117 1 // ADC0CN = 0x45; // 禁止ADC0;低功耗跟蹤方式;
118 1 //當定時器3溢出啟動ADC0轉換;
119 1 //ADC0數據左對齊
120 1 SFRPAGE=0x0;
121 1 ADC0CN = 0x04; // 禁止ADC0;低功耗跟蹤方式;
122 1 //當定時器3溢出啟動ADC0轉換;
123 1 //ADC0數據右對齊
124 1 REF0CN = 0x07; // 使能溫度傳感器, 片內 VREF,和 VREF 輸出緩沖器
125 1 //REF0CN = 0x03; // 不使能溫度傳感器,////???????????
126 1
127 1 AMX0CF = 0x00; //AIN0.0和AIN0.1為單端輸入
128 1 //AMX0SL = 0x00; // 選擇AIN0.0作為ADC多路轉換輸入!
129 1 AMX0SL = 0x01; // 選擇AIN0.1作為ADC多路轉換輸入!
130 1
131 1 ADC0CF = (SYSCLK_AD/2500000/2-1) << 3; // ADC轉換時鐘2.5MHz
132 1
133 1 if(gain==1) //gain在哪定義的????????????????????????
134 1 {
135 2 ADC0CF&=~0x07; // PGA增益 = 1
136 2 }else if(gain==2)
137 1 {
138 2 ADC0CF&=~0x07; // PGA增益 = 2
139 2 ADC0CF|=0x01;
140 2 }else if(gain==4)
141 1 {
142 2 ADC0CF&=~0x07; // PGA增益 = 4
143 2 ADC0CF|=0x02;
144 2 }else if(gain==8)
145 1 {
146 2 ADC0CF&=~0x07; // PGA增益 = 8
147 2 ADC0CF|=0x03;
148 2 }else if(gain==16)
149 1 {
150 2 ADC0CF&=~0x07; // PGA增益 = 16
151 2 ADC0CF|=0x04;
152 2 }else if(gain==0.5)
153 1 {
154 2 ADC0CF&=~0x07; // PGA增益 = 0.5
155 2 ADC0CF|=0x06;
156 2 }
157 1
158 1 EIE2 |= 0x02; // 允許ADC0中斷
159 1 }
160
161
162
163
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 428 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 27
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 3 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -