⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 9346su.asm

📁 93C46存储花样流水灯实验(包括汇编源程序和C语言源程序)
💻 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 + -