新闻  |   论坛  |   博客  |   在线研讨会
带ADC、PWM和比较器的单片机-EM78P458
yanqin | 2009-04-17 18:09:47    阅读:1903   发布文章

  本文概要介绍了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×8bitRAM;
  ●工作电压:2.2~6.0V,工作频率:DC~16MHz;
  ●功耗低:5V/4MHz1.5mA;3V/32kHz15μA;SLEEP1μ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.1A/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.2A/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/IOCA0各位功能如下:
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.4A/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转换的过程:
  ;定义通用寄存器
  R0EQU0
  STATUSEQU3
  P5 EQU5
  P6 EQU6
  RFEQU0X0F
  ;定义控制寄存器
  IOC50 EQU0X05
  IOC60 EQU0X06
  CINT EQU0X0F
  ;定义A/D控制寄存器
  ADDATAEQU0X0A
  ADCONREQU0X
  ADCONCEQU0X0A
  GCONEQU0X
  ;位定义
  ADRUNEQU0X04
 ADPDEQU0X03

  ORG  0
  JMPINITIAL
  ORG 0X08
  (用户程序)
  CLRRF;清A/D转换完成中断标志
  BSADCONR,ADRUN;开始下一次转换
  RETI
  INITIAL:
  MOVA,@0BXXXX1XXX
  IOWCINT;使能A/D转换中断
  MOVA,@0XXX
  CONTW;关中断
  MOVA,@0X00
  IOWADCONC;参考电压选VDD,P60输入,时钟Fosc/4
  ENADC:
  MOVA,@0BXXXXXXX1
  IOWP6;定义P60为输入,其它I/O口待定
  MOVA,@0B01000111
  IOWGCON;使能OP1(运放),增益32
  BSADCONR,ADPD;关SLEEP
  ENI;关中断
  BSADCONR,ADRUN;开始转换
  POLLING:
  JBCADCONR,ADRUN
  JMPPOLLING;等待转换完成,如开中断则不需要等待
    (用户程序) 

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

   4.1PWM周期(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的其它内容如睡眠、中断、看门狗、复位、睡眠唤醒及电源上电检测器等,请参阅相关资料。



*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客