c5 单片机 程序题 c语言,STC12C5A60S2单片机A/D转换函数C语言程序模板

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

函数名:8位A/D转换初始化函数

调  用:Read (?);

参  数:输入的端口(0000 0XXX 其中XXX是设置输入端口号,可用十进制0~7表示,0表示P1.0,7表示P1.7)

返回值:无

结  果:开启ADC功能并设置ADC的输入端口

备  注:适用于STC12C2052AD系列单片机(必须使用STC12C2052AD.h头文件)

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

void Read_init (unsigned char CHA){

unsigned char AD_FIN=0; //存储A/D转换标志

CHA &= 0x07;            //选择ADC的8个接口中的一个(0000 0111 清0高5位)

ADC_CONTR = 0x40;  //ADC转换的速度(0XX0 0000 其中XX控制速度,请根据数据手册设置)

_nop_();

ADC_CONTR |= CHA;       //选择A/D当前通道

_nop_();

ADC_CONTR |= 0x80;      //启动A/D电源

DELAY_MS(1);            //使输入电压达到稳定(1ms即可)

}

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

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

函数名:8位A/D转换函数

调  用:? = Read ();

参  数:无

返回值:8位的ADC数据

结  果:读出指定ADC接口的A/D转换值,并返回数值

备  注:适用于STC12C2052AD系列单片机(必须使用STC12C2052AD.h头文件)

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

unsigned char Read (void){

unsigned char AD_FIN=0; //存储A/D转换标志

ADC_CONTR |= 0x08;      //启动A/D转换(0000 1000 令ADCS = 1)

_nop_();

_nop_();

_nop_();

_nop_();

while (AD_FIN ==0){     //等待A/D转换结束

AD_FIN = (ADC_CONTR & 0x10); //0001 0000测试A/D转换结束否

}

ADC_CONTR &= 0xE7;      //1111 0111 清ADC_FLAG位, 关闭A/D转换,

return (ADC_DATA);          //返回A/D转换结果(8位)

}

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

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

程序名:    8位ADC转换实验程序

硬件支持:  STC12C2052AD 使用ADC功能 外部晶体12MHz

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

说明:

PC串口端设置 [ 4800,8,无,1,无 ]

将ADC读出的数值通过串口以十六进制方式显示。

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

#include //单片机头文件

#include //51基本运算(包括_nop_空函数)

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

函数名:毫秒级CPU延时函数

调  用:DELAY_MS (?);

参  数:1~65535(参数不可为0)

返回值:无

结  果:占用CPU方式延时与参数数值相同的毫秒时间

备  注:应用于1T单片机时i<600,应用于12T单片机时i<125

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

void DELAY_MS (unsigned int a){

unsigned int i;

while( a-- != 0){

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值