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

📄 93c46-0002.asm

📁 单片机8051下 对EEPROM存储器的读写程序
💻 ASM
字号:
;*******************************************************************
;*                                                                 *
;* ME500单片机开发系统演示程序 - 读写93C46                         *
;*                                                                 *
;* 8位数码管显示  (跳马灯方式)                                     *
;*                                                                 *
;* 将演示数据先写入93C46芯片内,再将其数据逐个读出数码管显示。     *
;*                                                                 *
;* 版本: V1.0 (2006/11/20)                                        *
;* 作者: gguoqing (Email: gguoqing@willar.com)                    *
;* 网站: www.willar.com(伟纳电子)   www.mcusj.com(伟纳单片机世界) *
;* 邮箱: support@willar.com                                       *
;*                                                                 *
;*【版权】Copyright(C)伟纳电子 www.willar.com  All Rights Reserved *
;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!       *
;*                                                                 *
;*******************************************************************

;------------------------------------------------
;             93C46 接口定义
;        ORG=0  8位数据存储器结构
;-----------------------------------------------

               CS	BIT	P3.4
               SK	BIT	P3.3
               DI	BIT	P3.5
               DO	BIT	P3.6
;-----------------------------------------------
;           P0 ---数码管的段码
;           P2 ---数码管的位选
;-----------------------------------------------
              ADDR   EQU  20H
             INDATA  EQU  21H
;-----------------------------------------------
              ORG  0000H
              LJMP  MAIN
              ORG  0030H
;-----------------------------------------------
MAIN:        MOV   SP,#30H
             CLR   P3.4
             CLR   P3.3
             SETB  P3.5
             SETB  P3.6
             LCALL EWEN
             LCALL ERASE
             CLR   A
             MOV   ADDR,A
WRITE_LP:    MOV   A,ADDR
             MOV   DPTR,#TABLE1
             MOVC  A,@A+DPTR
             MOV   R5,A
             MOV   R7,ADDR
             LCALL WRITE
             INC   ADDR
             MOV   A,ADDR
             CLR   C
             SUBB  A,#08H
             JC    WRITE_LP
             LCALL EWDS
             MOV   R0,#40H
             CLR   A
             MOV   ADDR,A
MAIN_LP:     MOV   R7,ADDR
             LCALL READ
             MOV   A,R7
             MOV   @R0,A
             INC  R0
             INC   ADDR
             MOV  R4,ADDR
             MOV   R7,#0FAH
             LCALL DELAYMS
             CJNE  R4,#08H,MAIN_LP

LEDOUT1:     MOV  R0,#40H
             MOV  R4,#08H
             MOV  A,#7FH
LEDOUT2:     MOV  P0,@R0
             MOV  P2,A
             INC  R0
             RR   A
             LCALL  Delay4
             DJNZ  R4,LEDOUT2
             SJMP  LEDOUT1
;===========================================================
WRITE:       MOV   indata,R5
             MOV   B,R7
             MOV   R5,B
             MOV   R7,#40H
             LCALL INOP
             MOV   R7,indata
             LCALL SHIN
             CLR   P3.4
             MOV   R7,#0AH
             LJMP  DELAYMS
;==========================================================
READ :       MOV   B,r7
             MOV   R5,B
             MOV   R7,#80H
             LCALL INOP
             LCALL SHOUT
             CLR   P3.4
             RET
;==========================================================
EWEN:        MOV   R5,#60H
             CLR   A
             MOV   R7,A
             LCALL INOP
             CLR   P3.4
             RET
;===========================================================
EWDS:        CLR   A
             MOV   R5,A
             MOV   R7,A
             LCALL INOP
             CLR   P3.4
             RET
;==========================================================
ERASE:       MOV   R5,#40H
             CLR   A
             MOV   R7,A
             LCALL INOP
             MOV   R7,#1EH
             LCALL DELAYMS
             CLR   P3.4
             RET
;===========================================================
INOP:        CLR   P3.3
             SETB  P3.5
             SETB  P3.4
             NOP
             NOP
             SETB  P3.3
             NOP
             NOP
             CLR   P3.3
             MOV   A,R7
             RLC   A
             MOV   P3.5,C
             SETB  P3.3
             RLC   A
             CLR   P3.3
             MOV   P3.5,C
             SETB  P3.3
             NOP
             NOP
             CLR   P3.3
             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.3
             MOV   A,R5
             RLC   A
             MOV   R5,A
             CLR   P3.3
             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.3
             NOP
             NOP
             CLR   P3.3
             INC   R6
             CJNE  R6,#08H,SHIN_LP
             SETB  P3.5
             RET
;==========================================================
SHOUT:       CLR   A
             MOV   R6,A
SHOUT_LP:    SETB  P3.3
             NOP
             NOP
             CLR   P3.3
             MOV   C,P3.6
             RLC   A
             INC   R6
             CJNE  R6,#08H,SHOUT_LP
             MOV   R7,A
             RET
;===========================================================
DELAYMS:     MOV   A,R7
             JZ    END_DLYMS
DLY_LP1:     MOV   R6,#0B9H
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:                   ;延时1ms子程序
             MOV R7,#2
 DL3:        MOV R6,#250
 DL4:        DJNZ R6,DL4
             DJNZ R7,DL3
             RET
;=========================================================
TABLE:	   DB  7EH,0BDH,0DBH,0E7H,0DBH,0BDH,7EH,0FFH
;=========================================================
TABLE1:    DB  0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H
;=========================================================
  END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -