C51单片机 的 串口打印 10进制数👇
问题相关代码:
#include <reg51.h>
#include <stdio.h>
#include <string.h>
unsigned char string[10];
void delay(unsigned int count)
{
unsigned char i;
while(count-- != 0)
for(i=0; i<120; i++);
}
char Usart_Send_16bit_Data(unsigned int value)////////
{
char strings[8];
char Enter[3]="\r\n";
sprintf(strings,"%d",value);
strcat(strings,Enter);
Usart_Send_String(strings);
return value;
}
void main()
{ unsigned char i = 0x00;
IE = 0x00;
TMOD = 0x20;
TH1 = TL1 = 0xFD;
PCON = 0x00;
SCON = 0x50;
TR1 = 1;
ES = 1;
EA = 1;
while(1)
{
SBUF =Usart_Send_16bit_Data(i) ;
i = i+1;
delay(500);
}
}
void SerialIO0( ) interrupt 4
{
if(RI)
{
RI = 0;
P1 = SBUF;
}
else
TI = 0;
}
** 运行结果及报错内容 :**
显示我的20行: Usart_Send_String(strings);
出现了:main.c(20): error C267: 'Usart_Send_String': requires ANSI-style prototype
ps:串口显示连接普中C51单片机的软件stc-isp-15xx-v6.86L
**
@我想问一下大家有没有解决方法,
或者是有其他解决用串口打印1-100十进制数字的方法嘛蟹蟹!**
Usart_Send_String () , 这个函数未定义或未声明调用。
函数没有定义,或者包含该函数声明的头文件没有包含进来。
上面已经把错误说明了,我就不多说了。
其实没有必要写得这么复杂,而且你写了这么多还是错的,根本不能输出你想要的东西。
直接用printf函数就可以了,C51的printf默认用UART输出。
不过用printf的话,不要开串口中断,初始化的时候把TI设置为1,参考C51的helloworld例程的串口初始化代码
给你写个基本框架吧
#include <reg51.h>
#include <stdio.h>
void main()
{
int i;
TMOD = 0x20;
TH1 = TL1 = 0xFD;
PCON = 0x00;
SCON = 0x50;
TR1 = 1;
TI1 = 1;
for(i = 0; i< 100; i++){
printf("%d\r\n", i);
}
while(1){}
}