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

📄 rat512.asm

📁 c语言和汇编语言混合编程实例详解.rar
💻 ASM
字号:
   ; 这是被CALLR512.C调用的AT24C512汇编程序,
   ; 文件名为RAT512.ASM
   ; 功能:  把C51传来的双字节值作为首址,从AT24C512 EEPROM中将连续8个字节值读出,
   ;        放在地址为80H、81H、...、87H的连续8个字节中去。
   NAME AT512
   ?PR?_a_func8?AT512     SEGMENT CODE
   ?DT?_a_func8?AT512     SEGMENT DATA OVERLAYABLE
   ?DT?AT512              SEGMENT DATA
   PUBLIC   chai8
   PUBLIC   ?_a_func8?BYTE
   PUBLIC    _a_func8
   RSEG  ?DT?_a_func8?AT512
	 ?_a_func8?BYTE:
	 aa:DS 2
   RSEG  ?DT?AT512
	 chai8:DS 1
   RSEG  ?PR?_a_func8?AT512
	 _a_func8:

SDA   BIT INT1
SCL   BIT INT0

FADDR EQU 0A0H
PADDR EQU 0
PSIZE EQU 8

ADDRLO EQU  1EH
ADDRHI EQU  1FH
BUFFER EQU  080H

      MOV aa,R7
      MOV aa+1,R6
      SETB SDA
      SETB SCL
BYTE_FILL:
      MOV R0,#BUFFER
      MOV DPL,aa
      MOV DPH,aa+1
X71:  MOV ADDRLO,DPL
      MOV ADDRHI,DPH
      MOV R1 ,#PSIZE
      MOV B,#120
X72:  MOV A,#PADDR
      LCALL READ_BLOCK
      JNC X74
      DJNZ B,X72
X73:  SETB C
X74:  RET

READ_BLOCK:
      LCALL START
      JC X35
      RL A
      ORL A,#FADDR
      MOV R0 ,A
      CLR ACC.0
      LCALL SHOUT
      JC X34
      MOV A,ADDRHI
      LCALL SHOUT
      JC X34
      MOV A,ADDRLO
      LCALL SHOUT
      JC X34
      LCALL START
      JC X34
      MOV A,R0
      SETB ACC.0
      LCALL SHOUT
      JC X34
      MOV R0 ,#BUFFER
 X31: LCALL SHIN
      MOV @R0 ,A
      CJNE R1 ,#1,X32
      LCALL NAK
      LJMP  X33
 X32: LCALL ACK
      INC R0
      DJNZ R1 ,X31
 X33: CLR C
 X34: LCALL STOP
 X35: RET

START:SETB SDA
      SETB SCL
      JNB SDA,X40
      JNB SCL,X40
      NOP
      CLR SDA
      NOP
      NOP
      NOP
      NOP
      NOP
      CLR SCL
      CLR C
      LJMP X41
X40:  SETB C
X41:  RET

STOP: CLR SDA
      NOP
      NOP
      SETB SCL
      NOP
      NOP
      NOP
      NOP
      NOP
      SETB SDA
      RET

SHOUT:PUSH B
      MOV B,#8
X42:  RLC A
      MOV SDA,C
      NOP
      SETB SCL
      NOP
      NOP
      NOP
      NOP
      CLR SCL
      DJNZ B,X42
      SETB SDA
      NOP
      NOP
      SETB SCL
      NOP
      NOP
      NOP
      NOP
      MOV C,SDA
      CLR SCL
      POP B
      RET

SHIN: SETB SDA
      PUSH B
      MOV B,#8
X43:  NOP
      NOP
      NOP
      SETB SCL
      NOP
      NOP
      MOV C,SDA
      RLC A
      CLR SCL
      DJNZ B,X43
      POP B
      RET

ACK:  CLR SDA
      NOP
      NOP
      SETB SCL
      NOP
      NOP
      NOP
      NOP
      CLR SCL
      RET
NAK:  SETB SDA
      NOP
      NOP
      SETB SCL
      NOP
      NOP
      NOP
      NOP
      CLR SCL
      RET
      END

⌨️ 快捷键说明

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