📄 em78p153.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 + -