📄 9346su.asm
字号:
;/*******************************************************************************
;* 93C46读写 8路跑马灯方式数码管显示 *
;* 从地址0x00开始写入数据"1-8",然后再读出送数码管显示。 *
;*硬件连接:数码管数据接P0,数码管控制接P2,93C46接P3.4--P3.7 *
;*开机, 数码管显示0-7,移动显示,为了证明93C46的作用, 去掉93C46连线,则无显示 *
;*注意:在擦除或写入数据之前,必须先写入EWEN指令, 用于8位模式 *
;********************************************************************************
;------------------------------------------------
; 93C46 接口定义
; ORG=0 8位数据存储器结构
;-----------------------------------------------
;CS BIT P3.7
;SK BIT P3.6
;DI BIT P3.5
;DO BIT P3.4
CS BIT P3.7
SK BIT P1.5
DI BIT P1.4
DO BIT P1.3
addr equ 20h
indata equ 21h
;=================================================
ORG 0000H
LJMP MAIN
;=================================================
MAIN: MOV SP,#30H
CLR P1.3
CLR P3.7
SETB P1.4
SETB P1.5
LCALL EWEN
LCALL ERASE
CLR A
MOV 20H,A
WRITE_LP: MOV A,20H
MOV DPTR,#TABLE1
MOVC A,@A+DPTR
MOV R5,A
MOV R7,20H
LCALL WRITE
INC 20H
MOV A,20H
CLR C
SUBB A,#08H
JC WRITE_LP
LCALL EWDS
MOV R0,#40H
CLR A
MOV 20H,A
MAIN_LP: MOV R7,20H
LCALL READ
MOV A,R7
MOV @R0,A
INC R0
INC 20H
MOV R4,20H
MOV R7,#0FAH
LCALL DELAYMS
CJNE R4,#08H,MAIN_LP
LEDOUT1: MOV R0,#40H
MOV R4,#08H
MOV A,#7FH
LEDOUT2: MOV P2,@R0
MOV P0,A
INC R0
RR A
LCALL Delay4
DJNZ R4,LEDOUT2
MOV P2,#0FFH ;关闭显示
SJMP LEDOUT1
;===========================================================
WRITE: MOV indata,R5
mov b,r7
MOV R5,b
MOV R7,#40H
LCALL INOP
MOV R7,indata
LCALL SHIN
CLR P3.7
MOV R7,#0AH
LJMP DELAYMS
;==========================================================
READ : mov b,r7
MOV R5,b
MOV R7,#80H
LCALL INOP
LCALL SHOUT
CLR P3.7
RET
;==========================================================
EWEN: MOV R5,#60H
CLR A
MOV R7,A
LCALL INOP
CLR P3.7
RET
;===========================================================
EWDS: CLR A
MOV R5,A
MOV R7,A
LCALL INOP
CLR P3.7
RET
;==========================================================
ERASE: MOV R5,#40H
CLR A
MOV R7,A
LCALL INOP
MOV R7,#1EH
LCALL DELAYMS
CLR P3.7
RET
;===========================================================
INOP: CLR P3.6
SETB P3.5
SETB P3.7
NOP
NOP
SETB P3.6
NOP
NOP
CLR P3.6
MOV A,R7
RLC A
MOV P3.5,C
SETB P3.6
RLC A
CLR P3.6
MOV P3.5,C
SETB P3.6
NOP
NOP
CLR P3.6
MOV A,R5
RLC A
MOV R5,A
CLR A
MOV R7,A
INOP_LP: MOV A,R5
RLC A
MOV P3.5,C
SETB P3.6
MOV A,R5
RLC A
MOV R5,A
CLR P3.6
INC R7
CJNE R7,#07H,INOP_LP
SETB P3.5
RET
;==========================================================
SHIN : CLR A
MOV R6,A
MOV A,R6
MOV A,R7
SHIN_LP: RLC A
MOV P3.5,C
SETB P3.6
NOP
NOP
CLR P3.6
INC R6
CJNE R6,#08H,SHIN_LP
SETB P3.5
RET
;==========================================================
SHOUT: CLR A
MOV R6,A
SHOUT_LP: SETB P3.6
NOP
NOP
CLR P3.6
MOV C,P3.4
RLC A
INC R6
CJNE R6,#08H,SHOUT_LP
MOV R7,A
RET
;===========================================================
DELAYMS: MOV A,R7
JZ END_DLYMS
DLY_LP1: MOV R6,#0ffH
DLY_LP2: NOP
NOP
NOP
DJNZ R6,DLY_LP2
DJNZ R7,DLY_LP1
END_DLYMS: RET
;=============================================================
Delay4: ;延时0.5S子程序
MOV R5,#5
DL0: MOV r7,#200
DL1: MOV r6,#250
DL2: DJNZ R6,DL2
DJNZ R7,DL1
DJNZ R5,DL0
RET
DELAY1MS:
MOV r7,#6
DL3: MOV r6,#250
DL4: DJNZ R6,DL4
DJNZ R7,DL3
RET
;=========================================================
TABLE1: DB 28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h
;=========================================================
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -