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

📄 modemr.asm

📁 PIC单片机的汇编源码合集,应用比较广泛,设计程序时可做子程序来用
💻 ASM
字号:
;********************MODEMR********************
;本程序实现单片机控制MODEM接收数据,在4M的主频下波特率为9600。
;入口参数:接收数据首地址在SADR中,接收返回码缓冲区首地址在DADR中。
;出口参数:无。
;占用资源:W,STATUS,USART,023H,024H,028H~02AH,2重堆栈。

           IFNDEF       MODEMR1
            #DEFINE     MODEMR1
            INCLUDE      "DLYNMS.ASM"

                                    
SAVEW       EQU         07FH        ;现场保护中保存W的地址
SAVES       EQU         07EH

GETATDATA1 ADDWF	PCL,F          
           DT           "ATZ0",D'13'
           DT           "ATM0E0N0S0=1"  ;MODEM初始化
           DT           .13             ;确认
      
GETDATA6   ADDWF        PCL,F
           DT           "CONNECT 9600",D'13',D'10'
GETDATA7   ADDWF        PCL,F
           DT           "OK",0DH,0AH

MODEMR     MOVF         DADR,W      ;接收数据缓冲区首地址
           MOVWF        FSR
           CLRF         SOU
           BSF          STATUS,RP0
           MOVLW        19H
           MOVWF        SPBRG       
           BSF          TXSTA,BRGH  ;高速模式,波特率为9600
           BCF          TXSTA,SYNC  ;异步模式
           BCF          TXSTA,TX9   ;发送8位数据
           BSF          TXSTA,TXEN  ;使能发送功能
           BSF          PIE1,RCIE   ;开串行口中断  
           BCF          PIE1,TXIE
           BCF          STATUS,RP0
           BCF          RCSTA,RX9   ;接收8位数据
           BSF          RCSTA,SPEN  ;使能串行口
           BSF          RCSTA,CREN  ;开始连续接收          
           BCF          PIR1,RCIF   ;清中断标志
           BSF          INTCON,PEIE
           BSF          INTCON,GIE

           CLRF         TEMP1
           CALL         SENDCMD     ;发送ATZ命令

           MOVLW        .5
           MOVWF        TEMP1
           CALL         SENDCMD     ;MODEM初始化                 
           RETLW        0
;******************发送AT指令********************
SENDCMD    BCF          SOU,2
SENDCMD1   MOVF         TEMP1,W
           CALL         GETATDATA1  ;取AT指令
           MOVWF        TXREG       ;开始发送
           SUBLW        .13
           BTFSC        STATUS,Z
           GOTO         DONE31
           BTFSS        PIR1,TXIF
           GOTO         $-1
           INCF         TEMP1,F
           GOTO         SENDCMD1
DONE31     MOVF         SOU,F
           BTFSC        STATUS,Z
           GOTO         DONE31           
           RETURN
;*****************接收中断服务程序***************
RCINT2     MOVWF        SAVEW
           SWAPF        STATUS,W
           CLRF         STATUS
           MOVWF        SAVES       ;保护现场

           MOVF         RCREG,W
           MOVWF        INDF
           INCF         FSR,F       ;接收数据

           SUBLW        0AH
           BTFSS        STATUS,Z
           GOTO         BACK3
           MOVF         DADR,W      ;返回码缓冲区
           MOVWF        FSR         ;恢复返回码缓冲区首地址

           MOVLW        .14
           MOVWF        TEMP2
           CLRF         TEMP3
NEXT79     MOVF         TEMP3,W
           CALL         GETDATA6
           SUBWF        INDF,W
           BTFSS        STATUS,Z
           GOTO         NEXT80
           INCF         FSR,F
           INCF         TEMP3,F
           DECFSZ       TEMP2,F
           GOTO         NEXT79      ;判断是否返回"CONNECT"信号
           BSF          SOU,0       ;置联机标志
           MOVF         SADR,W      ;数据缓冲区
           MOVWF        FSR
           GOTO         BACK3        

NEXT80     MOVF         DADR,W
           MOVWF        FSR
           MOVLW        .4
           MOVWF        TEMP2
           CLRF         TEMP3
NEXT81     MOVF         TEMP3,W
           CALL         GETDATA7
           SUBWF        INDF,W
           BTFSS        STATUS,Z
           GOTO         BACK2
           INCF         FSR,F
           INCF         TEMP3,F
           DECFSZ       TEMP2,F
           GOTO         NEXT81      ;判断是否返回"OK"信号
           BSF          SOU,2
BACK2      MOVF         DADR,W
           MOVWF        FSR          
BACK3      SWAPF        SAVES,W
           MOVWF        STATUS
           SWAPF        SAVEW,F
           SWAPF        SAVEW,W     ;恢复现场
           RETFIE                  
          ENDIF

⌨️ 快捷键说明

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