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

📄 rx2120.asm

📁 PIC单片机的汇编源码合集,应用比较广泛,设计程序时可做子程序来用
💻 ASM
字号:
;********************RX2120********************
;本程序实现单片机从2120接收多字节数据。
;入口参数:波特率延时因子在SOU中,数据存放的首地址在DADR中,接收的字节数在W中。
;出口参数:接收到的数据在指定RAM中。
;占用资源:W,STATUS,FSR,RD0,RD1,022H,023H,024H,028H~02AH,3重堆栈。
;说明:    1.SOU的计算方法为: SOU=Fosc/(16*bit2120)-4。其中,Fosc为单片机的主频,
;            bit2120为由硬件选择的2120的波特率。
;          2.要保证MCP2120和单片机的波特率匹配。
;          3.本程序用在硬件选择波特率的情况下。

           IFNDEF       RX21201
            #DEFINE     RX21201
                            
#define     RXD2120     PORTD,1     ;来自 MCP2120 的信号
#define     TXD         PORTD,2     ;送到 MCP2120 的信号
#define     EN2120      PORTD,0     ;2120使能禁止信号

;*****************************************************************
 IFNDEF     TX21201      
DELAY3	    MOVWF	TEMP2       ;产生波特率的延时程序
DELLP	    NOP
            DECFSZ	TEMP2,F
	    GOTO	DELLP
	    RETLW	0
 ENDIF
;****************************************************************
RX2120      MOVWF       TEMP1       ;字节数存放在TEMP1
            MOVF        DADR,W
            MOVWF       FSR         ;数据存放首地址
            BCF         EN2120
            BSF         STATUS,RP0
            BSF         TRISD,1;
            BCF         TRISD,0
            BCF         STATUS,RP0
                                              
            MOVLW       D'08'       ;位计数
            MOVWF       CNT
            MOVF        SOU,W       
            MOVWF	TEMP3       ;TEMP3存放位延时时间

            BSF         EN2120      ;2120使能	    	  	   		
	    MOVLW	D'230'      ;延时1MS
	    CALL	DELAY3
	
LOOP112     BTFSC	RXD2120	    ;检查是否有来自 MCP2120 的信号
	    GOTO        $-1
            CALL        RXSER
            MOVF        SOU,W
            MOVWF       INDF
            INCF        FSR,F
            DECFSZ      TEMP1,F     ;数据接收完毕?
            GOTO        LOOP112
            BCF         EN2120      ;2120禁用
            RETURN
;********************接收一个字节数据********************                      
RXSER       NOP                     ;接收到起始位后延时
            NOP                    
            NOP
            NOP
            NOP
            NOP
            NOP

RXDB        MOVF        TEMP3,W
            CALL        DELAY3
            NOP
            NOP
            RRF         SOU,F       ;字节移位   
            BTFSC       RXD2120     ; rxd=0 则 bit=0
            GOTO        RXDB1       ; rxd=1 则 bit=1

RXDB0       NOP
            NOP
            BCF         SOU,7       ;BIT=0
            DECFSZ      CNT,F       ;接收完了吗?
            GOTO        RXDB        
            GOTO        RXSP
					
RXDB1       NOP                     
            BSF         SOU,7          
            DECFSZ      CNT,F       ;8位接收完了吗?
            GOTO        RXDB        
            GOTO        RXSP

RXSP        MOVLW       D'08'       ;恢复位计数值
            MOVWF       CNT
            MOVF        TEMP3,W     ;结束位延时
            CALL        DELAY3
  	    RETLW	0
           ENDIF

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -