微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于return返回的问题,求指导

关于return返回的问题,求指导

时间:10-02 整理:3721RD 点击:
写程序遇到的,想知道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就相当于程序已执行完毕

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top