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

📄 stc12c5412ad_driver.c

📁 基于STC12C5412AD单片机的简易存储示波器设计
💻 C
字号:
//模块:STC12C5412AD_Driver.C
//功能:单片机增强功能驱动模块
//晶振:24.000MHz
//芯片: STC12C5412AD
//版本:V1.0.0
//设计:魏广寅
//日期:2007.4.10
#include "STC12C5412AD.h"
#define uchar unsigned char
#define uint unsigned int
//--------------------------------------------------------------------
/*void set_timer0_1T()//设置T0为1T模式
{
	AUXR=AUXR|0x80;
}
//--------------------------------------------------------------------
void set_timer1_1T()//设置T1为1T模式
{
	AUXR=AUXR|0x40;
}
//--------------------------------------------------------------------
void set_timer0_12T()//设置T0为12T模式
{
	AUXR=AUXR&0x7f;
}
//--------------------------------------------------------------------
void set_timer1_12T()//设置T1为12T模式
{
	AUXR=AUXR&0xbf;
}
//--------------------------------------------------------------------
uchar EEPROM_read(uint addr)//EEPROM字节读
{
	ISP_ADDRH=(addr&0xff00)>>8;
	ISP_ADDRL=addr&0x00ff;
	ISP_CONTR=0x81;
	ISP_CMD=1;
	ISP_TRIG=0x46;
	ISP_TRIG=0xb9;
	return ISP_DATA;
}
//--------------------------------------------------------------------
void EEPROM_write(uint addr,uchar dat)//EEPROM字节写
{
	ISP_DATA=dat;
	ISP_ADDRH=(addr&0xff00)>>8;
	ISP_ADDRL=addr&0x00ff;
	ISP_CONTR=0x81;
	ISP_CMD=2;
	ISP_TRIG=0x46;
	ISP_TRIG=0xb9;
}
//--------------------------------------------------------------------
void EEPROM_ERASE(uint addr)//EEPROM扇区擦除
{
	ISP_ADDRH=(addr&0xff00)>>8;
	ISP_ADDRL=addr&0x00ff;
	ISP_CONTR=0x81;
	ISP_CMD=3;
	ISP_TRIG=0x46;
	ISP_TRIG=0xb9;
} */
//--------------------------------------------------------------------
/*    void set_p3_tw()
 {
  	P3M0|=0x00;
 	P3M1|=0x00;
 }*/
 //--------------------------------------------------------------------
void AD_init(uchar AD_port_sel ) //ADC初始化
{
	ADC_CONTR|=0x80;  //开ADC电源

	switch(AD_port_sel)	//选择作为ADC的端口
	{
		case 0:
		P1M0=0x01;
		P1M1=0x00;
		ADC_CONTR&=0xf8;

		break;
		
		case 1:
		P1M0=0x02;
		P1M1=0x00;
		ADC_CONTR&=0xf8;
		ADC_CONTR|=0x01;
		break;

		case 2:
		P1M0=0x04;
		P1M1=0x00;
		ADC_CONTR&=0xf8;
		ADC_CONTR|=0x02;
		break;

		case 3:
		P1M0=0x08;
		P1M1=0x10;
		ADC_CONTR&=0xf8;
		ADC_CONTR|=0x03;
		break;

		case 4:
		P1M0=0x10;
		P1M1=0x00;
		ADC_CONTR&=0xf8;
		ADC_CONTR|=0x03;
		break;

		case 5:
		P1M0=0x20;
		P1M1=0x00;
		ADC_CONTR&=0xf8;
		ADC_CONTR|=0x05;
		break;

		case 6:
		P1M0=0x40;
		P1M1=0x00;
		ADC_CONTR&=0xf8;
		ADC_CONTR|=0x06;
		break;

		case 7:
		P1M0=0x80;
		P1M1=0x80;
		ADC_CONTR&=0xf8;
		ADC_CONTR|=0x07;
		break;
	}
	ADC_CONTR=0xe7;
}
//--------------------------------------------------------------------
uint GET_AD_Result()//启动AD转换并返回转换值
{
	uchar temp;
	uint data_temp;
	data_temp=0;
	ADC_DATA=0;
	ADC_LOW2=0;
	ADC_CONTR|=0x08;
re:	temp=0x10;
	temp&=ADC_CONTR;
	if(temp==0)
		goto re;
	ADC_CONTR&=0xe7;
	data_temp=ADC_DATA;
	data_temp<<=2;
	data_temp+=ADC_LOW2;
	return data_temp;
}
//--------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -