📄 c7_3_1.asm
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; 三线八线译码电路
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.title "decoder_3_8.asm"
.include "lf2407_regs.h"
.def _cy_begin
.data
Input_Temp .word 00h
Output_Flag .word 00h
Flag_Temp .word 00h
IO_Decode_Flag .word 00h
.text
_cy_begin:
NOP
CALL system_init
CALL IOPort_init
NOP
Decode_3_8_Loop:
CALL Read_Button
LDP #4
SPLK #0101h,IO_Decode_Flag
LT Output_Flag
LACT IO_Decode_Flag
LDP #DP_PF2
LACL PCDATDIR
OR #04040h
SACL PCDATDIR
LDP #4
LACL IO_Decode_Flag
LDP #DP_PF2
SACL PBDATDIR
LACL PCDATDIR
AND #0FFBFh
SACL PCDATDIR
CALL cy_Delay
LDP #4
SPLK #0h,IO_Decode_Flag
SPLK #0h,IO_Decode_Flag
SPLK #0h,IO_Decode_Flag
SPLK #0h,IO_Decode_Flag
NOP
B Decode_3_8_Loop
system_init:
SETC INTM
CLRC OVM
CLRC SXM
CLRC CNF
LDP #DP_PF1
SPLK #081FEh,SCSR1
SPLK #0E8h,WDCR ;;用#068h也是可以的
LDP #0
SPLK #0000h,IMR
SPLK #0FFFFh,IFR
RET
IOPort_init:
LDP #DP_PF2
LACL MCRA
AND #00FFh
SACL MCRA
LACL MCRB
AND #0FFBFh
SACL MCRB
LACL MCRC
AND #0FFF1h
SACL MCRC
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LACL PBDATDIR
OR #0FF00h
SACL PBDATDIR
LACL PCDATDIR
OR #04000h
SACL PCDATDIR
LACL PEDATDIR
OR #000Eh
SACL PEDATDIR
RET
Read_Button:
CALL cy_Read
LDP #4
LACL Output_Flag
SACL Flag_Temp
CALL cy_Delay
CALL cy_Read
LDP #4
LACL Output_Flag
SUB Flag_Temp
BCND Right_Read, EQ
SPLK #0, Output_Flag
Right_Read:
NOP
RET
cy_Read:
LDP #DP_PF2
LACL PEDATDIR
SFR
AND #0007h
LDP #4
SACL Input_Temp
LACL #7
SUB Input_Temp
SACL Output_Flag
RET
cy_Delay:
LACL #2400
cy_Delay1:
SUB #1
RPT #49
NOP
BCND cy_Delay1, NEQ
RET
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -