📄 tx2120.asm
字号:
;********************TX2120********************
;本程序实现MCU向2120发送多个字节数据。
;入口参数:波特率延时因子在SOU中,带发送数据的首地址在SADR中,字节数在W中。
;出口参数:无。
;占用资源:W,STATUS,FSR,RD0,RD2,020H,023H,024H,028H~02AH,3重堆栈。
;说明: 1.SOU的计算方法为: SOU=Fosc/(16*bit2120)-4。其中,Fosc为单片机的主频,
; bit2120为由硬件选择的2120的波特率。
; 2.要保证MCP2120和单片机的波特率匹配。
; 3.本程序用在硬件选择波特率的情况下。
IFNDEF TX21201
#DEFINE TX21201
#define RXD PORTD,1 ;来自 MCP2120 的信号
#define TXD2120 PORTD,2 ;送到 MCP2120 的信号
#define EN2120 PORTD,0 ;2120使能禁止信号
;*****************************************************************
IFNDEF RX21201
DELAY3 MOVWF TEMP2 ;产生波特率的延时程序
DELLP NOP
DECFSZ TEMP2,F
GOTO DELLP
RETLW 0
ENDIF
;********************发送一个字节数据**************************
TXSER BCF TXD2120 ;起始位
NOP
NOP
NOP
NOP
TXDB MOVF TEMP3,W
CALL DELAY3
NOP
NOP
BTFSC SOU,0 ; bit=0 则 rxd=0
GOTO TXDB1 ; bit=1 则 rxd=1
TXDB0 NOP
NOP
BCF TXD2120 ;BIT=0
RRF SOU,F ;字节移位
DECFSZ CNT,F ;8为移完了吗?
GOTO TXDB
GOTO TXSP
TXDB1 NOP
BSF TXD2120
RRF SOU,F ;字节移位
DECFSZ CNT,F ;8位移完了吗?
GOTO TXDB
GOTO TXSP
TXSP NOP
NOP
NOP
MOVLW D'08'
MOVWF CNT
MOVF TEMP3,w
CALL DELAY3
BSF TXD2120 ;第8个数据
MOVF TEMP3,W ;结束位
CALL DELAY3
MOVF TEMP3,W ;对于速度较低的系统,再延时
CALL DELAY3
RETLW 0
;****************************************************************
TX2120 MOVWF TEMP1 ;字节数存放在TEMP1
MOVF SADR,W
MOVWF FSR
BSF TXD2120 ;设置USART的静止状态
BSF STATUS,RP0
BCF TRISD,0 ;EN2120为输出
BCF TRISD,2 ;TXD2120为输出
BCF STATUS,RP0
MOVLW D'08' ;位计数
MOVWF CNT
MOVF SOU,W ;设定宿主机波特率
MOVWF TEMP3
BSF EN2120 ;2120使能
MOVLW D'230'
CALL DELAY3 ;延时1MS
LOOP113 MOVF INDF,W
MOVWF SOU
CALL TXSER ;发送数据
INCF FSR,F
DECFSZ TEMP1,F
GOTO LOOP113 ;发送下一个数据
BCF EN2120 ;2120禁止工作
RETURN
ENDIF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -