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

📄 stc12c5412ad_driver.c

📁 此程序可以显示输入波形
💻 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 + -