📄 stc12c5412ad_driver.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 + -