51单片机 printf函数 调试程序

发布者:自由探索最新更新时间:2020-05-13 来源: eefocus关键字:51单片机  printf函数  调试程序 手机看文章 扫描二维码
随时随地手机看文章

主要分三个部分(1)51单片机程序部分;(2)keil工具部分;(3)为何printf输出为串口。


(1)51单片机程序部分


#include

#include

 

void InitUART(void)//使用定时器1作为串口波特率发生器

{

    TH1 = 0xF3; //晶振12mhz 波特率串口上设为2400才不显示乱码代码是4800

    TL1 = TH1;

    TMOD |= 0x20; //定时器1方式2

    SCON = 0x50; //串口接收使能

    ES = 1; //串口中断使能

    TR1 = 1; //定时器1使能

    TI = 1; //发送中断标记位,必须设置

}

//毫秒延时函数

void delay_ms(unsigned int t)

{

    unsigned char a,b;

    while(t--)

    {

      for(b=102;b>0;b--)

      for(a=3;a>0;a--);

    }

}

 

void main()

{

    InitUART(); //初始化串口

    EA = 1;   //开总中断

    while(1)

    {

        delay_ms(500);

        printf("hellon");//串口打印结果

    }

 }


代码部分注意事项:


代码中包含 头文件#include,其中包含printf函数;

串口初始化时,TI = 1;


(2)keil设置显示串口输出结果


在C51中、printf和scanf函数主要用于串行数据的收发


有时在进行软件调试的时候,需要使用printf函数输出一些结果


要在Keil中看到这些结果,只需要两步:(当然首先要进入调试界面再做以下两步)


1  设置

打开Peripherals-->Serial窗口,选择IRQ中的TI、RI两个选项


2  打开输出窗口

打开View-->Serial Window #1窗口


在程序中的printf语句的输出就显示在这个窗口中


现在就到程序窗口运行程序、运行结束后打开Serial窗口就可以看到printf的输出了。


(3)为何printf从串口输出


查看了keil的帮助文件里面的printf函数说明,原来printf函数最终是调用putchar函数来实现打印输出字符的。


KeilC51LIB文件夹里面找到了putchar.c文件,putchar函数使用TI和SBUF,确定为串口终端输出。


注意:printf重定向功能,即用户自己定义putchar函数,例如


//UART1 发送串口数据

void UART1_SendData(char dat)

{

    ES=0;           //关串口中断

    SBUF=dat;           

    while(TI!=1);   //等待发送成功

    TI=0;           //清除发送中断标志

    ES=1;           //开串口中断

}

 

//UART1 发送字符串

void UART1_SendString(char *s)

{

    while(*s)//检测字符串结束符

    {

        UART1_SendData(*s++);//发送当前字符

    }

}

 

//重写putchar函数

char putchar(char c)

{

    UART1_SendData(c);

    return c;

}

关键字:51单片机  printf函数  调试程序 引用地址:51单片机 printf函数 调试程序

上一篇:关于51单片机使用printf串口调试
下一篇:基于51 单片机的串口收发数据

推荐阅读最新更新时间:2024-11-19 16:36

51单片机上拉电阻多大
1、51单片机的p0口为了实现准3态,采用了oc输出,也就是集电极悬空输出,也有叫图腾柱输出的。这种电路结构,只有下拉能力,高电平输出没有电流,在高电平时表现为高阻态;加上上拉电阻,就会失去高阻态,变成 1、0 两态。 2、p0口上拉电阻的选择,应遵循基本的电路设计原则,不能盲目套用,要看后级情况而定: 例如,后级驱动的是1只npn三极管,这个三极管的放大倍数(β)=100倍,三极管的负载电流(ic)要求100ma,当电源为5v时: a、三极管的ib=ic/β=1ma; b、上拉电阻大约=r=5v/ib=5kω; c、为了使三极管注入ib后就迅速进入导通(开)状态,r应再小一些,如4k3; 3、由上面计算可见,三极管的负载大小、放
[单片机]
51单片机显控系统中的汉字输入
对于PC机来说,输入汉字是非常简单的,但在一些单片机人机接口系统中,进行汉字的实时输入是很困难的,而大多只能显示事先已取好字模点阵的汉字,但是每个16×16汉字点阵由32个字节表示,对于需要灵活使用大量汉字的场合,程序量太大,实现起来有很大难度;下面针对汉字库的结构进行分析,设计一种实用的汉字拼音输入法,并给出液晶汉字显示模块的基本程序。 1 汉字的内码表示 针对不同的操作系统汉字内码表示不同,如在苹果机的OS上使用的是GB231280汉字编码,Window s系统则使用GBK汉字编码,还有Unicode编码,GB180302000,方正748编码等。由于GB 231280是最早(1980年)的、由中国国家标准局颁
[单片机]
<font color='red'>51单片机</font>显控系统中的汉字输入
51单片机基础之数码管(一)
原理: 数码管有8个LED灯,分别是abcdefgh,有共阴和共阳,给高低电平,对应的LED就会亮,然后显示想显示的数字。 代码: #include reg52.h #define SMG P0 //宏定义数码管 void main(void) { SMG=0x06; //相当于P0=0000 0110,显示数字一,这里要去了解一下数码管发光原理,说白了就是八个LED灯 while(1) { } } 运行结果: 数码管显示数字一
[单片机]
<font color='red'>51单片机</font>基础之数码管(一)
51单片机学习:外部中断1实验
实验名称:外部中断1实验 接线说明: 实验现象:下载程序后,当按下K4键可控制D1指示灯亮灭 注意事项: ***************************************************************************************/ #include reg52.h typedef unsigned int u16; //对系统默认数据类型进行重定义 typedef unsigned char u8; //定义LED1管脚 sbit LED1=P2^0; //定义独立按键K4控制脚 sbit KEY4=P3^3; /*******************************
[单片机]
学习笔记之51单片机键盘篇
(一)基础补充 1.键盘的任务 (1)判别是否有键按下?若有,进入下一步。 (2)识别哪一个键被按下,并求出相应的键值。 (3)根据键值,找到相应键值的处理程序入口。 2.键盘的识别 按键的闭合与否,反映在行线输出电压上就是呈现高电平或低电平,单片机通过对行线电平的高低状态的检测,便可以确认按键是否按下或松开。为了确保单片机对一次按键动作只确认一次按键有效(所谓按键有效,是指按下按键后,一定要再松开),必须消除抖动期t1和t3的影响。 3.如何消除按键的抖动 (1)用软件延时来消除按键抖动,基本思路是:在检测到有键按下时,该键所对应的行线为低电平,执行一段延时10ms的子程序后,确认该行线电平是否仍为低电平,如果仍为低
[单片机]
学习笔记之<font color='red'>51单片机</font>键盘篇
基于AT89C51单片机的雨量数码管显示设计
一.系统概述 系统使用的模块有AT89C51单片机+8位共阴极数码管+ADC0808(模拟雨量)+ULN2003电机驱动模块+电机。 系统使用AT89C51单片机作为主控,通过ADC0808和电位器模拟雨量的变化,单片机会将采集到的雨量数据处理并将其显示在数码管上,雨量的上限和下限通过程序进行了设定,分别是130和120,当雨量超过120后电机就会运转,当雨量超过130运转速度加快。 二.仿真概述 1.8位共阴极数码管显示雨量。 2.电位器模拟雨量检测模块检测雨量。 3.当雨量达到120时雨刷器开始工作。 4.当雨量达到130时雨刷器的速度加快。 三.程序设计 使用 Keil 51进行程序设计,打开
[单片机]
基于AT89C<font color='red'>51单片机</font>的雨量数码管显示设计
基于51单片机的电话留言机设计
电话留言机的设计与开发主要经历了可行性分析、系统设计与系统调试三个阶段。 1.5.1 可行性分析 从当时国内电话机的发展状况来看,电话留言机在市场上品种很少,进口的电话留言机价格较昂贵,不能被一般电话用户接受,而国内对电话留言机已有较大的需求,因此,研制电话留言机势在必行。 从技术角度来看,技术人员已掌握电话留言机的关键技术,其核心器---单片机与语音芯片,市场上已有性能好、功能强、价格低的产品可供选择。因此,研制国产电话留言机是可行的。 1.5.2 系统设计 为了提出正确的设计方案,首先要对电话机内部电路作详细的分析与电话机的连接接口,为整个方案奠定良好的基础。 在选择单片机时,首选
[单片机]
51单片机实现4个按键控制8个LED灯四种状态
电路图 元件清单 程序(C语言) #include reg51.h sbit p3_0=P3^0; sbit p3_1=P3^1; sbit p3_2=P3^2; sbit p3_3=P3^3; void delay(unsigned char i); void main() { unsigned char ledctr; P3=0xff; while(1) { ledctr=P3; switch(ledctr) { case 0xff:P1=0x00;break; case 0xfe:P1=0xff;break; case 0xfd:P1=0x55;delay(
[单片机]
<font color='red'>51单片机</font>实现4个按键控制8个LED灯四种状态
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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