// 定义与 ADC 有关的特殊功能寄存器
sfr P1_ASF = 0x9d; //A/D转换功能允许寄存器
sfr ADC_CONTR = 0xbc; //A/D转换控制寄存器
sfr ADC_RES = 0xbd; //A/D转换结果寄存器
sfr ADC_RESL = 0xbe; //A/D转换结果寄存器
uint8 get_AD(uint8 channel)
{
ADC_RES = 0;
P1 |= (0x01 << channel); //要设置为 A/D 转换的P1.x 口,先设为高
P1_ASF &= (~(0x01 << channel));//设置 A/D 转换输入脚
ADC_CONTR =0xa8 | channel; // 选择 A/D 当前通道
while (!(ADC_CONTR & 0x10)) // 等待A/D 转换结束
{
}
ADC_CONTR &= 0xF7; //1111,0111 令 ADC_START = 0, 关闭A/D 转换,
return (((unint16)ADC_RES)<<2 | (0xfc & ADC_RESL); // 返回 A/D 转换结果
}
STC12C5A06S2单片机 的 数据手册 第329页 有例程。有C语言程序,也有汇编语言程序。
可以上 STC 官网 下载 数据手册。