STC11F04单片机串口终端程序

发布者:Aningmeng最新更新时间:2017-01-17 来源: eefocus关键字:STC11F04  单片机  串口终端 手机看文章 扫描二维码
随时随地手机看文章

用STC11F04单片机做的串口终端程序。类似交换机的telnet命令。

由于时间仓促仅仅只实现了简单的几个命令。

 help
LED1_ON
LED1_OFF
LED2_ON
LED2_OFF


例如,在串口终端输入? 



输入Time 命令,可以查询到现在单片机内部的时间。


输入LED1_ON 可以把板子上的 LED1点亮


输入LED1_OFF可以把板子上的LED1熄灭


如果输入的不是以上的命令,则提示错误信息。



总体上,目前就实现了以上功能。 感兴趣的朋友可以自己再加入一些命令。


整个源代码如下:

#include"reg51.h"
#include "stdio.h"
#include"intrins.h"  //_nop_()
#include "string.h"

unsigned int tick;

int hh,mm,ss; //时:分:秒
sbit LED1=P1^0;
sbit LED2=P3^7;

unsigned char cmd_buf[32];
char cmd_len=0;

void cmd(void);

char putchar (unsigned char i)
{
    ES     =   0;  //关串口中断
    TI     =   0;  //清零串口发送完成中断请求标志
    SBUF   =   i;
    while(TI ==0); //等待发送完成
    TI     =   0;  //清零串口发送完成中断请求标志
    ES     =   1;  //允许串口中断
return SBUF;
}

void Task_1s()
{
  //printf("S=[%d:%d:%d]\r\n",hh,mm,ss); 
  _nop_();
}
void Task_1m()
{  
  // printf("M=[%d:%d:%d]\r\n",hh,mm,ss); 
   _nop_();
}
void Task_1h()
{
   //printf("H=[%d:%d:%d]\r\n",hh,mm,ss); 
    _nop_();
}
//0.1ms = 100us
void Timer0(void) interrupt 1 using 1 //定时器0中断外理
{
   TR0=0;
   TH0=(65536-2000)/256; 
   TL0=(65536-2000)%256; 
    
tick++;     //计数值+1
    if(tick>999)    //加到10次即1秒
    { 
          
      tick=0;
 ss++;
 if(ss>59){
        mm++;
ss=0;
if(mm>59){
 hh++;
 mm=0;
 if(hh>11){
 hh=0;
          
 }
 Task_1h();//1小时定时任务
}
        Task_1m(); //1分钟定时任务
  }
  Task_1s();//1s定时任务
    }
TR0=1;
}


void UART_one_Interrupt_Receive(void) interrupt 4
{
    unsigned char   k   =   0;
    if(RI==1)
    {
        RI  =   0;
        k   =   SBUF;
        if(cmd_len>32)
{
 cmd_len=0;
}
cmd_buf[cmd_len++]=k;
printf("%c",k);


    }
    else
    {
        TI  =  0;
    }
}

void cmd()
{
   if(strncmp(cmd_buf,"time",4)==0)
   {
      printf("Time=[%d:%d:%d]\r\n",hh,mm,ss);
   }
   else if(strncmp(cmd_buf,"LED1_ON",7)==0)
   {
     LED1=1;
   }
   else if(strncmp(cmd_buf,"LED1_OFF",8)==0)
   {
     LED1=0;
   }
    else if(strncmp(cmd_buf,"LED2_ON",7)==0)
   {
     LED2=1;
   }
    else if(strncmp(cmd_buf,"LED2_OFF",8)==0)
   {
     LED2=0;
   }
   else if(strncmp(cmd_buf,"?",1)==0||strncmp(cmd_buf,"help",4)==0)
   {
      printf("time\r\n");
      printf("help\r\n");
 printf("LED1_ON\r\n");
 printf("LED1_OFF\r\n");
 printf("LED2_ON\r\n");
 printf("LED2_OFF\r\n");
   }
   else
   {
     printf("\r\n错误的命令,如果不知道命令请输入【?】或【help】。\r\n"); 
   }
}
void main()
{
  SCON=0x50; //0101,0000 8位可变波特率,无奇偶校验位
  TMOD=0X21;
  TH1=TL1=-(11059200L/12/32/9600);
  TR1=1;
  tick=0;
  hh=0;
  mm=0;
  ss=0;
  TH0=(65536-2000)/256; 
  TL0=(65536-2000)%256; 
  TR0=1;
  ET0=1;
  ES=1;    //允许串口中断
  EA=1;    //开总中断 
  printf("SystemStart...\r\n");
    while(1)
  {
     _nop_();
if(cmd_len>0)
    if(cmd_buf[cmd_len-1]=='\r')
    {
      cmd();
      printf("\r\nEXOS_V1#:");
      cmd_len=0;
    }
  }
}


总结:STC单片机还是够强大吧。 呵呵

本程序关键在于使用了C语言的内置函数来完成以上功能。

stdio.h  ------ printf  标准的输出函数

string.h  ----- strncmp  字符串比较函数


推荐使用 Xshell 软件作为终端调试工具。如下图



感兴趣的朋友,把代码直接复制到 KeilC51 V2 里,直接编译即可运行。


关键字:STC11F04  单片机  串口终端 引用地址:STC11F04单片机串口终端程序

上一篇:Cortex-M3的几个重要框图
下一篇:单片机后缀说明

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

实现AVR单片机芯片程序自刷 USB_Flash_BootLoader HID制作过程
前期制作USBASP过程中,学习了AVR单片机芯片的BootLoader原理,查找了很多关于USB-HID和BootLoader的资料制作了可以自刷程序的atmega8(16)简易板,现将所学的分享给大家。 一、关于BootLoader BootLoader是芯片上电后,程序不从flash地址的0x00执行,而是跳转到boot区执行bootloader程序。 atmega8的boot区的大小及起始位置是由其熔丝位来设置(BOOTSZ0、BOOTSZ1)的。 其是否执行bootloader程序也是由熔丝位(BOOTRST)设置的。 二、关于USB-HID HID是人体学输入设备的英文简称,由于
[单片机]
实现AVR<font color='red'>单片机</font>芯片程序自刷 USB_Flash_BootLoader HID制作过程
pic 单片机DS18B20采样 LCD1602显示
#include 1602.h #include 18b20.h #include main.h __CONFIG(0X0B31); main() { char msg = { Temperature: , .C }; delay_us2 (40, 40); delay_us2 (100, 200); initial(); while(1) { start_convert(); change_to_ascii (get_temp (), &msg ); display2(&msg ,&msg ); } } //------------------
[单片机]
单片机和LED灯阵制作的贪吃蛇趣味小游戏
最近几天天气总是在下雨,对于不爱玩手机游戏的我来说过得太无聊了。 想想咋么才能让时间过得快一点呢,这个时候我看到电视里的一个广告类似贪吃蛇的,于是抱着试试看的想法 用单片机和LED灯阵做了一个贪吃蛇的游戏 基本功能都有,玩起来体验还可以,总算可以充分利用时间了。 下面我就把制作过程和文件分享给大家 用一个18650电池供电,用一个单片机进行控制 名称:8X8点阵贪吃蛇 功能: 按右键开始、中间可以选择速度1最慢9最快(飞一般的感觉) 速度2和9,哎呀呀,自己撞死了(可以穿墙,撞到自己的身体死亡) 按中间确定可查看吃到了多少 暂停 废话不多说先上实物图 实物图1 实物图2 焊接实物图1 由于时间比较急线
[单片机]
用<font color='red'>单片机</font>和LED灯阵制作的贪吃蛇趣味小游戏
PIC16C64单片机外部功能特点
  一、捕抓/比较/脉宽调制模块   PICI6C64单片机的RC2/C CPI脚具有捕抓/比较/PWM输出的功能,对应于内部的捕抓/比较/PWM模块,简称CCPI模块。该模块内有一16位寄存器。(CCPR1)可由软件设置而作为捕抓寄存器,比较寄存器或PWM输出寄存器。由图工中的CCP1控制寄存器(CCP1CON)来选择模式。   (一)捕抓功能   RC2/CCP 1脚作为捕抓功能时,应置为输入态。当有脉冲事件在CCP1脚上发生时,CCPR1即捕抓记录下此时TMR1(计数器1)的值,井产生捕抓发生中断请求.   例程1. BSF TRISC,2 ;CCP1脚置为输入   MOVLW,XXXX0101;选CCP1为捕抓模
[单片机]
MCS-51单片机与CPLD/FPGA接口逻辑设计
在功能上,单片机与大规模CPLD有很强的互补性。单片机具有性能价格比高、功能灵活、易于人机对话、良好的数据处理能力潍点;CPLD/FPGA则具有高速、高可靠以及开发便捷、规范等优点。以此两类器件相结合的电路结构在许多高性能仪器仪表和电子产品中仍将被广泛应用。本文就单片机与CPLD/FPGA的接口方式作一简单介绍,希望对从事单片机和CPLD/FPGA研发的朋友能有所启发。 单片机与CPLD/FPGA的接口方式一般有两种,即总线方式与独立方式,分别说明如下: 一、总线方式 单片机以总线方式与CPLD/FPGA进行数据与控制信息通信有许多优点。 (1)速度快。如图一所示,其通信工作时序是纯硬件行为,对于MCS-51单片机,只需一条单字节
[单片机]
NXP:微控制器在边缘人工智能中扮演着越来越重要的角色
就在几年前,人们还认为机器学习(ML)甚至深度学习(DL)只能在高端硬件上执行,在边缘侧需要通过网关、边缘服务器或数据中心执行训练和推理,这在当时是一个主流观念,因为在云和边缘之间研究如何分配计算资源还处于早期阶段。但由于工业界和学术界的深入研究和开发努力,这种情况已经发生了巨大的变化。 如今,最新的微控制器(其中一些带有嵌入式ML加速器)可以将ML带到边缘设备中,性能也很强大,已经可以达到数TOPS了。 这些设备不仅可以执行ML,而且还可以以低成本、低功耗、仅在绝对必要时才连接到云端的特性。简言之,集成了ML加速器的微控制器代表了下一步,将计算应用到麦克风、摄像头和监控环境条件的传感器上,这些传感器产生的数据将在模块中就
[单片机]
NXP:<font color='red'>微控制器</font>在边缘人工智能中扮演着越来越重要的角色
51单片机入门教程上(保姆级指南)
前言 一、入门学习路线 1.《电路基础》 2.C语言基础 3.单片机基础 4.Altium Designer 二、前期准备工作 1.所需要的软件 (1)Keil 5 (2)STC-ISP (3)Proteus Professional 8 2.所需的硬件 (1)普中A2开发板 (2)其他开发板 正文 一、单片机的最小系统 1.复位电路 2.晶振电路 3.单片机IO口 (1)基本工作条件引脚 (2)输入输出引脚 (3)控制引脚 二、单片机的内部架构 三、单片机可控制的外设 1.LED流水灯 2.矩阵键盘和数码管显示 3.LCD1602和DS18B20 总结 前言 提示:以下是本篇文
[单片机]
51<font color='red'>单片机</font>入门教程上(保姆级指南)
EH78系列单片机的编程技巧
笔者在某智能水表开发中使用了EM78P447芯片,对EM78系列芯片有了较深认识,在实践中总结了一些开发此类芯片应注意的问题,同时给出了应用中的编程技巧。 市面上常见的介绍EM78系列的参考书中,都给出了一些应用实例,但这些实例一般程序代码量较小,功能单一。虽然这些实例对于新手确实起到了很好的作用,但一个产品可能功能很复杂,程序可能达到几千行,这就会出现一些短程序中没有遇见的问题。以笔者的开发为例,程序总共5千多行,有效的汇编语句代码有3千多行。由于义隆没有提供C的编译环境,只能以汇编进行编码,而汇编的结构、条理性与C语言比较不是很清晰,再加上EM78单片机结构的独特性,所以当程序代码量较大的时候总会出现一些新的问题。下面将实
[工业控制]
EH78系列<font color='red'>单片机</font>的编程技巧
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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