STM8 AD转换

来自丢石头百科
<tbody></tbody>
<tbody></tbody>
系统功能

  大部分STM8内部带有AD,本节以使用STM8S105的内部AD为例,给出AD转换中断程序。   

<tbody></tbody>
硬件设计

STM8 LED PB.jpg  AD转换值低位,LED控制电路原理图  STM8 LED PD.jpg AD转换值高位,LED控制电路原理图


<tbody></tbody>
软件设计

/********************************************************************* 微 雪 电 子 WaveShare <a class="Blue_2_12px_" href="https://wiki.diustou.com/" style="color: rgb(7, 66, 184);">http://www.waveShare.net

目标系统: 基于STM8单片机  应用软件: Cosmic CxSTM8  说 明: 若用于商业用途,请保留此段文字或注明代码来源 深 圳 市 微 雪 电 子 有 限 公 司 保 留 所 有 的 版 权 

                                                                                                                                          • /
  1. include <stm8s207s8.h>

void Init_AD(void) {         ADC_CSR=0x09; //选择通道        ADC_CR2|=0x08; // 数据排列,右对齐        ADC_TDRL=0x20; }

void main(void) {        PB_DDR = 0xff;         PB_CR1 = 0xff;        PB_CR2 = 0x00;

       PD_DDR = 0xff;        PD_CR1 = 0xff;         PD_CR2 = 0x00;

       PE_DDR &= (~0x40);

       Init_AD();        while (1)        {               ADC_CR1|=0x01;               for(i=0;i<100;i++); // 延时一段时间,至少7uS,保证ADC模块的上电完成               ADC_CR1|=0x01; // 再次将CR1寄存器的最低位置1,开启AD转换

              while((ADC_CSR & 0x80)!=0x80); // 等待转换结束               PB_ODR=ADC_DRH;               PD_ODR=ADC_DRL;               ADC_CSR&=(~0x80);        }

}
<tbody></tbody>
系统调试
用LED显示AD转换值,调“ADJ0.AD0”的可调电阻可改变AD转换值,观察它的变化。