单片机串口及串口调试助手的使用

发布者:变形金刚最新更新时间:2017-11-11 来源: eefocus关键字:单片机  串口  串口调试助手 手机看文章 扫描二维码
随时随地手机看文章

要求:pc机向单片机发送321,单片机向电脑发送get321!,pc机向单片机发送123,单片机向pc机发送当前的秒数(自打开到接收到的时间值)

#include
#include "Config.h"  
uchar i = 0;
uchar Count = 0,second=0,minute;//用来计数、定时
uchar flag = 0;
uchar string[3], j = 0;//用来储存每次接受的字符
void Send_Byte(uchar data)
{
  while(!(IFG1&UTXIFG0));         
    U0TXBUF=data;
}
//发送字符串
void Print_Str(uchar *s)
{
    while(*s != '\0')
    {
        Send_Byte(*s++);
    }
  
}
//端口的初始化


void UART_Init()
{
  U0CTL|=SWRST;               //复位SWRST,当SWRST=1时开始进行设置串口
  U0CTL|=CHAR;                //8位数据模式
  U0TCTL|=SSEL1;              //SMCLK为串口时钟
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps
  ME1|=UTXE0;                 //UART1发送使能
  ME1|=URXE0;                 //UART1接收使能
  U0CTL&=~SWRST;
  IE1|=URXIE0;                //接收中断使能位
 
  P3SEL|= BIT4;               //设置IO口为普通I/O模式
  P3DIR|= BIT4;               //设置IO口方向为输出
  P3SEL|= BIT5;
}

void TIMERA_Init(void)                                   //连续计数模式,计数到0XFFFF产生中断
{
    TACTL |= TASSEL1 + TACLR + ID0 + ID1 + MC0 + TAIE;     //SMCLK做时钟源,8分频,增加计数模式,开中断
  TACCR0 = 9999;     
}

#pragma vector = TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
  switch(TAIV)                                  //需要判断中断的类型
  {
    case 2:break;
    case 4:break;
    case 10:Count++;break;                         //设置标志位Flag
  }
  if(Count==100)                                 //100次为1秒
  {
    second++;
    Count=0;
    if(second==60)
    {
     minute++;
     second=0;
     
    }
 
}

}

#pragma vector=UART0RX_VECTOR
__interrupt void UART0_RX_ISR(void)
{
  uchar data=0;
  data=U0RXBUF;

string[j++] = data; 
      if(j >= 3)
      {
        j = 0;
      }
        if((string[0]=='3')&&(string[1]=='2')&&(string[2]=='1'))
        {
         
          Send_Byte('g');
          Send_Byte('e');
          Send_Byte('t');       
          Send_Byte('3');      
          Send_Byte('2');
          Send_Byte('1');
          Send_Byte('!');
          Send_Byte(' ');
          string[0]='\0';
          string[1]='\0';
         string[2]='\0';
        }

  if((string[0]=='1')&&(string[1]=='2')&&(string[2]=='3'))
        {
          Send_Byte(minute/10+0x30);
           Send_Byte(minute+0x30);
           Send_Byte(':');
           Send_Byte(second/10+0x30);
           Send_Byte(second+0x30);
           Send_Byte(' ');
       string[0]=0;
       string[1]=0;
       string[2]=0;
        }

}

void main(void)
{
    WDT_Init();                                       //看门狗设置
    Clock_Init();                                     //系统时钟设置
    UART_Init();
     TIMERA_Init();
    _EINT();                                          //开中断
   
    while(1)
    {
     ;
    }
}

//使用串口调试助手的时候注意应该要关掉以16进制发送跟显示,发送的均是以ASCLL的,所以发送数字的时候应+0x30,发送字符的时候应  加’‘,

//单片机接受pc机发送的指令是单个接受的,一个字符一个字符接受的,所以说需要设置一个数组来储存所接受的字符,否则每次接受中断,之前接受的字符就没有了,

单片机发送字符也是单个字符发送的,但是也可以发送字符串,


关键字:单片机  串口  串口调试助手 引用地址:单片机串口及串口调试助手的使用

上一篇:MSP430G2553(二)Timer定时器说明与实例
下一篇:430f149的定时器A的中断程序

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

探析单片机中PWM的原理与控制程序
PWM 在单片机中的应用是非常广泛的,它的基本原理很简单,但往往应用于不同场合上意义也不完全一样,这里我先把基本概念和基本原理给大家介绍一下,后边遇到用的时候起码知道是个什么东西。 PWM 是 Pulse Width Modulation 的缩写,它的中文名字是脉冲宽度调制,一种说法是它利用微处理器的数字输出来对模拟电路进行控制的一种有效的技术,其实就是使用数字信号达到一个模拟信号的效果。这是个什么概念呢?我们一步步来介绍。首先从它的名字来看,脉冲宽度调制,就是改变脉冲宽度来实现不同的效果。我们先来看三组不同的脉冲信号,如图 10-1 所示。 这是一个周期是 10ms,即频率是 100Hz 的波形,但是每个周期内,高低电
[单片机]
探析<font color='red'>单片机</font>中PWM的原理与控制程序
X-FAB联手Efabless推出首款开源RISC-V微控制器Raven芯片
全球领先的模拟/混合信号代工厂商X-FAB Silicon Foundries和众包(crowd-sourcing)IC平台的合作伙伴Efabless Corporation, 今天宣布成功推出Efabless RISC-V的首款系统芯片(SoC)参考设计。该项目从设计到流片不到三个月的时间, 使用了基于开源工具的Efabless设计流程。该款命名为Raven的混合信号SoC基于超低功耗PicoRV32 RISC-V内核开发,Efabless已经成功在100MHz下对其进行了测试,并且根据仿真结果,该SoC应该能够在高达150MHz的频率下工作。 Raven的独特之处在于开源顶级设计(top-level design)采用了X
[嵌入式]
X-FAB联手Efabless推出首款开源RISC-V<font color='red'>微控制器</font>Raven芯片
51单片机读写AT29C040的C51程序
给大家介绍一个51单片机读写AT29C040的c51程序 #include 《reg51.h》 #include 《intrins.h》 unsigned char time; void int_t0(void) interrupt 1 { time++; } unsigned char d; //rec data bit rec(void) { TH0=0;time=0; while (!RI) {if (time》1) return(1);} RI=0; d=SBUF; return(0); } void sen(unsigned char dd) { SBUF=dd; while (!TI) {} TI=0; } voi
[单片机]
基于单片机ATmega16的无线温度监测系统
摘要:利用AVR系列的ATmega16单片机、无线收发模块nRF24L01、数字温度传感器DS18B20和LCD1602液晶显示器设计了无线温度监测系统。该系统通过配置ATmega16单片机,采集DS18B20转换的温度量,将温度信息显示在LCD1602液晶显示器上,同时通过无线收发模块将温度信息传送到管理终端进行显示和处理。系统同时保证当被测温度不在合理范围时发出声音报警信号。 关键词:单片机;ATmega16;DS18B20;无线温度监测;nRF24L01 0 引言 随着社会的发展和进步,越来越多的场合对温度的要求日臻严格,温度监控系统的应用日趋受到重视。在农业发展领域,农业大棚、冷库、培育温室等众多场合都需要温度测量技
[工业控制]
基于<font color='red'>单片机</font>ATmega16的无线温度监测系统
单片机三种下载程序的方式
单片机下载就三种,一种为离线下载,一种为在系统下载,一种为升级下载。 离线下载为把单片机取下,放在编程器上下载,这种方式通常使用并行的方式写入程序。 在系统下载就是你说的ISP,单片机在线路板上不用取下。USB下载只是其中之一,像STC单片机可以通过串口下载,ATMEL单片机通过SPI下载,还有的像ARM单片机通过JTAG下载等等。 升级下载和ISP下载差不多,之不过通过已经写入到单片机的程序来改写自身的FLASH。多用于远程方式烧写,这种方式常用在手机或示波器等仪器的升级,或通过以太网这种远程的方式改变程序。 研发的时候一般用ISP方式下载,这样不用来回焊下芯片,特别是贴片的,焊几次就可能会坏。 量产的时候一般用离线方
[单片机]
单片机看门狗程序
/*此程序实现单片机"看门狗"WDT的功能*/ #include "p18f458.h" unsigned long i; /*系统初始化子程序*/ void initial() { TRISD = 0X00; /*D口设为输出*/ } /*延时子程序*/ void DELAY() { for (i=19999;--i;) continue; } /*主程序*/ main () { initial(); /*初始化,设定看门狗的相关寄存器*/ PORTD = 0X00; /*D口送00H,发光二极管亮*/ DELAY(); /*给予一定时间的延时*/ PORTD = 0XFF; /*D口送FFH,发光二极管
[单片机]
51单片机 数码管的显示与译码器
共阳极数组0~9:display ={0xC0,0xF9,0xA4,0xB0,0x91,0xA2,0x82,0xF8,0x80,0x90} 共阳极数组A~F:display ={0x88,0x83,0xA6,0xC1,0x86,0x8E} 共阴极数组0~9:display ={0x3F,0x06,0x5B,0x4F,0x6E,0x6D,0x7D,0x07,0x7F,0x6F} 共阴极数组A~F:display ={0x77,0x7C,0x59,0x3E,0x79,0x71} 共阴、两组四位一体数码管,位选接74LS138译码器,输入(位选)CBA接P20,P21,P22。段选通过74573后接P1口。 若不使用译码器,可直接将位选
[单片机]
利用小型MCU实现LED照明的色彩控制
中心议题 *分析了利用小型MCU实现LED照明的色彩控制的方法 解决方案 *MCU读取来自光传感器的颜色成分,校准光传感器输出,并通过调节各个LED驱动器的输出获得想要的颜色 *LED使用恒流驱动器来维持光输出的一致性 LED用于通用照明已指日可待。LED在通用照明系统中优势很多,如寿命更长以及效率更高。然而, LED技术还面临着一些挑战。其中一个挑战就是如何产生高品质的白光。白光LED的构成包含了蓝光LED 和能将光输出移至光谱的其他波段的一种荧光粉。许多白光LED都无法产生高显色指数(Color Rendering Index,CRI),该参数用于衡量光源真实重现色彩的能力。 通过混合两种或两种以
[电源管理]
利用小型<font color='red'>MCU</font>实现LED照明的色彩控制
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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