📄 ei11.asm
字号:
RCK595 BIT P0.7
SEG595 BIT P2.0
SRCK595 BIT P2.1
NG595 BIT P0.6
CS BIT P1.0
SOUT BIT P1.1 ;
SCK BIT P1.2
SIN BIT P1.3
public WDT_EN ;声明全局函数
WREN_INST EQU 06H
WRDI_INST EQU 04H
WRSR_INST EQU 01H
RDSR_INST EQU 05H
WRITE_INST EQU 02H
READ_INST EQU 03H
INIT_STATE EQU 0CH ;CS&SOUT=1 SCK&SIN=0
public UpDate ;
public ?UpDate?byte ; 函数调用时的参数
bytes segment data ; 定义数据段
proc segment code ; 定义代码段
rseg bytes ;
?UpDate?byte: ;
ds 3 // ; 参数预留空
rseg proc ;
UpDate:;更新595输出
MOV R4,#3
MOV R5,#8
MOV A,?UpDate?byte
MOV R0,A
MOV A,@R0 ;134860989
UPDATE_L1:
RLC A
CPL C
CLR SRCK595
MOV SEG595,C
SETB SRCK595
DJNZ R5,UPDATE_L1
MOV R5,#8
INC R0
MOV A,@R0
DJNZ R4,UPDATE_L1
SETB RCK595
CLR RCK595
RET
;;;;;;;;;;;;;;;;;;;;;;;;;
INBYT: MOV R6,#08H
INBYT1: SETB SCK
CLR SCK
SETB SOUT
MOV C,SOUT
RLC A
DJNZ R6,INBYT1
RET
;
OUTBYT: MOV R6,#08H
OUTBYT1:CLR SCK
RLC A
MOV SIN,C
SETB SCK
DJNZ R6,OUTBYT1
CLR SIN
RET
;
WIP_POL:MOV R6,#99H
WIP_1: LCALL RDSR_CM
JNB ACC.0,WIP_2
DJNZ R6,WIP_1
WIP_2: RET
;
;
;
RDSR_CM:CLR SCK
CLR CS
MOV A,#RDSR_INST
LCALL OUTBYT
LCALL INBYT
CLR SCK
SETB CS
RET
;
;
WRSR_CM:CLR SCK
CLR CS
MOV A,#WRSR_INST
LCALL OUTBYT
MOV A,R0
LCALL OUTBYT
CLR SCK
SETB CS
LCALL WIP_POL
RET
;
;
WRDI_CM:CLR SCK
CLR CS
MOV A,#WRDI_INST
LCALL OUTBYT
CLR SCK
SETB CS
RET
;
;
WREN_CM:CLR SCK
CLR CS
MOV A,#WREN_INST
LCALL OUTBYT
CLR SCK
SETB CS
RET
WDT_EN:
;CS&SOUT=1 SCK&SIN=0
SETB CS
SETB SOUT
CLR SCK
CLR SIN
LCALL WREN_CM
MOV R0,#00H
LCALL WRSR_CM
RET
cseg at 0400h
nop
nop
ljmp 0000h
cseg at 0500h
nop
nop
ljmp 0000h
cseg at 0600h
nop
nop
ljmp 0000h
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -