📄 timer2.lst
字号:
C51 COMPILER V8.02 TIMER2 01/31/2009 14:04:31 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE TIMER2
OBJECT MODULE PLACED IN timer2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE timer2.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "timer2.h"
2 #include "Mini51b.h"
3 #include "osc.h"
4
5 //定时器2初始化
6 void timer2_init(void)
7 {
8 1 TH2 = 0;
9 1 TL2 = 0;
10 1 RCAP2H = 255-(CLOCK/12/TIME2_PER_SEC)/256;
11 1 RCAP2L = 255-(CLOCK/12/TIME2_PER_SEC)%256;
12 1 ET2 = 1; //允许中断
13 1 TR2 = 1; //启动T2
14 1 }
15
16
17 //读取ADC结果函数
18 //在22.1184M晶振下,采集一个数据约100uS
19 unsigned char read_adc(void)
20 {
21 1 unsigned char i,temp;
22 1 temp = 0;
23 1 ADC_CS = 0; //开启控制电路,使能DA和CK IO引脚;
24 1 for(i=0;i<8;i++) //采集10次 ,即10bit
25 1 {
26 2 ADC_CK = 0;
27 2 temp <<= 1;
28 2 if(ADC_DA) temp++;
29 2 ADC_CK = 1;
30 2 }
31 1 ADC_CK = 0;
32 1 ADC_CK = 1;
33 1 ADC_CK = 0;
34 1 ADC_CK = 1;
35 1 ADC_CS = 1;
36 1 return(temp);
37 1 }
38
39
40 void timer2(void) interrupt 5
41 //晶振22.1184M,最长定时35ms,最短定时6.4us(估计值)
42 {
43 1 static unsigned char i=0;
44 1 unsigned char j;
45 1 TF2=0;
46 1 if(val_tdiv==0) {
47 2
48 2 if((da_finish==0)&&(run_flag==0)) {
49 3 for(i=0;i<DATA_SIZE;i++) {
50 4 da_buffer[i]=read_adc();
51 4 for(j=0;j<22;j++);
52 4 _nop_();_nop_();_nop_();_nop_();
53 4 }
54 3 da_finish=0xff;
55 3 }
C51 COMPILER V8.02 TIMER2 01/31/2009 14:04:31 PAGE 2
56 2 }
57 1 else {
58 2 if((da_finish==0)&&(run_flag==0)) {
59 3 da_buffer[i]=read_adc();
60 3 if(++i == DATA_SIZE) {
61 4 i=0;
62 4 da_finish=0xff;
63 4 }
64 3 }
65 2
66 2 }
67 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 166 ----
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 + -