这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 单片机普通I/O口做串口模拟

共1条 1/1 1 跳转至

单片机普通I/O口做串口模拟

助工
2014-10-09 17:20:11     打赏
RXD    
       BCF    STATUS,RP0           ;Bank 0
       MOVLW  08H
       MOVWF  COUNT1               ;读8次
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
RX1    CALL   DEL417               ;417uS延时
       BTFSS  GPIO,0               ;读bit
       GOTO   RX2                  ;为0时跳到RX2
       BSF    STATUS,C             ;置C=1
       RRF    RX_SUBF              ;右移
       GOTO   RX3
RX2    BCF    STATUS,C             ;置C=0
       RRF    RX_SUBF              ;右移
RX3    DECFSZ COUNT1               ;1个字节是否读完?
       GOTO   RX1                  ;否,继续读  
       CALL   DEL417               ;完了,判断数据/地址?
       BTFSS  GPIO,0               ;读bit
       GOTO   RX4                  ;为0时跳到RX4
       BSF    STATUS,C             ;置C=1
       GOTO   RX5
RX4    BCF    STATUS,C             ;置C=0
RX5   ;CALL   DEL417              
       BTFSS  GPIO,0               ;判断是否有停止位出现
       GOTO   RX5                  ;为0继续查寻
                                   ;为1时返回继续
       RETURN                      ;返回
;****************************************************************************                                                 
;**************发送子程序****************************************************
TXD    BCF    STATUS,RP0       ;Bank 0            
       MOVLW  08H
       MOVWF  COUNT1           ;发8次
       BSF    GPIO,2           ;使MAX487处于发送状态
       BCF    GPIO,1           ;发送起始位
TXD1   CALL   DEL417           ;417uS延时 
       RRF    TX_SUBF          ;右移
       BTFSS  STATUS,C         ;判断=1?
       GOTO   TXD2             ;C=0时,跳到TXD2
       BSF    GPIO,1           ;C为1时,置GP1=1
       GOTO   TXD3
TXD2   BCF    GPIO,1           ;C为0时,置GP1=0 
TXD3   DECFSZ COUNT1           ;1个字节是否读完?
       GOTO   TXD1             ;未完,继续到TXD1
       CALL   DEL417 
       BTFSS  SIGN_R,0         ;判断=1?
       GOTO   TXD4             ;数据/地址位=0时,跳到TXD4
       BSF    GPIO,1           ;数据/地址位=1时,置GP1=1
       GOTO   TXD5
TXD4   BCF    GPIO,1           ;数据/地址位=0时,置GP1=0 
TXD5   CALL   DEL417
       BSF    GPIO,1           ;发送停止位
       CLRF   TX_SUBF
       MOVLW  03H              ;把"000011"送入GPIO口
       MOVWF  GPIO             ;使能MAX487处于接收状态
       CALL   DEL417
       RETURN                  ;返回

 


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]