单片机常用芯片头文件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//STC 单片机内部ADC转换程序

//可选择查询和中断方式

//H文件

#ifndef __ADC_H__

#define __ADC_H__

#define ADC_POWER 0x80 //ADC 电源控制位

#define ADC_FLAG 0x10 //ADC 完成标志

#define ADC_START 0x08 //ADC 启动控制位

//ADC转换速度选择

#define ADC_SPEEDLL 0x00 //420 clocks

#define ADC_SPEEDL 0x20 //280 clocks

#define ADC_SPEEDH 0x40 //140 clocks

#define ADC_SPEEDHH 0x60 //70 clocks

unsigned int AD_Result_Temp;

unsigned int GetADCResult (unsigned char chan); //ADC 转换处理,查询方式#endif

//C文件

#ifndef __ADC_C__

#define __ADC_C__

#include

//#include

/*----------------------------

初始化ADC 寄存器中断方式

----------------------------

void InitADC()

{

unsigned unsigned char chan=0;

P1ASF = 0xff; //设置P1口全部为ADC通道ADC_RES = 0; //清除高8位缓冲数据

ADC_RESL = 0; //清除低2位缓冲数据

ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | chan;

_nop_();

_nop_(); //打开ADC

}

*/

//----------------------------

//ADC 中断处理

//----------------------------

/*void adc_isr() interrupt 5 using 1

{

unsigned unsigned int AD_Result_Temp

ADC_CONTR &= !ADC_FLAG; //清除ADC 中断标志位return (((AD_Result_Temp|ADC_RES)<<2)+ADC_RESL); //返回10位ADC转换结果if (++ch > 7) ch = 0; //却换到下一个通道

ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | chan;

}

*/

unsigned int GetADCResult(unsigned char chan)

{

AD_Result_Temp=0;

ADC_RES=0;

ADC_RESL=0;

ADC_CONTR = ADC_POWER | ADC_SPEEDHH | chan | ADC_START;

_nop_(); //Must wait before inquiry

_nop_();

_nop_();

_nop_();

while (!(ADC_CONTR & ADC_FLAG));//等待完成

ADC_CONTR &= ~ADC_FLAG; //关闭ADC转换

AD_Result_Temp=(((AD_Result_Temp|ADC_RES)<<2)+ADC_RESL);

return AD_Result_Temp;

}

#endif

//74HC595

//发送完一个8位数据,就锁存一次

// 8个数码管,可以这样做

// for(i=0;i<8;i++)

// {

// Send_HC595(....//要发送的8为数据);

// Show_595();

// }

/********************************************************/

/* */

/*将显示数据送入74HC595内部移位寄存器*/

/* */

/********************************************************/

void Send_HC595(INT16U LED_DATA)

{

INT8U i;

for(i=0;i<8;i++)

{

HC595_DS=LED_DATA&0x80;

HC595_SHCP=1; //上升沿发生移位

_nop_();

_nop_();

HC595_SHCP=0;

LED_DATA=LED_DATA<<1;

}

}

/********************************************************/

/* */

/*将移位寄存器内的数据锁存到输出寄存器并显示*/

/* */

/********************************************************/

void Show_595(void)

{

HC595_STCP=0;

_nop_();

_nop_();

HC595_STCP=1; //上升沿将数据送到输出锁存器

_nop_();

_nop_();

HC595_STCP=0;

}

//74HC164

#ifndef __74LS164_H__

#define __74LS164_H__

extern void Write_Bit8(unsigned char bit_8)

{

unsigned char i;

for(i=8;i>0;i--) //数码管段8位数据

{

Data=bit_8&0x80; //传送一位数据

CLK=0;

CLK=1;

bit_8=bit_8<<1;

}

}

#endif

20位串口A/D转换器CS5513 20位串口A/D转换器CS5513 接口程序2010-03-22 14:56//cs5513接口的C51官方程序

相关文档
最新文档