利用USART實(shí)現(xiàn)單片機(jī)與PC通信
;實(shí)驗(yàn)?zāi)康模菏煜?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/USART">USART通信
;通過“串口調(diào)試助手”協(xié)助工作
;串口調(diào)試助手發(fā)送數(shù)據(jù)給877,877收到后再轉(zhuǎn)發(fā)回串口助手
;硬件要求:撥碼開關(guān)S7全置ON,其他撥碼開關(guān)置OFF
#INCLUDEP16F877A.INC> ;調(diào)用芯片頭文件,省去特殊寄存器等的定義
__CONFIG _DEBUG_OFF_CP_ALL_WRT_HALF_CPD_ON_LVP_OFF_BODEN_OFF_PWRTE_ON_WDT_OFF_HS_OSC
VAL_US EQU .249 ;短延時(shí)定時(shí)參數(shù)
VAL_MS EQU .200 ;長延時(shí)定時(shí)參數(shù)
COUNT EQU 25H
COUNT_MS EQU 26H
ORG 00H
NOP
GOTO MAIN
ORG 04H ;中斷入口地址
BTFSS PIR1,RCIF ;判斷是否是串口接收中斷
GOTO EXIT ;否,轉(zhuǎn)中斷結(jié)束程序
MOVF RCREG,0 ;讀取接收寄存器的數(shù)據(jù)
MOVWF TXREG ;保存到發(fā)送寄存器,隨后發(fā)送出去
EXIT
RETFIE
MAIN
USART
BANKSEL TRISC ;選擇體1
BSF TRISC,7 ;斷開RC模塊與USART TX引腳的聯(lián)系
BSF TRISC,6 ;斷開RC模塊與USART RX引腳的聯(lián)系
MOVLW 0CH ;裝載波特率發(fā)生器,為19.2kbd
MOVWF SPBRG
MOVLW 24H ;勢能USART,設(shè)置波特率發(fā)生器為高速方式
MOVWF TXSTA
BSF PIE1,RCIE ;使能接收中斷
CLRF STATUS ;返回體0
MOVLW 90H
MOVWF RCSTA ;使能USART連續(xù)接收
BSF INTCON,GIE ;使能全局中斷使能位
BSF INTCON,PEIE ;使能外設(shè)中斷使能位
USART_1
CALL DELAY_MS ;調(diào)用2次延時(shí)程序
CALL DELAY_MS
GOTO USART_1 ;返回!
;*************************200ms延時(shí)程序***********************
DELAY_MS
MOVLW VAL_MS
MOVWF COUNT_MS
LOOP_MS
CALL DELAY_US
DECFSZ COUNT_MS,1
GOTO LOOP_MS
RETURN
;*************************100us延時(shí)程序***********************
DELAY_US
MOVLW VAL_US
MOVWF COUNT
LOOP_US
NOP
DECFSZ COUNT,1
GOTO LOOP_US
RETURN
DELAY_S
MOVLW 0FFH
MOVWF 50H
CALL DELAY_MS
DECFSZ 50H,1
GOTO $-2
RETURN
END
數(shù)字通信相關(guān)文章:數(shù)字通信原理
評論