|
本文概要介紹了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的其它內容如睡眠、中斷、看門狗、復位、睡眠喚醒及電源上電檢測器等,請參閱相關資料。
|