📄 pic_232.asm
字号:
;=========================================================
;RS232通讯程序!波特率=9600bit/s (2003-1-17)
;原理:发送时,通过使数据发送端为低电平并保持s秒(9600波特
;率时为104μs)来发送起始位。随后每s秒钟通过置位或清零发送端
;把数据发送出去,再发送停止位(1).这里的s是指一位所持续
;的时间(s=1/波特率);接收时,数据接收端如果检测到起始位(0),
;则在大约1.5s秒(9600波特率时为156μs)后检测第一位数据位,
;随后每s秒钟检测一次其它的数据位(总共8位)!
;注意:时间要精确,发送要有停止位!
;===========================================================
LIST P=16F84
INCLUDE <PICREG.H>
;***********************端口定义***************************
RXD_PORT EQU B_RB5 ;接收端口!
TXD_PORT EQU B_RB4 ;发送端口!
;***********************寄存器定义*************************
;BUF_TXRX:发送接收二级缓冲区! BUF_DATA:发送接收一级缓冲区!
CBLOCK 0CH
TEMP,BUF_TXRX,BUF_DATA,COUNT_DATA,DEL_TEMP
ENDC
;**********************************************************
ORG 0000H
GOTO INITA
;**********************************************************
S_SENT GOTO SENT
S_ACCE GOTO ACCEPT
;**********************************************************
SENT BCF PORTB,TXD_PORT
MOVLW 08H
MOVWF COUNT_DATA
MOVF BUF_DATA,TOW
MOVWF BUF_TXRX
SNEXT_BIT MOVLW 1FH ;延时:1*104us!
CALL DEL_BIT
BTFSS BUF_TXRX,B_LSB
BCF PORTB,TXD_PORT
BTFSC BUF_TXRX,B_LSB
BSF PORTB,TXD_PORT
DECFSZ COUNT_DATA,SAME
GOTO SNEXT_HEAD
MOVLW 1FH ;(最后一位)延时:1*104us!
CALL DEL_BIT
BSF PORTB,TXD_PORT ;发送停止位!
MOVLW 1FH ;停止位延时:1*104us!
CALL DEL_BIT
RETLW 0
SNEXT_HEAD RRF BUF_TXRX,SAME
GOTO SNEXT_BIT
ACCEPT CLRF BUF_TXRX
MOVLW 08H
MOVWF COUNT_DATA
MOVLW 31H ;延时:1.5*104us!
CALL DEL_BIT
ANEXT_BIT BTFSS PORTB,RXD_PORT
BCF BUF_TXRX,B_MSB
BTFSC PORTB,RXD_PORT
BSF BUF_TXRX,B_MSB
DECFSZ COUNT_DATA,SAME
GOTO ANEXT_HEAD
RETLW 0
ANEXT_HEAD RRF BUF_TXRX,SAME
MOVLW 1FH ;延时:1*104us!
CALL DEL_BIT
GOTO ANEXT_BIT
INITA CLRWDT
MOVLW 00H
TRIS PORTA
MOVLW 20H
TRIS PORTB
MAIN MOVLW 20H
TRIS PORTB
BTFSC PORTB,RXD_PORT
GOTO MAIN
CALL S_ACCE
MOVF BUF_TXRX,TOW
MOVWF BUF_DATA
ADDLW 01H
MOVWF BUF_DATA
CALL S_SENT
HALTL CLRWDT
GOTO MAIN
GOTO HALTL
DEL_BIT MOVWF DEL_TEMP ;延时:x*3+2
DELAY1 DECFSZ DEL_TEMP,SAME
GOTO DELAY1
RETLW 0
;**********************************************************
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -