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

📄 wat512.asm

📁 c语言和汇编语言混合编程实例详解.rar
💻 ASM
字号:
   ; 这是被CALLW512.C调用的AT24C512汇编程序,
   ; 文件名为WAT512.ASM
   ; 功能: 将地址为80H、81H、...、87H的连续8个字节值写入C51传来的双字节为
   ;       首址的AT24C512 EEPROM中去。

 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  7EH
ADDRHI EQU  7FH
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
X62:  MOV ADDRLO,DPL
      MOV ADDRHI,DPH
      MOV R1 ,#PSIZE
      MOV B,#120
X63:  MOV A,#PADDR
      LCALL WRITE_BLOCK
      JNC X64
      DJNZ B,X63
      SETB C
X64:  RET

WRITE_BLOCK:       ;块写入
      LCALL START
      JC X38
      RL A
      ORL A,#FADDR
      CLR ACC.0
      LCALL SHOUT
      JC X37
      MOV A,ADDRHI
      LCALL SHOUT
      JC X37
      MOV A,ADDRLO
      LCALL SHOUT
      JC X37
      MOV R0 ,#BUFFER
  X36:MOV A, @R0
      LCALL SHOUT
      JC X37
      INC R0
      DJNZ R1 ,X36
      CLR C
  X37:LCALL STOP
  X38: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 + -