⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 em78p153.dt

📁 手持发射器(遥控笔)
💻 DT
字号:
;************************************************
;* 版 本:1.0                标    题: 
;* 作 者:aryu               设计日期: 
;************************************************
;* 描 述: 
;* MCU--EM78P153S
;* 
;* RESET: disable
;* WATCHDOG: enable
;* CLOCK: 2
;* OSCI: RC
;* OSCO: inter_or_hight
;* SUT1: 1
;* SUT0: 0
;* RC_out: P64
;************************************************
;*引脚图:
;     P50 ----- P51
;     P67 ----- P52
;     P66 ----- P53
;     vdd ----- vss
;P65/OSCI ----- P60/INT
;P64/OSCO ----- P61
;P63//RST ----- P62/TCC
;************************************************
;功能说明:
;* 
;==============寄存器的定义======================
        R0 == 0X00
        R1 == 0X01
        PC == 0X02

        R3 == 0X03
        C==0
        DC==1
        Z==2
        P==3
        T==4
        GP0==5
        GP1==6
        RST==7

        R4 == 0X04
        P5 == 0X05
        Kb1==0		;PU,PD,LS
        LED==1
        CFW==2
        CLS==3
        
        P6 == 0X06
        STR==0		;PU
        B==1        ;PD
        F5==2		;LS
        VCC==3
        ESC==4
        PW==5
        Kb2==6
        KM==7
        
        
        RA == 0X0A
        RB == 0X0B
        RC == 0X0C
        RD == 0X0D
        RE == 0X0E
        RF == 0X0F

;============用户寄存器========================================
        TM1     == 0X10
        TM2     == 0X11
        TM3     == 0X12
        FWDAT   == 0X13
        FWDATB  == 0X14
        FLAG    == 0X15
        TIME    == 0X16
        CODE    == 0X17
        NUM     == 0X18
        DATA    == 0X19
        GP==0
        ON==1
        DM==2
        FS==3
        LAS==4
;==============================================================
        ORG     0X000
        
        ADD     A,@0XFF
        ADD     A,@0XFF
        ADD     A,@0XFF
        ADD     A,@0XFF
        ADD     A,@0XFF
        ADD     A,@0XFF
        ADD     A,@0XFF
        ADD     A,@0XFF
        ADD     A,@0XFF
        ADD     A,@0XFF
        ADD     A,@0XFF
        ADD     A,@0XFF
        ADD     A,@0XFF
        ADD     A,@0XFF
        JMP     MAIN
;==============================================================
SEND:
        CLR     NUM
        MOV		A,CODE
        MOV		FWDAT,A
        Bc      P5,CFW
        MOV     A,@200
        CALL    D20uS
        Bs      P5,CFW
        MOV     A,@100
        CALL    D20uS
        Bc      P5,CFW
        MOV     A,@100
        CALL    D20uS
RGO:
        MOV     A,@8
        MOV     TM3,A
GO:
        RLC     FWDAT
        JBC     R3,C
        JMP     GH
        CALL    L               ;C=0
        JMP     GN
GH:
        CALL    H               ;C=1
GN:
        DJZ     TM3
        JMP     GO
        
        INC		NUM
        MOV		A,@1
        XOR		A,NUM
        JBS		R3,Z
        JMP		COMP2
        COMA    CODE
        MOV     FWDAT,A
        JMP		RGO
COMP2:
		MOV		A,@2
		XOR		A,NUM
		JBS		R3,Z
		JMP		COMP3
		MOV		A,DATA
		MOV		FWDAT,A
		JMP		RGO
COMP3:
		MOV		A,@3
		XOR		A,NUM
		JBS		R3,Z
		JMP		OVER
		COMA    DATA
        MOV     FWDAT,A
        JMP		RGO
OVER:
        Bs      P5,CFW
        RET
;------------------------------------
H:
        Bs      P5,CFW
        MOV     A,@20
        CALL    D20uS
        Bc      P5,CFW
        MOV     A,@20
        CALL    D20uS
        RET
L:
        Bs      P5,CFW
        MOV     A,@40
        CALL    D20uS
        Bc      P5,CFW
        MOV     A,@20
        CALL    D20uS
        RET

D20uS:                              ;20uS
        MOV     TM2,A
LH:
        MOV     A,@12
        MOV     TM1,A
LL:
        DJZ     TM1
        JMP     LL
        DJZ     TM2
        JMP     LH
        RET
;============================================================================
;====================================MAIN====================================
;============================================================================
MAIN:
        MOV     A,@0B10011111           ;
        IOW     P6
;       MOV     A,@0B10011111			;KB2(P66),PW(P65)
        MOV     P6,A
        MOV     A,@0B11110000           ;
        IOW     P5
        MOV     A,@0B11110110			;LS(P53),FW(P52),LED(P51),KB1(P50)
        MOV     P5,A
;       MOV     A,@0B11111111           ;下拉禁止
;       IOW     RB
;       MOV     A,@0B00000000           ;漏极开路禁止
;       IOW     RC
        MOV     A,@0B00000000           ;P6_0,P6_1,P6_2上拉使能
        IOW     RD
        MOV     A,@0B10000000           ;使能WDT,使能P60
        IOW     RE
        MOV     A,@0x0E				   ;使用内部时钟计数
        CONTW
        DISI
        
;CHCODE:
;	    WDTC
;       NOP
;       JBS     P6,PD
;       JMP     SETCODE
;       NOP
;       JBS     P6,PU
;       JMP     SETCODE
;       JMP     CHCODE
;SETCODE:
;	    MOV		A,R1
;	    MOV		CODE,A
;	    JMP		KEYON

WHILE:
		WDTC
		JBC		FLAG,LAS
		JMP		KEYCHEK
		JBC     FLAG,5
		JMP     LOOKM
		JBS     FLAG,ON
		JMP     KEYCHEK
		BC      FLAG,ON
		MOV     A,@10
		MOV     TIME,A
LOOP:
		MOV     A,@200
		CALL    D20uS
		DJZ     TIME
		JMP     LOOP
		
LOOKM:
		BC		FLAG,5
		MOV     A,@50
		CALL    D20uS
		
KEYCHEK:
		BS		P6,Kb2
		BC		P5,Kb1
		MOV		A,@5
		CALL	D20uS
		JBS		P6,F5
		JMP		LASER
		BC		FLAG,LAS
		BC		P5,CLS
		JBS		P6,STR
		JMP		PAGEU
		JBS		P6,B
		JMP		PAGED
		BC		P6,Kb2
		BS		P5,Kb1
		MOV		A,@5
		CALL	D20uS
		JBS		P6,STR
		JMP		START
		JBS		P6,B
		JMP		SHIFTB
		JBS		P6,F5
		JMP		ATF5
		JBS		P6,ESC
		JMP		ATESC
		BC		P5,Kb1
		BS		P5,LED
		Bc		P6,PW					;5V-3V ON
		MOV		A,@5
		CALL	D20uS
		
		MOV     A,@0x0E
		CONTW
		WDTC
		MOV     A,@0B00000000           ;禁止WDT,P60使用
		IOW     RE
		MOV     P6,P6                   ;读PORT6端口,改变前的值
		MOV     A,@0B00000010           ;外部中断禁止,PORT6输入变化中断使能,TCC中断禁止
		IOW     RF
		DISI                            ;使能全局中断()
		SLEP                            ;DISI禁止全局中唤醒时进入中断0x008断(唤醒时从SLEP下一条指令开始)
		NOP                             ;从休眠模式唤醒后,WDT自动使能,根据需要重新设置
		WDTC
		MOV     A,@0x00
		IOR     RE
		IOW     RF
		MOV     RF,A
		JBC		FLAG,FS
		JMP		KEYON
		MOV		A,R1
		MOV		CODE,A
		BS		FLAG,FS
KEYON:
		BS		P5,Kb1
		BC		P6,Kb2
		MOV		A,@5
		CALL	D20uS
		JBS		P6,STR
		JMP		START
		JBS		P6,B
		JMP		SHIFTB
		JBS		P6,F5
		JMP		ATF5
		JBS		P6,ESC
		JMP		ATESC
		BS		P6,Kb2
		BC		P5,Kb1
		MOV		A,@5
		CALL	D20uS
		JBS		P6,STR
		JMP		PAGEU
		JBS		P6,B
		JMP		PAGED
		JBS		P6,F5
		JMP		LASER
		BC		P6,Kb2
		JMP     WHILE

START:
		JBS		P6,KM
		JMP		D0START
		JMP		MUSEAY
SHIFTB:
		JBS		P6,KM
		JMP		DOSHIFTB
		JMP		MUSEDY
ATF5:
		JBS		P6,KM
		JMP		DOF5
		JMP		MUSEDX
ATESC:
		JBS		P6,KM
		JMP		DOESC
		JMP		MUSEAX
PAGEU:
		JBS		P6,KM
		JMP		DOPU
		JMP		MUSEL
PAGED:
		JBS		P6,KM
		JMP		DOPD
		JMP		MUSER
		
;-------------------------------------
LASER:
		BS		P6,PW					;5V-3V ON
		BC      P5,LED					;KEY-LED ON
		BS		P5,CLS
		BS      FLAG,LAS
		JMP     WHILE
;-------------------------------------
D0START:
		BS		P6,PW					;5V-3V ON
		BC      P5,LED					;KEY-LED ON
		MOV     A,@1
		MOV     DATA,A
		MOV     A,@5
		CALL    D20uS
		MOV     A,@4
		MOV     TIME,A
START1:
		WDTC
		CALL    SEND
		DJZ     TIME
		JMP     START1
		BS      FLAG,ON
		JMP     WHILE

;-------------------------------------
DOESC: 
		BS		P6,PW					;5V-3V ON
		BC      P5,LED					;KEY-LED ON
		MOV     A,@2
		MOV     DATA,A
		MOV     A,@5
		CALL    D20uS
		MOV     A,@4
		MOV     TIME,A
DOESC1:
		WDTC
		CALL    SEND
		DJZ     TIME
		JMP     DOESC1
		BS      FLAG,ON
		JMP     WHILE

;-------------------------------------
DOF5:   
		BS		P6,PW					;5V-3V ON
		BC      P5,LED					;KEY-LED ON
		MOV     A,@3
		MOV     DATA,A
		MOV     A,@5
		CALL    D20uS
		MOV     A,@4
		MOV     TIME,A
DOF51:
		WDTC
		CALL    SEND
		DJZ     TIME
		JMP     DOF51
		BS      FLAG,ON
		JMP     WHILE

;-------------------------------------
DOSHIFTB:
		BS		P6,PW					;5V-3V ON
		BC      P5,LED					;KEY-LED ON
		MOV     A,@4
		MOV     DATA,A
		MOV     A,@5
		CALL    D20uS
		MOV     A,@4
		MOV     TIME,A
SHIFTB1:
		WDTC
		CALL    SEND
		DJZ     TIME
		JMP     SHIFTB1
		BS      FLAG,ON
		JMP     WHILE

;-------------------------------------
DOPD:
		BS		P6,PW					;5V-3V ON
		BC      P5,LED					;KEY-LED ON
		MOV     A,@5
		MOV     DATA,A
		MOV     A,@5
		CALL    D20uS
		MOV     A,@4
		MOV     TIME,A
DOPD1:
		WDTC
		CALL    SEND
		DJZ     TIME
		JMP     DOPD1
		BS      FLAG,ON
		JMP     WHILE

;-------------------------------------
DOPU:
		BS		P6,PW					;5V-3V ON
		BC      P5,LED					;KEY-LED ON
		MOV     A,@6
		MOV     DATA,A
		MOV     A,@5
		CALL    D20uS
		MOV     A,@4
		MOV     TIME,A
DOPU1:
		WDTC
		CALL    SEND
		DJZ     TIME
		JMP     DOPU1
		BS      FLAG,ON
		JMP     WHILE
		
;-------------------------------------
MUSEDX:
		BS		P6,PW					;5V-3V ON
		BC      P5,LED					;KEY-LED ON
		MOV     A,@7
		MOV     DATA,A
		MOV     A,@5
		CALL    D20uS
		MOV     A,@2
		MOV     TIME,A
MUSEDX1:
		WDTC
		CALL    SEND
		DJZ     TIME
		JMP     MUSEDX1
		BS      FLAG,5
		JMP     WHILE

;-------------------------------------
MUSEAX:
		BS		P6,PW					;5V-3V ON
		BC      P5,LED					;KEY-LED ON
		MOV     A,@8
		MOV     DATA,A
		MOV     A,@5
		CALL    D20uS
		MOV     A,@2
		MOV     TIME,A
MUSEAX1:
		WDTC
		CALL    SEND
		DJZ     TIME
		JMP     MUSEAX1
		BS      FLAG,5
		JMP     WHILE

;-------------------------------------
MUSEDY:
		BS		P6,PW					;5V-3V ON
		BC      P5,LED					;KEY-LED ON
		MOV     A,@9
		MOV     DATA,A
		MOV     A,@5
		CALL    D20uS
		MOV     A,@2
		MOV     TIME,A
MUSEDY1:
		WDTC
		CALL    SEND
		DJZ     TIME
		JMP     MUSEDY1
		BS      FLAG,5
		JMP     WHILE

;-------------------------------------
MUSEAY:
		BS		P6,PW					;5V-3V ON
		BC      P5,LED					;KEY-LED ON
		MOV     A,@10
		MOV     DATA,A
		MOV     A,@5
		CALL    D20uS
		MOV     A,@2
		MOV     TIME,A
MUSEAY1:
		WDTC
		CALL    SEND
		DJZ     TIME
		JMP     MUSEAY1
		BS      FLAG,5
		JMP     WHILE

;-------------------------------------
MUSEL:
		BS		P6,PW					;5V-3V ON
		BC      P5,LED					;KEY-LED ON
		MOV     A,@11
		MOV     DATA,A
		MOV     A,@5
		CALL    D20uS
		MOV     A,@4
		MOV     TIME,A
MUSEL1:
		WDTC
		CALL    SEND
		DJZ     TIME
		JMP     MUSEL1
		BS      FLAG,ON
		JMP     WHILE

;-------------------------------------
MUSER:
		BS		P6,PW					;5V-3V ON
		BC      P5,LED					;KEY-LED ON
		MOV     A,@12
		MOV     DATA,A
		MOV     A,@5
		CALL    D20uS
		MOV     A,@4
		MOV     TIME,A
MUSER1:
		WDTC
		CALL    SEND
		DJZ     TIME
		JMP     MUSER1
		BS      FLAG,ON
        JMP     WHILE
        JMP     WHILE
        JMP     WHILE
        end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -