📄 835.asm
字号:
MTD EQU 30H ;主发送缓冲区首地址
NUMBYT EQU 20H ;发送48个数据(包括起始寄存器地址00H)
SLA EQU 70H ;寻址字节存放于此单元
ORG 0000H ;主程序入口
LJMP MAIN
ORG 0060H ;中断散转程序首址
MAIN: MOV NUMBYT,#2BH
MOV SLA,#8AH ;BT835的地址送入80H单元中
LCALL LOAD_ADDRESS ;发送数据装载到发送缓冲区中
LCALL WRNBYT
RET
LOAD_ADDRESS: MOV A,SLA
MOV R0,#MTD ;发送数据装载到发送缓冲区中
MOV @R0,#00H ;BT835的寄存器0的地址 00
INC R0
MOV @R0,#0F8H
INC R0
MOV @R0,#04H ;subaddress01
INC R0
MOV @R0,#16H ;subaddress02
INC R0
MOV @R0,#00H ;subaddress03
INC R0
MOV @R0,#0e0H ;subaddress04
INC R0
MOV @R0,#01H ;subaddress05
INC R0
MOV @R0,#78H ;subaddress06
INC R0
MOV @R0,#00H ;subaddress07
INC R0
MOV @R0,#80H ;subaddress08 HACTIVE
INC R0
MOV @R0,#02H ;subaddress09 HACTIVE
INC R0
MOV @R0,#03CH ;subaddress0a 3c HSCALE
INC R0
MOV @R0,#03H ;subaddress0b 03 HSCALE
INC R0
MOV @R0,#00H ;subaddress0c
INC R0
MOV @R0,#00H ;subaddress0d
INC R0
MOV @R0,#10H ;subaddress0e 00
INC R0
MOV @R0,#00H ;subaddress0f
INC R0
MOV @R0,#00H ;subaddress10
INC R0
MOV @R0,#39H ;subaddress11
INC R0
MOV @R0,#7FH ;subaddress12
INC R0
MOV @R0,#5AH ;subaddress13
INC R0
MOV @R0,#00H ;subaddress14
INC R0
MOV @R0,#40H ;subaddress15 defalt 00 my choise e4??
INC R0
MOV @R0,#1CH ;subaddress16
INC R0
MOV @R0,#01H ;subaddress17
INC R0
MOV @R0,#44H ;subaddress18
INC R0
MOV @R0,#00H ;subaddress19
INC R0
MOV @R0,#7FH ;subaddress1a
INC R0
MOV @R0,#72H ;subaddress1b
INC R0
MOV @R0,#01H ;subaddress1c
INC R0
MOV @R0,#0C7H ;subaddress1d
INC R0
MOV @R0,#7FH ;subaddress1e
INC R0
MOV @R0,#80H ;subaddress1f
INC R0
MOV @R0,#0B8H ;subaddress20
INC R0
MOV @R0,#00H ;subaddress21
INC R0
MOV @R0,#0FFH ;subaddress22
INC R0
MOV @R0,#00H ;subaddress23
INC R0
MOV @R0,#01H ;subaddress24 00
INC R0
MOV @R0,#00H ;subaddress25
INC R0
MOV @R0,#00H ;subaddress26
INC R0
MOV @R0,#0CH ;subaddress27
INC R0
MOV @R0,#0f9H ;subaddress28 pll_f f9
INC R0
MOV @R0,#0dcH ;subaddress29 pll_f dc
INC R0
MOV @R0,#0eH ;subaddress2a 0e
INC R0
MOV @R0,#00H ;subaddress2b
INC R0
MOV @R0,#00H ;subaddress2c
INC R0
MOV @R0,#00H ;subaddress2d
INC R0
MOV @R0,#00H ;subaddress2e
RET
STA: SETB P1.6
SETB P1.7
NOP
NOP
NOP
NOP
CLR P1.6
NOP
NOP
NOP
NOP
CLR P1.7
RET
STOP: CLR P1.6
SETB P1.7
NOP
NOP
NOP
NOP
SETB P1.6
NOP
NOP
NOP
NOP
CLR P1.7
RET
MACK: CLR P1.6
SETB P1.7
NOP
NOP
NOP
NOP
CLR P1.7
SETB P1.6
RET
MNACK: SETB P1.6
SETB P1.7
NOP
NOP
NOP
NOP
CLR P1.7
CLR P1.6
RET
CACK: SETB P1.6
SETB P1.7
CLR F0
MOV A,P1
JNB ACC.6,CEND ;ACC.6为0,则表示SDA被拉低响应,转CEND
SETB F0
CEND: CLR P1.7
NOP
NOP
RET
WRBYT: MOV R0,#08H
WLP: RLC A
JC WR1
AJMP WR0
WLP1: DJNZ R0,WLP
RET
WR1: SETB P1.6
SETB P1.7
NOP
NOP
NOP
NOP
CLR P1.7
CLR P1.6
AJMP WLP1
WR0: CLR P1.6
SETB P1.7
NOP
NOP
NOP
NOP
CLR P1.7
AJMP WLP1
WRNBYT: LCALL STA
MOV A,SLA
LCALL WRBYT
LCALL CACK
JB F0,WRNBYT ;没有收到ACK,跳WRNBYT再重传88H
MOV R1,#MTD ;片地址88H有ACK响应,则开始准备发送数据
WRDA: MOV A,@R1
LCALL WRBYT
LCALL CACK
JB F0,WRNBYT
INC R1
DJNZ NUMBYT,WRDA
LCALL STOP
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -