
[code="asm"]
;ʵÑéÄ¿µÄ£ºÊìϤUSARTͨÐÅ
;ͨ¹ý¡°´®¿Úµ÷ÊÔÖúÊÖ¡±ÐÖú¹¤×÷£¬²¨ÌØÂÊÉèÖÃΪ19200
;´®¿Úµ÷ÊÔÖúÊÖ·¢ËÍÊý¾Ý¸ø877£¬877ÊÕµ½ºóÔÙת·¢»Ø´®¿ÚÖúÊÖ
;Ó²¼þÒªÇ󣺲¦Â뿪¹ØS7È«ÖÃON£¬ÆäËû²¦Â뿪¹ØÖÃOFF
#INCLUDE<P16F877A.INC> ;µ÷ÓÃоƬͷÎļþ£¬Ê¡È¥ÌØÊâ¼Ä´æÆ÷µÈµÄ¶¨Òå
__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC
;µ÷ÊÔģʽ¹Ø±Õ£¬Ð´±£»¤£¬Ò»°ëROM¿ÉÔÚÏ߸Äд£¬EEPROM¼ÓÃÜ£¬µÍѹ±à³Ì¹Ø±Õ£¬µôµç¼ì²â¹Ø±Õ£¬ÉϵçÑÓʱ¿ª£¬¿´ÃŹ·¹Ø£¬4M¾§ÕñHSÕñµ´
VAL_US EQU .249 ;¶ÌÑÓʱ¶¨Ê±²ÎÊý
VAL_MS EQU .200 ;³¤ÑÓʱ¶¨Ê±²ÎÊý
COUNT EQU 25H
COUNT_MS EQU 26H
ORG 00H
NOP
GOTO MAIN
ORG 04H ;ÖжÏÈë¿ÚµØÖ·
BTFSS PIR1,RCIF ;ÅжÏÊÇ·ñÊÇ´®¿Ú½ÓÊÕÖжÏ
GOTO EXIT ;·ñ£¬×ªÖжϽáÊø³ÌÐò
MOVF RCREG,0 ;¶ÁÈ¡½ÓÊռĴæÆ÷µÄÊý¾Ý
MOVWF TXREG ;±£´æµ½·¢ËͼĴæÆ÷£¬Ëæºó·¢ËͳöÈ¥
EXIT
RETFIE
MAIN
USART
BANKSEL TRISC ;Ñ¡ÔñÌå1
BSF TRISC,7 ;¶Ï¿ªRCÄ£¿éÓëUSART TXÒý½ÅµÄÁªÏµ
BSF TRISC,6 ;¶Ï¿ªRCÄ£¿éÓëUSART RXÒý½ÅµÄÁªÏµ
MOVLW 0CH ;×°ÔØ²¨ÌØÂÊ·¢ÉúÆ÷£¬Îª19.2kbd
MOVWF SPBRG
MOVLW 24H ;ÊÆÄÜUSART£¬ÉèÖò¨ÌØÂÊ·¢ÉúÆ÷Ϊ¸ßËÙ·½Ê½
MOVWF TXSTA
BSF PIE1,RCIE ;ʹÄܽÓÊÕÖжÏ
CLRF STATUS ;·µ»ØÌå0
MOVLW 90H
MOVWF RCSTA ;ʹÄÜUSARTÁ¬Ðø½ÓÊÕ
BSF INTCON,GIE ;ʹÄÜÈ«¾ÖÖжÏʹÄÜλ
BSF INTCON,PEIE ;ʹÄÜÍâÉèÖжÏʹÄÜλ
USART_1
CALL DELAY_MS ;µ÷ÓÃ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
[/code]