首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

利用USART实现单片机与PC通信

利用USART实现单片机与PC通信

;实验目的:熟悉USART通信
;通过“串口调试助手”协助工作
;串口调试助手发送数据给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
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
返回列表