189 8069 5689

c51语言输出函数,C51函数

怎么解决c51混合编程时调用printf报错?sprintf也会

C标准没有输出二进制的,不过用itoa()可以实现到二进的转换。

我们提供的服务有:成都做网站、成都网站制作、微信公众号开发、网站优化、网站认证、万安ssl等。为上1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的万安网站制作公司

1、在C语言程序中,可以使用标准库函数中printf()来向屏幕输出信息,或者使用sprintf()向缓冲区输出信息。对整数而言,可以使用%d、%o、%x(或%X)输出十进制形式、八进制、十六进制形式,但貌似缺乏二进制形式。

2、解决方式有两种,一种是利用Windows提供的itoa()函数,另一种自行设计一个新的函数:

代码一:

/** Test.h */

#pragma once

#ifndef Test_H

#define Test_H

/** use itoa() to print integers in the form of binary

* @param[in] n the integer to print

* @return void

*/

void printBinaryByItoa(unsigned int n);

代码二:

/** Test.c */

#include stdio.h

#include stdlib.h

void printBinaryByItoa(unsigned int n)

{

unsigned char data[33];

_itoa_s(n, data, 33, 2);

printf("%sb\n", data);

}

void printBinary(unsigned int n, unsigned char separator, unsigned char needPrefixZeros)

{

unsigned int i = 0;

unsigned int mask = 0; /* the mask code to get each bit of n */

unsigned char data[40]; /* the buffer to store the bits of n in the form of characters */

unsigned int index = 0; /* used to access data[] */

unsigned int start = 0; /* to point out where and when to store bits of n */

data[39] = '\0';

keil c51仿真时,怎样使用printf函数输出一个两位16进制数?

我在很久以前用printf输出过自制并行口数据,我相信此方法可行:printf(0x**,0x16),其中**表示地址,我已经有十年没编程了,据现在的情况发展不是很快,此法应该可以。注意在用的过程中要和缓冲器的关系处理好!试试吧,祝你成功。

c51中 printf怎用

是这样的,keil的stdio.h提供了一堆函数,大致分两类,一类是通过串口在上位机上输入输出,另一类是指定一个指针变量,向其输入输出,这样便可以将得到的字符数组指针的内容输出到LCD一类设备上了,也可通过指针获得按键输入。

对于一类,你必须得软件初始化串口,硬件与电脑连接好,然后利用windows的超级终端就可以显示单片机中程序里的printf等函数打印出的内容了,你也可以使用getchar获得超级终端的按键码。(当然也可以使用串口助手之类软件代替超级终端,注意波特率,数据位,校验位,等设置要保持一致)

对于第二类,是不用初始化串口的,因为跟串口没任何关系,你只要用指针虚拟设备就可以了,输入输出都是你自己做的硬件。

附串口初始化程序:

#define T1_INIT_VALUE 0x0D //定时器1初始值设定 9600bps@11.0592MHz

void UartInit(void) {

SCON = 0x50; //8位数据,可变波特率

TMOD = 0x0f; //清除定时器1模式位

TMOD |= 0x20; //设定定时器1为8位自动重装方式

TL1 = T1_INIT_VALUE; //设定定时初值

TH1 = T1_INIT_VALUE; //设定定时器重装值

ET1 = 0; //禁止定时器1中断

TR1 = 1; //启动定时器1

ES = 0; //禁止串行口中断

TI = 1; //必须置高TI,RI

RI = 1;

puts("Uart Initialize Success!");

// *.调用printf之前应该关闭串口中断使能

}

在C51语言编写中,我要输出数字整型,怎么个写法?

数据最大值可以确定,可以根据最大值定义一个ASCII数组,数组的每一个单元存放整形数据的一位。

发送前先对发送整形数组里的单元转换成ASCII数组,然后再按照通用的发送函数进行发送。

void InttoChar (uint IntNumber)

//---------------------------------------------------------

// Name: void InttoChar (int IntNumber)

// Func.: Translate integer to ASCII charactor array

// Char.: IntNumber number to be translated to ASCII charactor

//---------------------------------------------------------

{

if (IntNumber 10)

{

AsciiArray[0] = IntNumber + 0x30;

AsciiArray[1] = 0x20;

AsciiArray[2] = 0x20;

AsciiArray[3] = 0x20;

AsciiArray[4] = 0x20;

return;

}

if (IntNumber 100)

{

AsciiArray[0] = IntNumber / 10 + 0x30;

AsciiArray[1] = IntNumber % 10 + 0x30;

AsciiArray[2] = 0x20;

AsciiArray[3] = 0x20;

AsciiArray[4] = 0x20;

return;

}

if (IntNumber 1000)

{

AsciiArray[0] = IntNumber / 100 + 0x30;

AsciiArray[1] = IntNumber % 100 / 10 + 0x30;

AsciiArray[2] = IntNumber % 10 + 0x30;

AsciiArray[3] = 0x20;

AsciiArray[4] = 0x20;

return;

}

if (IntNumber 10000)

{

AsciiArray[0] = IntNumber / 1000 + 0x30;

AsciiArray[1] = IntNumber % 1000 / 100 + 0x30;

AsciiArray[2] = IntNumber % 100 / 10 + 0x30;

AsciiArray[3] = IntNumber % 10 + 0x30;

AsciiArray[4] = 0x20;

return;

}

else

{

AsciiArray[0] = IntNumber / 10000 + 0x30;

AsciiArray[1] = IntNumber % 10000 / 1000 + 0x30;

AsciiArray[2] = IntNumber % 1000 / 100 + 0x30;

AsciiArray[3] = IntNumber % 100 / 10 + 0x30;

AsciiArray[4] = IntNumber % 10 + 0x30;

return;

}

}

c51语言中,printf函数有什么用?

打印,就是输出一个语句!比如printf(“Hello word!”); 里面可以是字符串,可以是变量!

C51的scanf()和printf()是做什么的?

printf()是以规定的格式向单片机的串口输出数据 原型如下: extern int printf (const char *, ...);

const char *是格式控制字符串指针,必须以%开始, %[flags][width][.precision]][modified] type

scanf()函数是依规定的格式从串口输入数据,extern int scanf( const char * , ....)

与printf相同其格式控制符需要以%开始,一一个格式字符结束,中间可以插入附加字符:

%[*][width][modifiers]type


分享文章:c51语言输出函数,C51函数
文章地址:http://cdxtjz.com/article/hcgggp.html

其他资讯