技术热线: 4007-888-234

基于MCD

更新时间: 2019-03-25
阅读量:758

基于MCD-DEMO板与PC机的RS232串口通信实例
;利用串口调试精灵或PC端的超级终端,波特率设为9600,数据位8位,
;停止位1位,无校验位.
;首选从PC机向串串口发送一个字符如"2",单片机收到后返发收到这个数如"2-PIC16"给电脑.
;注意实验板的设定:S4,S5,S1要全部到OFF,S13第6,7脚一定要ON.
;烧写时注意振荡方式XT,WDT要禁止.
   LIST P=16F877
   INCLUDE "P16F877.INC"
;***********************************
__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC;
;************************
   CBLOCK  0x20
TXBUFF   :9
TXPTR
TXCOUNT
RXBUFF   :9
PUTPTR
GETPTR
STATUS_TEMP
FSR_TEMP
   ENDC

W_TEMP EQU 7FH
;-------------------------
   ORG 0X000
   GOTO MAIN
;-------------------------
   ORG 0X004
   GOTO INT
   ORG 0X008
INT
   MOVWF W_TEMP
   SWAPF STATUS,W
   CLRF STATUS
   MOVWF STATUS_TEMP
   MOVFW FSR
   MOVWF FSR_TEMP
CHKRXINT
   BANKSEL PIR1
   BTFSS PIR1,RCIF
   GOTO  CHKTXINT
_RDRXFIFO
   BTFSC RCSTA,FERR
   GOTO _FERR_PRO
   MOVLW RXBUFF
   MOVWF FSR
   MOVF PUTPTR,W
   ADDWF FSR,F
   MOVF RCREG,W
   MOVWF INDF
   INCF PUTPTR,F
   MOVLW .7
   ANDWF PUTPTR,F
   BTFSC PIR1,RCIF
   GOTO _RDRXFIFO
   BTFSS RCSTA,OERR
   GOTO ENDOFINT
_OERR_PRO
   BCF RCSTA,CREN
   BSF RCSTA,CREN
   GOTO ENDOFINT
_FERR_PRO
   MOVF RCREG,W
   GOTO ENDOFINT
;------------------------
CHKTXINT
   BSF STATUS,RP0
   BTFSS PIE1,TXIE
   GOTO  ENDOFINT
   BCF STATUS,RP0
   BTFSS PIR1,TXIF
   GOTO  ENDOFINT
   MOVLW TXBUFF
   MOVWF FSR
   MOVF TXPTR,W
   ADDWF FSR,F
   MOVF INDF,W
   MOVWF TXREG
   INCF TXPTR,F
   DECFSZ TXCOUNT,F
   GOTO ENDOFINT
   BSF  STATUS,RP0
   BCF PIE1,TXIE
   BCF STATUS,RP0
ENDOFINT
   CLRF STATUS
   MOVFW FSR_TEMP
   MOVWF FSR
   SWAPF STATUS_TEMP,W
   MOVWF STATUS
   SWAPF W_TEMP,F
   SWAPF W_TEMP,W
   RETFIE
;-------------------
MAIN
   BANKSEL TXSTA
   MOVLW B'00100100'
   MOVWF TXSTA
   MOVLW .25
   MOVWF SPBRG
   CLRF PIE1
   BSF PIE1,RCIE
   CLRF STATUS
   CLRF TXCOUNT
   CLRF GETPTR
   CLRF PUTPTR
   MOVLW B'10010000'
   MOVWF RCSTA
   CLRF INTCON
   BSF INTCON,PEIE
   BSF INTCON,GIE
LOOP
   CALL CHECK_DATA
   GOTO LOOP
;-------------------------
CHECK_DATA
   CLRF STATUS
   MOVF TXCOUNT,W
   SKPZ
   RETURN
   MOVF GETPTR,W
   XORWF PUTPTR,W
   SKPNZ
   RETURN
   MOVLW RXBUFF
   MOVWF FSR
   MOVF GETPTR,W
   ADDWF FSR,F
   INCF GETPTR,F
   MOVLW .7
   ANDWF GETPTR,F
   MOVF INDF,W
   MOVWF TXBUFF+0
   MOVLW '-'
   MOVWF TXBUFF+1
   MOVLW 'P'
   MOVWF TXBUFF+2
   MOVLW 'I'
   MOVWF TXBUFF+3
   MOVLW 'C'
   MOVWF TXBUFF+4
   MOVLW '1'
   MOVWF TXBUFF+5
   MOVLW '6'
   MOVWF TXBUFF+6
   MOVLW 0X0D
   MOVWF TXBUFF+7
   MOVLW 0X0A
   MOVWF TXBUFF+8
   MOVLW .9
   MOVWF TXCOUNT
   CLRF TXPTR
   BSF STATUS,RP0
   BSF PIE1,TXIE
   BCF STATUS,RP0
   RETURN
;---------------------
   END