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

📄 24lc64.asm

📁 基于PROTEUS的仿真 含带源代码 C语言编程
💻 ASM
字号:
MAIN: MOV 60H,#00H
      MOV 61H,#00H
      MOV 62H,#00H
      MOV 63H,#00H
      
      MOV 34H,#07H
      MOV 35H,#77H

      MOV R5,#02
      MOV R0,#34H
      MOV DPTR,#0000H
      NOP 
      NOP
      LCALL WRITE
 
 LOOP:MOV R0,#60H;显示缓冲区首地址
      LCALL DISPLAY
      JB P2.0,LOOP
LOOP1:MOV R0,#60H;显示缓冲区首地址
      LCALL DISPLAY
      JNB P2.0,LOOP1
      
      MOV R5,#02
      MOV R0,#30H
      MOV DPTR,#0000H
      NOP 
      NOP
      LCALL READ;读出
  
      MOV A,30H
      MOV R6,A;高字节移出
      MOV A,31H
      MOV R7,A;低字节移出
      LCALL HB2
      MOV 32H,R4;MBCD
      MOV 33H,R5;LBCD 
      
      MOV R2,#02H;N个待分离的BCD
      MOV R0,#60H;分离后BCD首地址
      MOV R1,#32H;待分离BCD首地址
      LCALL CBCD;分离压缩的BCD码
   
LOOP3:MOV R0,#60H;显示缓冲区首地址
      LCALL DISPLAY
      LJMP LOOP3






;===================================
DISPLAY:MOV R4,#04H;位数选择
        MOV R5,#00H
DISP:MOV A,R5
     SWAP A
     ORL A,@R0
     MOV P0,A
     ACALL DELAY1
     INC R5
     INC R0
     DJNZ R4,DISP
     RET

DELAY1:MOV R6,#10H
LOOP11:MOV R7,#38H
LOOP2:DJNZ R7,LOOP2
      DJNZ R6,LOOP11
      RET
;=============================
HB2:CLR A
    MOV R3,A
    MOV R4,A
    MOV R5,A
    MOV R2,#10H
HB3:MOV A,R7
    RLC A
    MOV R7,A
    MOV A,R6
    RLC A
    MOV R6,A
    MOV A,R5
    ADDC A,R5
    DA A
    MOV R5,A
    MOV A,R4
    ADDC A,R4
    DA A
    MOV R4,A
    MOV A,R3
    ADDC A,R3
    MOV R3,A
    DJNZ R2,HB3
    RET
;==============================
CBCD:
CL:MOV A,@R1     ;分离后将占2N个单元
   MOV B,A
   ANL A,#0F0H
   SWAP A
   MOV 4CH,A
   MOV A,B
   ANL A,#0FH
   MOV 4DH,A
   MOV @R0,4CH
   INC R0
   MOV @R0,4DH
   INC R0
   INC R1
   DJNZ R2,CL
   RET
   ;================================
   ;==============================;写24LC65
WRITE:SETB P1.4
	NOP
	NOP
	NOP
	NOP
	SETB P1.3        ;启动I2C总线
W1:     MOV A,#0A0H
	NOP
	NOP
	NOP
	NOP
	CLR P1.3
	NOP
	NOP
	NOP
	NOP
	SETB P1.3
	NOP
	NOP
	NOP
	NOP
	CLR P1.4
	LCALL WRITE8
	SETB P1.3
	MOV A,DPH
	ANL A,#1FH
	LCALL WRITE8
	SETB P1.3
	MOV A,DPL
	LCALL WRITE8
	SETB P1.3
	MOV A,@R0
	LCALL WRITE8
	SETB P1.3
	NOP
	NOP
	NOP
	NOP
	CLR P1.3
	NOP
	NOP
	NOP
	NOP
	SETB P1.3
	NOP
	NOP
	NOP
	NOP
	SETB P1.4
	INC DPTR
	INC R0
	MOV R1,#10H
W9:     MOV R2,#0FAH
W10:    DJNZ R2,W10
	DJNZ R1,W9
	DJNZ R5,W1
	SETB P1.3
	RET
;========================读24LC65
READ:SETB P1.4
	NOP
	NOP
	NOP
	NOP
	SETB P1.3
ER1:    NOP
	NOP
	NOP
	NOP
	MOV A,#0A0H
	CLR P1.3
	NOP
	NOP
	NOP
	NOP
	SETB P1.3
	NOP
	NOP
	NOP
	NOP
	CLR P1.4
	LCALL WRITE8
	SETB P1.3
	MOV A,DPH
	ANL A,#1FH
	LCALL WRITE8
	SETB P1.3
	MOV A,DPL
	LCALL WRITE8
	SETB P1.3
	NOP
	NOP
	NOP
	NOP
	CLR P1.3
	NOP
	NOP
	NOP
	NOP
	SETB P1.4
	NOP
	NOP
	NOP
	NOP
	SETB P1.3
	NOP
	NOP
	NOP
	NOP
	CLR P1.4
	MOV A,#0A1H
	LCALL WRITE8
	SETB P1.3
	LCALL READ8
	CLR P1.3
	NOP
	NOP
	NOP
	NOP
	CLR P1.4
	NOP
	NOP
	NOP
	NOP
	SETB P1.3
	NOP
	NOP
	NOP
	NOP
	SETB P1.4
	INC DPTR
	INC R0
	DJNZ R5,ER1
	SETB P1.3
	RET
;========================;写24LC65的8字节子程序
WRITE8: MOV R3,#08H
ER13:   CLR P1.3
	NOP
	NOP
	NOP
	NOP
	RLC A
	MOV P1.4,C
	SETB P1.3
	NOP
	NOP
	NOP
	NOP
	DJNZ R3,ER13
	CLR P1.3
	NOP
	NOP
	NOP
	NOP
	CLR P1.4
	RET     
;============================;读24LC65的8字节子程序
READ8: MOV R3,#08H
ER11:   CLR P1.3
	NOP
	NOP
	NOP
	NOP
	SETB P1.4
	NOP
	NOP
	NOP
	NOP
	SETB P1.3 
	NOP
	NOP
	NOP
	NOP      
	MOV C,P1.4
	RLC A   
	DJNZ R3,ER11
;	ADD A,#30H
	MOV @R0,A   ;读出的数据存R0地址
	RET     

⌨️ 快捷键说明

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