📄 25045.asm
字号:
;********************************************************
;
;WREN: 06H 写使能
;WRDI: 04H 写禁止
;RDSR: 05H 读状态寄存器
;WRSR: 01H 写状态寄存器
;READ: 0000(A8)011 从指定的地址中读出数据
;WRITE: 0000(A8)010 向指定的地址写入数据
;
;********************************************************
;
CS BIT P1.0
SO BIT P1.1
SCK BIT P1.2
SI BIT P1.3
ADDRESS EQU 55H ;指定的地址
DATA1 EQU 33H ;指定的数据
;
;********************************************************
; /*主程序*/ *
;********************************************************
;
ORG 0000H
AJMP START
ORG 0030H
START: MOV SP,#60H
CLR EA ;禁止中断
MOV P1,#03H ;/CS=SO=1,SCK=SI=0
CALL W_ENABLE ;写使能
CALL W_CONTROL ;写控制字
CALL DELAY
CALL R_CONTROL
CALL W_ENABLE ;写使能
CALL W_DATA ;向指定的地址写入数据
CALL DELAY
CALL R_DATA ;从指定的地址中读出数据
MOV R0,A
ACALL DISP ;显示
AJMP START
DISP: MOV A,R0 ;低位
ANL A,#0FH
ACALL DSEND ;显示
MOV A,R0
SWAP A
ANL A,#0FH ;高位
ACALL DSEND ;显示
RET
DSEND: MOV DPTR,#SGTB1
MOVC A,@A+DPTR ;取字符
MOV SBUF,A ;发送字符
JNB TI,$ ;等待串口发送完
CLR TI
RET
;
;********************************************************
; /*写数据子程序*/ *
;********************************************************
;
W_DATA: MOV DPTR,#ADDRESS
CLR SCK
CLR CS
MOV A,#02H ;写数据命令
MOV B,DPH
MOV C,B.0
MOV ACC.3,C
CALL XSI
MOV A,DPL ;地址
CALL XSI
MOV A,#DATA1 ;数据
CALL XSI
CLR SCK
SETB CS
RET
;
;********************************************************
; /*读数据子程序*/ *
;********************************************************
;
R_DATA: MOV DPTR,#ADDRESS
CLR SCK
CLR CS
MOV A,#03H ;读数据命令
MOV B,DPH
MOV C,B.0
MOV ACC.3,C
CALL XSI
MOV A,DPL ;地址
CALL XSI
CALL XSO
CLR SCK
SETB CS
MOV 71H,A ;保存读出的数据
RET
;
;********************************************************
; /*写控制子程序*/ *
;********************************************************
;
W_CONTROL: CLR SCK
CLR CS
MOV A,#01H ;送控制字:写
CALL XSI
MOV A,#00H ;1.4S
CALL XSI
CLR SCK
SETB CS
RET
;
;********************************************************
; /*读控制子程序*/ *
;********************************************************
;
R_CONTROL: CLR SCK
CLR CS
MOV A,#05H ;送控制字:读
CALL XSI
CALL XSO
CLR SCK
SETB CS
MOV 70H,A
RET
;
;********************************************************
; /*写使能子程序*/ *
;********************************************************
;
W_ENABLE: CLR SCK
CLR CS
MOV A,#06H ;写使能
CALL XSI
CLR SCK
SETB CS
RET
;
;********************************************************
; /*发送字节子程序*/ *
;********************************************************
;
XSI: MOV R7,#08H
XSI1: CLR SCK
RLC A
MOV SI,C
SETB SCK
NOP
DJNZ R7,XSI1
CLR SI
RET
;
;********************************************************
; /*接收字节子程序*/ *
;********************************************************
;
XSO: MOV R7,#08H
XSO1: SETB SCK
CLR SCK
NOP
MOV C,SO
RLC A
DJNZ R7,XSO1
RET
;
;********************************************************
; /*延时子程序*/ *
;********************************************************
;
DELAY: MOV R6,#250 ;延时
DELAY1: MOV R7,#250
DJNZ R7,$
DJNZ R6,DELAY1
RET
;
;********************************************************
; /*字符编码*/ *
;********************************************************
;
SGTB1: DB 03H ;0
DB 9FH ;1
DB 25H ;2
DB 0DH ;3
DB 99H ;4
DB 49H ;5
DB 41H ;6
DB 1FH ;7
DB 01H ;8
DB 09H ;9
DB 11H ;A
DB 0C1H ;B
DB 63H ;C
DB 85H ;D
DB 61H ;E
DB 71H ;F
DB 00H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -