pic单片机串口调试程序

发布者:HeavenlyWhisper最新更新时间:2017-12-04 来源: eefocus关键字:pic单片机  串口调试 手机看文章 扫描二维码
随时随地手机看文章

;********************************************************************** 
;利用串口调试精灵或PC端的超级终端,波特率设为9600,数据位8位, 
;停止位1位,无校验位. 
;烧写时注意振荡方式XT,WDT要禁止. 
;*********************************************************************** 

   LIST P=16F877 
   INCLUDE "P16F877.INC" 
;*********************************** 
;__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC; 
;************************ 
   CBLOCK  0x20 
TXBUFF   :9 
TXPTR 
TXCOUNT 
RXBUFF   :9 
PUTPTR 
GETPTR 
STATUS_TEMP 
FSR_TEMP 
   ENDC 
;********************************** 

W_TEMP EQU 7FH 
;********************************** 
   ORG 0X000 
   GOTO MAIN 
   ORG 0X004 
   GOTO INT 
   ORG 0X008 
;********************************** 
INT 
   MOVWF W_TEMP        ;保护现场 
   SWAPF STATUS,W 
   CLRF STATUS 
   MOVWF STATUS_TEMP 
   MOVFW FSR 
   MOVWF FSR_TEMP 
;------------------------ 
CHKRXINT 
   BANKSEL PIR1 
   BTFSS PIR1,RCIF    ;检查是否为USART发出的中断请求 
   GOTO  CHKTXINT 
;---------------------------- 
_RDRXFIFO 
   BTFSC RCSTA,FERR   ;帧格式错误标志位 
   GOTO _FERR_PRO 

   MOVLW RXBUFF       ; 
   MOVWF FSR 

   MOVF PUTPTR,W 
   ADDWF FSR,F 
   MOVF RCREG,W 
   MOVWF INDF 
   INCF PUTPTR,F 
;   MOVLW .7 
;   ANDWF PUTPTR,F 

   BTFSC PIR1,RCIF 
   GOTO _RDRXFIFO 
;-------------------------- 
   BTFSS RCSTA,OERR  ;超速出错标志位 
   GOTO ENDOFINT 
;------------------------ 
_OERR_PRO 
   BCF RCSTA,CREN    ;0=禁止连续接收功能 
   BSF RCSTA,CREN    ;1=使能连续接收功能 
   GOTO ENDOFINT 
;------------------------ 
_FERR_PRO 
   MOVF RCREG,W 
   GOTO ENDOFINT 
;************************************ 
;发送程序 
CHKTXINT 
   BSF STATUS,RP0    ;设置文件寄存器的体1 
   BTFSS PIE1,TXIE   ;发送中断标志使能位 
   GOTO  ENDOFINT 
   BCF STATUS,RP0    ;恢复到文件寄存器体0 

   BTFSS PIR1,TXIF   ;发送中断标志位 
   GOTO  ENDOFINT 
;----------------------- 
   MOVLW TXBUFF      ;发送暂存寄存器=20H 
   MOVWF FSR 
   MOVF TXPTR,W 
   ADDWF FSR,F 
   MOVF INDF,W 
   MOVWF TXREG 
   INCF TXPTR,F 
   DECFSZ TXCOUNT,F  ;要发送的数据 位数 
   GOTO ENDOFINT 
;---------------------- 
   BSF  STATUS,RP0 
   BCF PIE1,TXIE     ;发送中断位禁止 
   BCF STATUS,RP0 
;-------------------------- 
ENDOFINT             ;恢复现场 
   CLRF STATUS 
   MOVFW FSR_TEMP 
   MOVWF FSR 
   SWAPF STATUS_TEMP,W 
   MOVWF STATUS 
   SWAPF W_TEMP,F 
   SWAPF W_TEMP,W 
   RETFIE 
;******************************************************** 

;******************************************************** 
MAIN 
   BANKSEL TXSTA     ;设置文件寄存器的体1 
   MOVLW B’00100100’ ;使能USART发送,设置波特率发生器为高速方式 
   MOVWF TXSTA 

   MOVLW .25         ;装载波特率发生器为9600 
   MOVWF SPBRG     

   CLRF PIE1 
   BSF PIE1,RCIE     ;开放USART的接收中断 
   CLRF STATUS       ;恢复到文件寄存器体0 

   CLRF TXCOUNT 
   CLRF GETPTR 
   CLRF PUTPTR 

   MOVLW B’10010000’  ;使能USART连续接收,同时使能USART端口 
   MOVWF RCSTA 

   CLRF INTCON 
   BSF INTCON,PEIE   ;使能外设中断使能位 
   BSF INTCON,GIE    ;使能全局中断使能位 
;********************************* 
LOOP 
   CALL CHECK_DATA 
   GOTO LOOP 
;********************************* 
CHECK_DATA 
   CLRF STATUS 
   MOVF TXCOUNT,W 
   SKPZ              ;BTFSS STATUS,Z 
   RETURN 
;-------------------------------- 
   MOVF  GETPTR,W 
   XORWF PUTPTR,W  
   SKPNZ             ;BTFSC STATUS,Z 
   RETURN  
;-------------------------------- 
   MOVLW RXBUFF 
   MOVWF FSR 
   MOVF  GETPTR,W 
   ADDWF FSR,F 

   INCF  GETPTR,F 
;   MOVLW .7 
;   ANDWF GETPTR,F 

   MOVF  INDF,W 
   MOVWF TXBUFF+0 
;------------------------------- 
;   MOVLW ’-’ 
;   MOVWF TXBUFF+1 
;   MOVLW ’P’ 
;   MOVWF TXBUFF+2 
;   MOVLW ’I’ 
;   MOVWF TXBUFF+3 
;   MOVLW ’C’ 
;   MOVWF TXBUFF+4 
;   MOVLW ’A’ 
;   MOVWF TXBUFF+5 
;   MOVLW ’V’ 
;   MOVWF TXBUFF+6 
;   MOVLW ’R’ 
;   MOVWF TXBUFF+7 
;------------------------------ 
   MOVLW 0X0D      ;回车键  
   MOVWF TXBUFF+1  
   MOVLW 0X0A      ;换行键  
   MOVWF TXBUFF+2 
;------------------------------ 
   MOVLW .3 
   MOVWF TXCOUNT 
   CLRF TXPTR     ;发送清0 

   BSF STATUS,RP0 
   BSF PIE1,TXIE 
   BCF STATUS,RP0 
   RETURN 
;------------------------------- 
   END 


关键字:pic单片机  串口调试 引用地址:pic单片机串口调试程序

上一篇:基于PIC18F66J60实现的Ethernet-RS-232协议转换器
下一篇:PIC16F72定时器C程序

推荐阅读最新更新时间:2024-03-16 15:48

PIC单片机EUSART串行通信接口的应用方法解析
PIC单片机的EUSART是一种串行通信接口,我们可以利用他让不同设备之间传输数据,我们来讲讲我们最常用的串行异步接收和发送。 管脚 串行异步接收和发送。如果只要两个引脚,一个是接收RX一个是发送TX。 数据格式 我们先来讲讲TX是如何发送出数据的,数据格式具体是什么样的。 如果我们要向其他设备发送个大写字母A。将是什么样的呢。“A”这个字母对应的ASCII码是65,对应的八位二进制数则是01000100。TX就将对应的二进制码发送出去。 发送时用高电平来代表1,用低电平代表0.那不发送数据的时候管脚就一直为高电平。 启动位和停止位 怎么区分现在是在发送数据还是在常态呢?所以在每次发送一个字节的数据之前TX脚
[单片机]
<font color='red'>PIC单片机</font>EUSART串行通信接口的应用方法解析
基于PIC单片机的电动自行车控制系统设计
摘 要:介绍以单片机PICl6F72为核心的电动自行车用无刷直流电动机控制系统的设计。该系统采用电流与速度双闭环控制的结构,其中电流调节器用传统的PI调节器,速度调节器为改进的PI调节器。实验验证了此设计方案的可行性和优越性,即控制电路简洁,器件少,成本低,保护措施可靠,提高了系统的控制精度。该设计对无刷直流电机在其他领域的应用有一定的帮助和借鉴,具有广泛的现实意义。该系统速度环采用改进型的PI调节器控制,且通过软件运用算法测速,实现转速反馈,既简化电路又节省成本。 关键词:电动自行车;控制系统;无刷直流电动机;PIC16F72;PID控制 0 引 言 随着社会的不断进步,人们生活水平的提高,环境保护和能源节约问题已经越来越
[工业控制]
基于<font color='red'>PIC单片机</font>的电动自行车控制系统设计
PIC单片机C语言程序设计(6)
  4.可预置起始时刻的倒计时程序   在2010 年第2 期《PIC 单片机C 语言程序(5)》一文中,我们介绍了可预置起始时刻的时钟的硬件电路并给出了C 语言程序。下面要介绍的可预置起始时刻的倒计时程序,是作为日常生活中对某事件的定时之用:只要某事件由人工设置的计时时间到,倒计时电路便会发出报警声。倒计时的特点是,计时一旦达到预定值,其值就归零。利用归零条件,即可实现任意倒计时达到时的报警功能,提示人们定时已到。   本倒计时器可在0~99 分钟内任意设置计时值。   例如在厨房中,蒸大米饭(8 两米),定时33 分钟,烧开水(一壶)为20 分钟,煮胡罗卜(红色)为30 分钟等,只要设定时间一到,倒计时器即报警,使用十分
[单片机]
<font color='red'>PIC单片机</font>C语言程序设计(6)
pic单片机硬件iic例子
PIC -IIC硬件驱动程序 #include pic.h #define uchar unsigned char #define uint unsigned int __CONFIG(0x3B31); const uchar ee_data ={1,2,3,4,5,6}; uchar read_data ; unsigned char duan ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char wei ={0x3e,0x3d,0x3b,0x37,0x2f,0x1f}; const uchar table ={0x3f,0x06,0x5b,0x
[单片机]
PIC单片机人机接口模块元器件选择
  (1)芯片引脚。   12~20根为PIC16C5X的双向可独立编程I/O口,每根I/O口都可由程序来编程决定其输入/输出方向。PIC16C5X有5种型号,如表1所示   表一  PIC16C5X管脚   PIC16C5X管脚图如图1所示   图1  PIC16C5X管脚图   各引脚的功能描述如表2所示   表2  各引脚的功能   (2)内部结构。   PIC16CSX在一个芯片上生成了一个8位算术逻辑单元ALU和工作寄存器W;384bit~2KB的12位程序存储器ROM;32~80个8行数据寄存器RAM;12~20个I/O口端:8位计数器及预分频器;时钟、复位及看门狗计数器等,内部
[嵌入式]
Microchip中国嵌入式设计论坛开始报名
  9月22日消息,Microchip Technology Inc.(美国微芯科技公司)从今天起就嵌入式设计论坛(EDF)开始接受报名。EDF是一系列围绕创新技术的全球性技术培训盛会,帮助设计人员处于当今竞争社会的前沿。这一系列论坛将于2009年11月23日至2010年1月22日在中国以下12个城市举办:北京、成都、重庆、广州、杭州、南京、青岛、上海、沈阳、深圳、厦门和西安。所有与会者均可优惠购买指定的Microchip开发工具。报名或欲了解更多信息,请访问http://www.microchip.com/EDF。   嵌入式设计论坛将向设计人员讲解如何利用最新的PIC®单片机(MCU)技术为设计添加更多的特性和功能,同时又
[嵌入式]
PIC单片机位域结构的应用解析
在写程序中遇到要用标志位的情况,以为可以和keil51一样进行位定义,虽知道一直报错,后来才知道MC18编译器是不支持位定义的(PICC18编译器倒是支持的)下面给出一种解决办法—》位域结构体。 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。一、位域的定义和位域变量的说明
[单片机]
<font color='red'>PIC单片机</font>位域结构的应用解析
PIC单片机汇编指令集合
(1)因为寄存器都分散在不同的bank里,对寄存器操作时就是转换当前所在的bank。如果你知道是你要操作的寄存器在哪个bank,那么就直接movlb也可以。BANKSEL就是自动的,不用你去查datasheet了。 (2)MOVF:是把一个寄存器内存送入W寄存器中,如 MOVF 8, 0 就是把第8寄存器送到W中,后面是0说明存后F不变。 MOVWF:与上面相反,把W内容存入F寄存器中, 相当于MOV W to F。 (3)常用指令: CLRF PORTD ; //PORTD 清零 BCF PORTE ; //RE0清零 MOVLW d'100; //意思是把100(D代表十进制),存入寄存器W MO
[单片机]
<font color='red'>PIC单片机</font>汇编指令集合
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved