ÐÂÎÅ×ÊѶ
ÀûÓÃUSARTʵÏÖµ¥Æ¬»úÓëPCͨÐÅ[PIC16F877A+»ã±àÓïÑÔ]
2010-12-01


[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]


¹Ø×¢ÓÐÈË΢ÐŹ«ÖÚºÅ
Á˽â¸ü¶àÐÅÏ¢

sitemap¡¢µØÍ¼