关于return返回的问题,求指导
在测试时如果加上 i=0 这一句和没加效果一样 都是LCD1602上显示 o 闪烁
求指导
#include<reg51.h>
#include"All.h"
int i=1;
void main(void)
{
LCD_Init();
LCD_Clear();//清屏
// LCD_Write_Char(7,0,'o');
//LCD_Write_Char(8,0,'k');
//DelayMs(500);
while(1)
{
if(i==1)
{
LCD1602_Write_Char(7,0,'O');
// i=0;
return ;
}
else
{
LCD1602_Write_Char(8,0,'A');
}
}
}
你写return 都跳出函数了 当然是显示O了
不知道小编为什么要写上return这句话呢?是什么意思?这个return是返回到操作系统了。也就是管理程序去了。
想问的是跳出哪个函数,下面又该运行哪句代码了,小白,求指导。
原本的主程序是下面的程序,我就是不知道程序中return返回的什么,下面又该怎么运行,才写的上面的代码看看能不能试出来的。
就是 err=1 下面怎么运行 完整的主程序在下面
if(err != 0){//如果发生错误
sprintf(Data,"ERR:%d",(int)err);//显示错误代码
LCD_Write_String(0,0,Data);
return;//发生错误后跳出循环
程序原来就是LCD1602显示DH11采集的温度和湿度。
void main(void)
{
unsigned char err,Data[10],val[5];
LCD_Init();
delayms(20);//有助于液晶稳定
LCD_Clear();
while(1)
{
DHT11_start();
err = DHT11_r_data(val);
if(err != 0){//如果发生错误
sprintf(Data,"ERR:%d",(int)err);//显示错误代码
LCD_Write_String(0,0,Data);
return;//发生错误后跳出循环
}else{
LCD_Write_String(14,0,"OK");
}
sprintf(Data,"H:%d.%d %%",(int)val[0],(int)val[1]);//显示湿度
LCD_Write_String(0,0,Data);
sprintf(Data,"T:%d.%d C",(int)val[2],(int)val[3]);//显示温度
LCD_Write_String(0,1,Data);
if((val[0] + val[1] + val[2] + val[3]) == val[4]){//效验数据是否正确,根据器件资料 所有温度和湿度的总和等于最后一个数据
LCD_Write_String(14,1,"OK");
}else{
LCD_Write_String(13,1,"ERR");
}
delayms(1000);
LCD_Clear();
}
}
return就是函数直接结束掉,返回之前调用这个函数的位置。比如下面这段代码,就是结束func函数,返回到主函数,不打印那句话。
void func(int a){
if(a != 0) return;
printf("a == 0\n");
}
void main(){
int a = 1;
func(a);
}
对于你提供的代码,只有一个函数(主函数),主函数中的return就是直接结束掉主函数,后面的代码全都不执行了,while当然也会结束掉。
你还是去看看c语言的return的功能吧
你在main函数中直接来个return就相当于程序已执行完毕