⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pic_232.asm

📁 用pic16f84的两根口线模拟串口与电脑通信
💻 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 + -