本文概要介绍了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寄存器各位如下:
76543210OP2EOP1EG42G41G40G12G11G10
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寄存器各位如下:
BIT76543210SYMBOL--IOCSADRUNADPDADIS2ADIS1ADIS0初始值00000000
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各位功能如下:
76543210VREFSCECOEIMS2IMS1IMS0CKR1CKR0
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的其它内容如睡眠、中断、看门狗、复位、睡眠唤醒及电源上电检测器等,请参阅相关资料。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。