标题:
关于51单片机警告问题!完全没看出哪里函数没有调用
[打印本页]
作者:
873119779
时间:
2018-10-25 11:19
标题:
关于51单片机警告问题!完全没看出哪里函数没有调用
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
/*******************************************************************************
* 函数名 :UsartInit()
* 函数功能 :设置串口
* 输入 : 无
* 输出 : 无
*******************************************************************************/
int i,m,j,l;
unsigned char SendByte;
code smgduan[17]={0x80,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示.~F的值
char x[17]={'.','0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char a[5];
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
void UsartInit()
{
SCON=0X50; //设置为工作方式1
TMOD=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //计数器初始值设置,注意波特率是4800的
TL1=0XF3;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1; //打开计数器
}
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void delay(int u)
{
while(u--);
}
void main()
{
UsartInit(); // 串口初始化
while(1);
{
for(m=0;m<19;m++)
{
if(x[m]==SBUF)
{
a[l]=smgduan[m];
}
}
}
for(j=4;j>=0;j--)
{
switch(j) //位选,选择点亮的数码管,
{
case(0):
LSA=0;LSB=0;LSC=0; break;//显示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//显示第1位
case(2):
LSA=0;LSB=1;LSC=0; break;//显示第2位
case(3):
LSA=1;LSB=1;LSC=0; break;//显示第3位
case(4):
LSA=0;LSB=0;LSC=1; break;//显示第4位
}
P0=a[l];//发送段码
delay(100); //间隔一段时间扫描
P0=0x00;//消隐
}
}
/*******************************************************************************
* 函数名 : Usart() interrupt 4
* 函数功能 : 串口通信中断函数
* 输入 : 无
* 输出 : 无
*******************************************************************************/
void Usart() interrupt 4
{
for(i=0;i<5;i++)
{
a[i]=(int) SendByte;
SBUF=a[i];
RI = 0;//清除接收中断标志位
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志位
}
}
作者:
yzwzfyz
时间:
2018-10-26 00:34
放断点,就可以知道它走不走到那里了。
作者:
HC6800-ES-V2.0
时间:
2018-10-26 08:03
你的错误在于:while主函数后面有个
不应该有的分号
!!!!!!!!!!!!
作者:
xuyaqi
时间:
2018-10-26 08:49
main()要改成这样就没警告了:
void main()
{
UsartInit(); // 串口初始化
while(1)
{
for(m=0;m<19;m++)
{
if(x[m]==SBUF)
{
a[l]=smgduan[m];
}
}
for(j=4;j>=0;j--)
{
switch(j) //位选,选择点亮的数码管,
{
case(0):
LSA=0;LSB=0;LSC=0; break;//显示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//显示第1位
case(2):
LSA=0;LSB=1;LSC=0; break;//显示第2位
case(3):
LSA=1;LSB=1;LSC=0; break;//显示第3位
case(4):
LSA=0;LSB=0;LSC=1; break;//显示第4位
}
P0=a[l];//发送段码
delay(100); //间隔一段时间扫描
P0=0x00;//消隐
}
}
}
作者:
yousunny
时间:
2018-10-26 09:00
可能是软件的bug,可以重装试试
作者:
止语
时间:
2018-10-26 10:05
用switch-case的时候每个case后面要加break吧
作者:
zhanghyg
时间:
2018-10-26 10:33
关键在于细心,自己看吧
360截图20181026103021037.jpg
(37.76 KB, 下载次数: 29)
下载附件
2018-10-26 10:31 上传
作者:
ITxiaoxin1919
时间:
2018-10-26 12:14
断了往前找
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1