⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer2.c

📁 基于Mini51板的数字示波器设计
💻 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 + -