|
EM78P156的內部上/下拉、Open-drain、R-option功能簡述 ****************************** 下拉控制(Pull Low) ***************************** EM78P156有個專用的下拉控制寄存器(Pull-down Control Register)IOCB: 7 6 5 4 3 2 1 0 /PD7 /PD6 /PD5 /PD4 - /PD2 /PD1 /PD0 Bit0~bit2、bit4~bit7: 分別為P50~P52、P60~P63管腳的下拉使能控制位 0: 內部下拉使能 1: 內部下拉禁止 使用說明: 將IOCB控制寄存器所對應的位清0,即可使能其對應的I/O引腳內部下拉,置1即關閉內部下拉功能。 IOR IOCB AND A, @0b11111110 IOW IOCB ; Enable P50 internal pull-down *************************** 漏極開路控制(Open drain) *************************** EM78P156有個專用的漏極開路控制寄存器(Open-drain Control Register) IOCC: 7 6 5 4 3 2 1 0 OD7 OD6 OD5 OD4 OD3 OD2 OD1 OD0 Bit0~bit7: 分別為P6端口管腳的漏極開路使能控制位 0: 漏極開路輸出禁止 1: 漏極開路輸出使能 使用說明: 將IOCC控制寄存器所對應的位置1,即可使能其對應的I/O引腳為漏極開路輸出,清0即關閉漏極開路輸出功能。 IOR IOCC OR A, @0b00000001 IOW IOCC ; Enable P60 open-drain output 注意:若使能引腳漏極開路輸出,需有上拉電阻。 ****************************** 上拉控制(pull high) ***************************** EM78P156有個專用的上拉控制寄存器(Pull-high Control Register) IOCD: 7 6 5 4 3 2 1 0 /PH7 /PH6 /PH5 /PH4 /PH3 /PH2 /PH1 /PH0 Bit0~bit7: 分別為P6端口管腳的上拉使能控制位 0: 內部上拉使能 1: 內部上拉禁止 使用說明: 將IOCD控制寄存器所對應的位清0,即可使能其對應的I/O引腳內部上拉,置1即關閉內部上拉功能。 IOR IOCD AND A, @0b11111110 IOW IOCD ; Enable P60 internal pull-high ******************************** R-option ******************************** EM78P156的R-option 功能相關寄存器有IOCE,即: WDT控制寄存器(WDT Control Register) 7 6 5 4 3 2 1 0 WDTE EIS - ROC - - - - bit4(ROC): ROC用于R-option功能 1: 使能R-option功能,其引腳P50~P51的狀態(tài)可由控制器讀出。 0: 禁止R-option功能。 使用說明: EM78P156的R-option功能的設置(是在單片機最初上電復位時執(zhí)行的引導程序)可通過IOCE寄存器中的bit4位來實現,其步驟如下: (1) 設置引腳P5.0、P5.1為輸入狀態(tài)。 (2) 定義ROC為1,使能P5.0、P5.1的R-option功能。 (3) 讀取引腳P5.0、P5.1的電平狀態(tài),并且保存起來。 (4) 重新定義ROC為0,禁止R-option功能。 (5) 重新設置引腳P5.0、P5.1為輸出狀態(tài)。 (6) 依據步驟(3)檢測到的P5.0、P5.1引腳上的值,跳轉到不同的程序分支。 應用EM78P156的R-option功能時,需注意:用戶必須使P51引腳和/或P50引腳通過一個430k歐外接電阻r(Rex)與VSS相連。為確保電壓拉低,建議外接330k歐或以下 應用示例: ;----------------------------------------------------------------------; ; Define MCU RAM or Variable Value ;----------------------------------------------------------------------; STATUS == 0x03 Z == 1 P5 == 0x05 ; PORT5端口 IOCE == 0x0E ; WDT控制寄存器 Reg_acc == 0x20 ; 保存P5.0、P5.1狀態(tài)寄存器 ;-------------------------------Demo Code------------------------------; MOV A,@0bXXXXXX11 IOW P5 ; 設置P5.0、P5.1為輸入狀態(tài) MOV A,@0bXXX1XXXX IOW IOCE ; 啟用R-option功能 MOV A,P5 ; 讀出P5以取得P5.0、P5.1的R-option引腳狀態(tài) AND A,@0b00000011 MOV Reg_acc,A ; 保留P5.0、P5.1電平狀態(tài) MOV A,@0bXXX0XXXX IOW IOCE ; 禁止R-option功能 MOV A,@0bXXXXXX00 IOW P5 ; 設置P5.0、P5.1為輸出狀態(tài) ; 在此之后P5可做為普通I/O口使用 ; 分支檢測程序 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: ; 用戶程序 . . . |