📄 发送1字节.asm
字号:
SEL BIT P2.7
SDI BIT P2.6
SCK BIT P2.5
SDO BIT P2.4
IRQ BIT P3.2
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
LCALL RFM12_INITTAL
LCALL OPEN_TX
LCALL LEAD_CODE ;发送引导码,同步码
SEND_DMDATA2:
LCALL WAITI
MOV A,#0B8H ;发射寄存器写命令
LCALL WRT_CMD
MOV A, @R1 ;点名命令低字节到高字节
LCALL WRT_CMD
LCALL ENDD
LCALL CLOSE_TRX ;关闭发射机
LCALL OVER_CODE ;发送结束码
SJMP $
;RFM12初始化
RFM12_INITTAL:
SETB SEL
SETB SDI
CLR SCK
MOV A,#80H ;配制寄存器命令
LCALL WRT_CMD ;工作频段 433HZ/晶阵负载电容12PF
MOV A,#0D7H ;使能内部发射寄存器/使能内部FIFO寄存器
LCALL WRT_CMD
LCALL ENDD
MOV A,#0A6H ;频率设置命令
LCALL WRT_CMD ;设置发射机的中心频率430.8HZ
MOV A,#40H
LCALL WRT_CMD
LCALL ENDD
MOV A,#0C6H ;数据速率命令
LCALL WRT_CMD ;速率9600
MOV A,#23H
LCALL WRT_CMD
LCALL ENDD
MOV A,#94H ;接收机控制命令
LCALL WRT_CMD ;使能VDI/VDI响应时间最快
MOV A,#0A0H ;接收带宽134KHZ
LCALL WRT_CMD
LCALL ENDD
MOV A,#0C2H ;数据滤波命令
LCALL WRT_CMD ;启用时钟恢复自动锁定/时钟恢复快速自动锁定使能
MOV A,#0ACH ;选择数字滤波/设置门限DQD4
LCALL WRT_CMD
LCALL ENDD
MOV A,#0CAH ;输出和FIFO模式命令
LCALL WRT_CMD ;设置FIFO中断门限FIFO8
MOV A,#81H ;设置FIFO填充条件:同步字
LCALL WRT_CMD ;禁止高灵敏复位模式
LCALL ENDD
MOV A,#0C4H ;AFC命令
LCALL WRT_CMD ;VDI有效保留偏移值 /使能AFC输出寄存器/打开AFC功能
MOV A,#83H ;AFC自动模式:上电运行一次
LCALL WRT_CMD ;频率漂移范围:无限制
LCALL ENDD
MOV A,#98H ;发射机配置控制命令
LCALL WRT_CMD ;调制频偏:30KHZ \
MOV A,#50H
LCALL WRT_CMD
LCALL ENDD
RET
;**********************************************************************************************************************
;关闭发射机、接收机
CLOSE_TRX:
MOV A,#82H ;电源管理命令
LCALL WRT_CMD ;关闭发射机/关闭频率合成器/关闭晶体振荡器/禁止时钟输出
MOV A,#01H
LCALL WRT_CMD
LCALL ENDD
RET
;**********************************************************************************************************************
;打开发射机
OPEN_TX:
MOV A, #00H ;读状态寄存器
LCALL WRT_CMD
MOV A, #00H
LCALL WRT_CMD
LCALL ENDD
MOV A,#82H ;电源管理命令
LCALL WRT_CMD ;打开发射机/打开频率合成器/打开晶体振荡器/禁止时钟输出
MOV A,#39H
LCALL WRT_CMD
LCALL ENDD
RET
;******************************************************************************
;读字节
RD_CMD :
CLR SCK
CLR SEL
MOV R3,#08H
NOP
CLR C
RLC A
OUTBYT2:
CLR SCK
NOP
NOP
MOV SDI,C
SETB SCK
NOP
NOP
MOV C,SDO
CLR SCK
RLC A
DJNZ R3,OUTBYT2
RET
;******************************************************************************
;写字节
;*******************************************************************
WRT_CMD: CLR SCK
CLR SEL
MOV R7,#08H
OUTBYT1:
CLR SCK
NOP
NOP
RLC A
MOV SDI,C
SETB SCK
DJNZ R7,OUTBYT1
RET
;**********************************************************************
WAITI:
WAITQ: JB IRQ,WAITQ
RET
;**********************************************************************************************************************
OVER_CODE:
LCALL WAITI ; H
MOV A, #0B8H ;发送引导码
LCALL WRT_CMD
MOV A,#0AAH
LCALL WRT_CMD
LCALL ENDD
LCALL WAITI
MOV A,#0B8H ;发送引导码
LCALL WRT_CMD
MOV A, #0AAH
LCALL WRT_CMD
LCALL ENDD
LCALL WAITI
MOV A,#0B8H ;发送引导码
LCALL WRT_CMD
MOV A,#0AAH
LCALL WRT_CMD
LCALL ENDD
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -