|
EM78P447的內(nèi)部上拉、Open-drain、R-option等功能簡(jiǎn)述 ****************************** 上拉控制(Pull High) ***************************** 與EM78P447上拉功能相關(guān)的寄存器是CONT,即:控制寄存器(Control Register) 7 6 5 4 3 2 1 0 /PHEN /INT TS TE PAB PSR2 PSR1 PSR0 Bit7(/PHEN): P60~P67, P74和P75上拉使能控制位 0: 使能內(nèi)部上拉 1: 禁止內(nèi)部上拉 使用說(shuō)明: 將CONT寄存器第7位清0,即使能相應(yīng)的I/O口內(nèi)部上拉,置1即關(guān)閉內(nèi)部上拉功能。 CONTR AND A, @0b01111111 CONTW ; 使能P6端口與P74、P75引腳內(nèi)部上拉 EM78P447沒(méi)有內(nèi)部下拉功能。 *************************** Open-drain 與 R-option ************************** 與EM78P447的Open-drain、R-option功能相關(guān)的寄存器是IOCE,即: WDT控制寄存器(WDT Control Register) 7 6 5 4 3 2 1 0 - ODE WDTE SLPC ROC - - /WUE Bit3(ROC): ROC為P70、P71管腳的R-option功能控制位 1: 使能R-option功能,其引腳P50~P51的狀態(tài)可由控制器讀出。 0: 禁止R-option功能。 Bit6(ODE): ODE為P76、P77管腳的漏極開(kāi)路使能控制位 0: 漏極開(kāi)路輸出禁止 1: 漏極開(kāi)路輸出使能 R-option功能使用說(shuō)明: 應(yīng)用EM78P447的R-option功能編程與EM78P156一樣,都需有一段引導(dǎo)程序,其步驟如下: (1) 設(shè)置引腳P7.0、P7.1為輸入狀態(tài)。 (2) 定義ROC為1,使能P7.0、P7.1的R-option功能。 (3) 讀取引腳P7.0、P7.1的電平狀態(tài),并且保存起來(lái)。 (4) 重新定義ROC為0,禁止R-option功能 (5) 重新設(shè)置引腳P7.0、P7.1為輸出狀態(tài)。 (6) 依據(jù)步驟(3)檢測(cè)到的P7.0、P7.1引腳上的值,跳轉(zhuǎn)到不同的程序分支。 應(yīng)用EM78P447的R-option功能時(shí),需注意:用戶必須使P71引腳和/或P70引腳通過(guò)一個(gè)430k歐外接電阻r(Rex)與VSS相連。為確保電壓拉低,建議外接330k歐或以下 應(yīng)用示例: ;----------------------------------------------------------------------; ; Define MCU RAM or Variable Value ;----------------------------------------------------------------------; STATUS == 0x03 Z == 1 P7 == 0x07 ; PORT5端口 IOCE == 0x0E ; WDT控制寄存器 Reg_acc == 0x20 ; 保存P7.0、P7.1狀態(tài)寄存器 ;-------------------------------Demo Code------------------------------; MOV A,@0bXXXXXX11 IOW P7 ; 設(shè)置P7.0、P7.1為輸入狀態(tài) MOV A,@0bXXXX1XXX IOW IOCE ; 啟用R-option功能 MOV A,P7 ; 讀出P7以取得P7.0、P7.1的R-option引腳狀態(tài) AND A,@0b00000011 MOV Reg_acc,A ; 保留P7.0、P7.1電平狀態(tài) MOV A,@0bXXXX0XXX IOW IOCE ; 禁止R-option功能 MOV A,@0bXXXXXX00 IOW P7 ; 設(shè)置P7.0、P7.1為輸出狀態(tài) ; 在此之后P7可做為普通I/O口使用 ; 分支檢測(cè)程序 MOV A, Reg_acc XOR A, @0x00 ; 判斷是否滿足條件1,滿足則跳到分支程序1 JBC STATUS, Z ; 不滿足條件1則繼續(xù)判斷 JMP Case1 MOV A, Reg_acc XOR A, @0x01 ; 判斷是否滿足條件2,滿足則跳到分支程序2 JBC STATUS, Z ; 不滿足條件2則繼續(xù)判斷 JMP Case2 MOV A, Reg_acc XOR A, @0x02 ; 判斷是否滿足條件3,滿足則跳到分支程序3 JBC STATUS, Z ; 不滿足條件3則繼續(xù)判斷 JMP Case3 JMP Case4 ; 除以上三種條件外的第四種情況則跳至分支程序4 Case1: ; 用戶程序 . . . Case2: ; 用戶程序 . . . Case3: ; 用戶程序 . . . Case4: ; 用戶程序 . . . |