;實驗?zāi)康模菏煜SART通信
;通過“串口調(diào)試助手”協(xié)助工作
;串口調(diào)試助手發(fā)送數(shù)據(jù)給877,877收到后再轉(zhuǎn)發(fā)回串口助手
;硬件要求:撥碼開關(guān)S7全置ON,其他撥碼開關(guān)置OFF
#INCLUDE
__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC
VAL_US?? EQU?? .249?????????????? ;短延時定時參數(shù)
VAL_MS?? EQU?? .200?????????????? ;長延時定時參數(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次延時程序
?CALL??? DELAY_MS
?GOTO??? USART_1???????????????????? ;返回!
;*************************200ms延時程序***********************
DELAY_MS
?MOVLW?? VAL_MS
?MOVWF?? COUNT_MS
LOOP_MS
?CALL??? DELAY_US
?DECFSZ? COUNT_MS,1
?GOTO??? LOOP_MS
?RETURN
;*************************100us延時程序***********************
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
評論