热线电话:86-755-88864001 88864003

带ADC、PWM和比较器的单片机-EM78P458

发布时间: 2011-03-23 09:34 作者: 浏览次数: 87 字号:

本文概要介绍了EM78P458单片机的主要性能特点,并给出了该单片机的A/D转换器、脉宽调制器(PWM)和比较器的用法。

EM78P458是台湾义隆公司最新推出的一款高性能OTP单片机,除了具有其它EM78系列单片机的特点外,还增加了8路8位A/D转换器,2路脉宽调制器(PWM)和一个比较器,可以广泛应用在智能仪表、自动控制、家用电器等领域。下面主要介绍该单片机的特点以及A/D转换器、脉宽调制器和比较器的结构与用法。

1. EM78P458主要特点
  EM78P458具有如下特点:
  ● 8路8位A/D转换器,其中2路可选择5级放大增益;
  ●2路脉宽调制输出,10位分辨率,可用作D/A转换器;
  ●1 个比较器,可产生中断,外接反馈电阻可构成运放;
  ●8级硬件堆栈,方便程序调用;
  ●6个中断源: 定时/计数器溢出中断; I/O口输入电平变化中断(从SLEEP方式唤醒时); 外部中断; A/D转换完成中断; 比较器中断(结果为高);PWM中断;
  ● 4096×13bit片内ROM,96×8bit RAM;
  ●工作电压:2.2~6.0V,工作频率:DC~16MHz;
  ● 功耗低:5V/4MHz 1.5mA;3V/32kHz 15 μA;SLEEP 1μA;
  ● 8 个I/O口输入电平变化产生中断唤醒SLEEP;
  ●I/O口可编程为上拉、下拉和集电极开路;
  ●16个双向I/O口,20引脚;
  ●速度快:99%为单指令周期,每条指令周期为2个时钟周期;
  ●电源上电检测器,检测电压为2.0±0.15V;
  ●8位定时/计数器,可8位预分频;
  ●片内看门狗计数器,可8位预分频;
  ●57条精简指令,易学易用。

2. 引脚介绍
EM78P458的引脚排列如图1所示,功能如下:


OSCI、OSCO:分别为振荡输入、输出端,可外接标准晶振、陶瓷振荡或RC振荡;
P50~P57:双向I/O口,P50可以编程为外部中断输入,P51、P52可编程为PWM1 和 PWM2,P53可以作为A/D转换器的参考电压端,P54兼作外部计数脉冲输入(TCC),P55、P56 和P57分别作为比较器的负输入、正输入和输出;
  P60~P67:双向I/O口,可作为8路模拟信号输入。

3. A/D转换器与A/D转换
EM78P458的A/D转换器包括一个8位模拟开关,3个控制寄存器(ADCONR9,AD-CMP-CON/UICA0,GCON/IOC90),一个A/D结果寄存器(ADDATA/RA)。A/D转换器的原理框图如图2所示。

EM78P458的A/D转换采用逐次逼近式,转换结果保存在ADDATA,模拟信号的输入通道通过ADCON的位0,1和2来选择。

3.1 A/D转换器I/O口设置与控制寄存器
  GCON寄存器各位如下 :





















7


6


5


4


3


2


1


0


OP2E


OP1E


G42


G41


G40


G12


G11


G10


  OP2E:使能运放OP2,并把输入接到P64。当为0时关闭运放;为1时使能运放。
  OP1E:使能运放OP1,并把输入接到P60。当为0时关闭运放;为1时使能运放。
  G42~G40:选择OP2增益; 000~101 分别对应增益为1~32;
  G12~G10:选择OP1增益; 000~101 分别对应增益为1~32。

3.2 A/D转换控制寄存器ADCON/R9
  ADCON/R9寄存器各位如下 :

































BIT


7


6


5


4


3


2


1


0


SYMBOL


-


-


IOCS


ADRUN


ADPD


ADIS2


ADIS1


ADIS0


初始值


0


0


0


0


0


0


0


0


  ADRUN:A/D转换开始位;当为1时,A/D转换开始,由软件置位;为0时,A/D转换结束,硬件自动清零。
  ADPD:在睡眠方式进行A/D转换;当为1时,A/D转换正在进行;为0时,关闭参考电阻进入睡眠方式。
  ADIS2~ADIS0:A/D转换通道选择,000~111分别对应AN1~AN8,只有在ADPD和 ADRUN为0时才可以改变通道。

3.3 定义P6口为模拟输入或数字I/O口寄存器
  AD-CMP-CON/IOCA 0各位功能如下 :





















7


6


5


4


3


2


1


0


VREFS


CE


COE


IMS2


IMS1


IMS0


CKR1


CKR0




  VREFS:A/D转换参考电压选择;当为0时, A/D转换参考电压选择VDD;为1时, A/D转换参考电源接到P53/Vref。
  CE:比较器控制位;当为0时,关闭比较器;为1时,使用比较器。
  COE:比较器输出选择;当为定义的I/O为 0时,比较器用作运放(CE=1);为1时,用作比较器(CE=1)。




  IMS2~IMS1,选择模拟、数字I/O口,选择方式如下:
CKR1,CKR0:A/D转换周期选择;
   00=1:4 (缺省值)
   01=1:16
   10=1:64
   11=内部RC振荡周期

3.4 A/D转换步骤
  (1) 通过设置AD-CMP-CON寄存器的IMS2~IMS0位来设置模拟输入口及参考电压;
  (2) 设置ADCON0:
  a) 选择A/D输入通道(ADIS2~ADIS0);
  b) 选择放大器放大比例(GCON寄存器);
  c) 定义A/D转换时钟(CKR1、CKR0);
  d) 置ADPD位为1开始采样;
  (3) 关中断;
  (4)置ADRUN位为1开始转换;
  (5) 等待A/D转换中断(标志);
  (6)读A/D转换结果(ADDATA);
  (7) 清A/D转换中断标志,本次A/D转换结束。
  下面举例说明A/D转换的过程:
  ;定义通用寄存器
   R0 EQU 0
   STATUS EQU 3
   P5  EQU 5
   P6  EQU 6
   RF EQU 0X0F
  ;定义控制寄存器
   IOC50  EQU 0X05
   IOC60  EQU 0X06
   CINT  EQU 0X0F
  ;定义A/D控制寄存器
   ADDATA EQU 0X0A
   ADCONR EQU 0X
   ADCONC EQU 0X0A
   GCON EQU 0X
  ;位定义
   ADRUN EQU 0X04
  ADPD EQU 0X03

   ORG    0
   JMP INITIAL
   ORG   0X08
   (用户程序)
   CLR RF ;清A/D转换完成中断标志
   BS ADCONR,ADRUN ;开始下一次转换
   RETI
   INITIAL:
   MOV A,@0BXXXX1XXX
   IOW CINT ;使能A/D转换中断
   MOV A,@0XXX
   CONTW ;关中断
   MOV A,@0X00
   IOW ADCONC ;参考电压选VDD,P60输入,时钟Fosc/4
  ENADC:
   MOV A,@0BXXXXXXX1
   IOW P6 ;定义P60为输入,其它I/O口待定
   MOV A,@0B01000111
   IOW GCON ;使能OP1(运放),增益32
   BS ADCONR,ADPD ;关SLEEP
   ENI ;关中断
   BS ADCONR,ADRUN ;开始转换
   POLLING:
   JBC ADCONR,ADRUN
   JMP POLLING ;等待转换完成,如开中断则不需要等待
     (用户程序)

4. 脉宽调制输出(PWM)
  EM78P458含有2路脉宽调制输出,每一路输出都可以达到10位分辨率。

4.1 PWM 周期(PRD1和PRD2)
  脉宽调制的周期通过改写PRDX寄存器得到,当计数器TMRX等于PRDX时,将会发生如下动作:
   TMRX 清零;
   PWMX引脚被置为1;
   脉宽调制的周期通过DT1/DT2送到DTL1/DTL2。
  计算PWM周期的公式如下:
   T=(PRDX+1)×4×(1/Fosc)×(TMRX 预分频值)

4.2 占空比
  占空比的设置改写DTX寄存器得到,下面给出计算占空比的公式:
   P=DTX×(1/Fosc)×(TMRX 预分频值)

4.3 编程PWM 的步骤 (1)写入PWM周期到PRDX;
   (2)写入PWM占空比到DTX;
   (3)如果需要,使能PWM中断;
   (4)设置PWM1/PWM2引脚为输出;
   使能PWMX和TMRX,并设置TMRX的预分频比。

5. 比较器及其用法
   EM78P458有一个比较器,可以用作唤醒SLEEP中的单片机。(图3所示)。



使用比较器时应注意以下事项:
  ● 外部参考电压必须在VDD和VSS之间,既可以接在CIN+,也可以接在CIN-。
  ●比较器的输出结果保存在R3寄存器的CMPOUT位,可通过设置AD-CMPCON的COE位为1,使P57为输出;
  ●比较器上只要联接适当的反馈电阻即可作为运放来用;
  ● 使用比较器中断必须使能INTE和CMPIE,不论比较器输出方式如何,比较器中断都会发生。 比较器中断标志只能用软件清零;
  ● 比较器唤醒睡眠中的单片机: 如果使能比较器,则在睡眠方式下比较器也工作; 比较器反转,会将单片机从睡眠唤醒;
  如果不用此功能,进入SLEEP前应将比较器关闭。 由于篇幅有限,本文仅对上述内容作简要阐述,有关EM78P458的其它内容如睡眠、中断、看门狗、复位、睡眠唤醒及电源上电检测器等,请参阅相关资料。


来源:61ic


作者:杨春燕


 


发表评论

您的昵称 *

您的邮箱 * (绝对保密)

您的网站