很多外部模块是使用串口的方式与单片机通信的,但有的单片机只有一个串口,且不能硬件仿真,比如我使用的STC90C516,如果将唯一的串口给了外部模块,就不能打印调试信息了。
不过如果是使用AT指令只这样的模块,比如蓝牙SPP,WiFi模块,是使用AT指令的方式通信的
我们可以保留单片机串口与PC的连接,串口同时与模块连接,这样单片机的发送信息同时被模块和PC收到了。
模块只对AT指令有反应,对其他格式不正确的指令无反应,
如:
printf("AT+RST\r\n");//模块对该指令有反应
printf("DEBUG+RST Test\r\n");//模块对该指令无反应
这样串口就可以接收发送的数据和调试信息了,注意指令后面要加换行符。
关键字:51单片机 单串口 AT指令 调试信息输出
引用地址:
51单片机单串口同时实现AT指令和调试信息输出
推荐阅读最新更新时间:2024-03-16 14:55
51单片机使用printf函数带参数打印不正常的解决办法
本人在调试STC8A8K64S4单片机时遇到一个很奇葩的问题,使用printf函数打印一个带参数的调试信息时出现异常,具体表现定义了8位的变量使用%X格式打印出的值却变成了16位,且赋值为0后任然打印出16位的随即数值。由于之前使用stm32单片机一直使用printf打印没有出现过类似情况,因此没有怀疑是函数问题而是怀疑是否为单片机某处寄存器设置错误。在看了很久手册之后没发现问题,最后自己写了一个带参数打印的函数发现数值没有错误。由于项目匆忙未继续深入探究原因,只能初步断定在51单片机使用printf函数带参数打印时数值不正常。 当然使用printf带参数打印调试是非常方便的,因此我尝试使用sprintf先将参数装到一个buf
[单片机]
51单片机的内存映射(二)
本篇主要讲述单片机的FLASH内存映射,首先来看一下FLASH的内存映射表: 上图中启动地址是0x0000,也就是单片机上电后PC指向的这个位置,我们把需要执行的程序的首地址放在其中,对应的汇编语言如下图所示: 0地址去执行内部RAM的初始化工作,后面的代码控制寄存器指挥PC去取地址,以此来决定程序的运行! 在这里大家有没有觉得很奇怪:51单片机里面为什么没有时钟的初始化和中断向量表的初始化呢?其实原因很简单, 51单片机对12M晶振的时钟进行12分频,它就是固定的1M,因此就不需要设置时钟了。而STM32就不一样了,用户可以随意配置单片机的工作时钟。另外还有一个问题,单片机为什么不去中断向量表的注册呢?这是因
[单片机]
keil5安装及51单片机入门程序实例
1. keil5的安装 之前我在找的时候,一直以为官网不是很方便下载,在其他地方找,这过程很玛法,今天试了一下官网发现非常方便. 进入官网,点击Downloads 点击C51,以为我们是写51的单片机嘛,当然也可以下载其他的。 然后填写一下信息,非常方便的,而且很快,然后submit就ok了 在安装好了之后,需要我们破解,这里我们需要下载一个软件,在网上可以很方便地找到,这个很方便,就不啰嗦了。 现在打开keli5,点击project,创建新项目 7. 然后就是选择文件夹了,之后找到AT89C51即可 8. 然后点击添加文件 9. 之后就是选择文件类型,和定义文件名了 完了之后就可以开始写程序啦。
[单片机]
51单片机演示<世上只有妈妈好>音乐
//《世上只有妈妈好》51单片机C语言程序和音乐采灯程序 //此程序在硬件上调试通过 //本程序的单片机晶振采用11.0592MHZ //此程序的流水灯随音乐的节拍的快慢而动 #include reg51.h sbit speaker=P2^0; //接音频放大电路, //sbit speaker=P3^2; sbit sw=P3^0; //电后位后,sw合上后就开始放音乐,灯开始闪动,sw断开,音乐停止,灯也同时停止闪动 unsigned char timer0h,timer0l,time,led=1,j=0; unsigned char flagd=0; //世上只有妈妈好数据表 code
[单片机]
想学好单片机设计,这些最常见的难题你都要解决
在初学51单片机的时候,总是伴随很多有关与晶振的问题,其实晶振就是如同人的心脏,是血液的是脉搏,把单片机的晶振问题搞明白了,51单片机的其他问题迎刃而解…… 有关51单片机有关晶振的问题一并总结出来,希望对学51的童鞋来说能有帮助。 一,为什么51单片机爱用11.0592MHZ晶振? 其一:因为它能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。 其二:用11.0592晶振的原因是51单片机的定时器导致的。用51单片机的定时器做波特率发生器时,如果用11.0592Mhz的晶振,根 据公式算下
[嵌入式]
51单片机学习:外部中断0实验
实验名称:外部中断0实验 接线说明: 实验现象:下载程序后,当按下K3键可控制D1指示灯亮灭 注意事项:将红外接收传感器取下,防止对P3.2口干扰 ***************************************************************************************/ #include reg52.h typedef unsigned int u16; //对系统默认数据类型进行重定义 typedef unsigned char u8; //定义LED1管脚 sbit LED1=P2^0; //定义独立按键K3控制脚 sbit KEY3=P3^2; /**********
[单片机]
51单片机开发之独立按键
JP165跳线帽断开、JP10连接J12(为了实现按键控制LED灯的效果)、JP5连接JP8、J21接左边 3.5.2 示例代码 下面代码都使用多文件编程模型,这里贴出每个文件的主要代码。 下面代码实现的效果是,按下按键控制LED灯。 Main.c文件: #include reg51.h #include delay.h #include key.h #include type.h #include led.h int main() { u8 key; LED=0; //关闭所有LED灯,51单片机默认输出高电平,LED默认高电平点亮 while(1) { key=Key_
[单片机]
基于51单片机的新型步进电机运动控制器
1 引言 数控技术是一种采用计算机对机械加工过程中各种控制信息进行数字化运算处理,并通过高性能的驱动单元对机械执行构件进行自动化控制的高新技术。现代机械加工业逐步向柔性化、集成化、智能化方向发展,因此新一代数控技术就必需强调具有开放式、智能化、网络化的特征 。本文采用新型微处理器、高性能集成电路,研究开发智能步进电机控制卡。 2 系统总体结构设计 通过对步进电机控制器关键技术进行分析、研究和比较,并综合国内外运动控制器产品智能化、集成化、开放化的发展趋势,我们提出的步进电机运动控制器总体结构如图1所示。 图1 系统总体结构 3 系统硬件电路设计 3.1 脉冲分频电路设计 本系统的主要控制对象为步进
[单片机]