📄 timer2.c
字号:
#include "timer2.h"
#include "Mini51b.h"
#include "osc.h"
//定时器2初始化
void timer2_init(void)
{
TH2 = 0;
TL2 = 0;
RCAP2H = 255-(CLOCK/12/TIME2_PER_SEC)/256;
RCAP2L = 255-(CLOCK/12/TIME2_PER_SEC)%256;
ET2 = 1; //允许中断
TR2 = 1; //启动T2
}
//读取ADC结果函数
//在22.1184M晶振下,采集一个数据约100uS
unsigned char read_adc(void)
{
unsigned char i,temp;
temp = 0;
ADC_CS = 0; //开启控制电路,使能DA和CK IO引脚;
for(i=0;i<8;i++) //采集10次 ,即10bit
{
ADC_CK = 0;
temp <<= 1;
if(ADC_DA) temp++;
ADC_CK = 1;
}
ADC_CK = 0;
ADC_CK = 1;
ADC_CK = 0;
ADC_CK = 1;
ADC_CS = 1;
return(temp);
}
void timer2(void) interrupt 5
//晶振22.1184M,最长定时35ms,最短定时6.4us(估计值)
{
static unsigned char i=0;
unsigned char j;
TF2=0;
if(val_tdiv==0) {
if((da_finish==0)&&(run_flag==0)) {
for(i=0;i<DATA_SIZE;i++) {
da_buffer[i]=read_adc();
for(j=0;j<22;j++);
_nop_();_nop_();_nop_();_nop_();
}
da_finish=0xff;
}
}
else {
if((da_finish==0)&&(run_flag==0)) {
da_buffer[i]=read_adc();
if(++i == DATA_SIZE) {
i=0;
da_finish=0xff;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -