;---------------------------------------------------------------------
; 等价定义
;---------------------------------------------------------------------
$MOD8F000 ; SFR 声明
WRITE EQU 00h ; SMBus 写命令
READ EQU 01h ; SMBus 读命令
CHIP_A EQU 0A0h ; EEPROM 从地址
; SMBus 状态
SMB_BUS_ERROR EQU 00h ; (所有方式)总线错误
SMB_START EQU 08h ; (MT & MR) 起始条件已发送
SMB_RP_START EQU 10h ; (MT & MR) 重复起始条件
SMB_MTADDACK EQU 18h ; (MT) 从地址+W 已发送;ACK 收到
SMB_MTADDNACK EQU 20h ; (MT) 从地址+W 已发送;NACK 收到
SMB_MTDBACK EQU 28h ; (MT) 数据字节已发送;ACK 收到
SMB_MTDBNACK EQU 30h ; (MT) 数据字节已发送;NACK 收到
SMB_MTARBLOST EQU 38h ; (MT) 竞争失败
SMB_MRADDACK EQU 40h ; (MR) 从地址+R 已发送;ACK 收到
SMB_MRADDNACK EQU 48h ; (MR) 从地址+R 已发送;NACK 收到
SMB_MRDBACK EQU 50h ; (MR) 数据字节收到;ACK 已发送
SMB_MRDBNACK EQU 58h ; (MR) 数据字节收到;NACK 已发送
;---------------------------------------------------------------------
; 变量
;---------------------------------------------------------------------
DSEG
org 30h
TRANSMIT_BYTE: DS 1 ; 保存 SMBus 待发送的字节
RECEIVE_BYTE: DS 1 ; 保存 SMBus 刚收到的字节
SLA_ADD: DS 1 ; 保存从地址
WRI_ADD: DS 1 ; 保存从地址+ WRITE
READ_ADD: DS 1 ; 保存从地址+ READ
MEM_ADD: DS 1 ; 要访问的 EEPROM 存储器地址
; 用于测试的变量
TEST_COUNT: DS 1 ; Test counter variable
TEST_BYTE: DS 1 ; Test data
TEST_ADDR: DS 1 ; Test memory location
BSEG
org 00h
RW: DBIT 1 ; R/W 命令位。 1=READ, 0=WRITE
SM_BUSY: DBIT 1 ; SMBus 忙标志(软件保存)
BYTE_SENT: DBIT 1 ; 用于指示刚发送的字节:
; 1: EEPROM 存储器地址
; 0: 数据字节
;---------------------------------------------------------------------
; 复位和中断向量
评论0
最新资源