找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2770|回复: 6
打印 上一主题 下一主题
收起左侧

51关于程序模块化问题--求教

[复制链接]
跳转到指定楼层
楼主
我写了一个函数在一个模块里面,然后在主函数中包含了这个模块的头文件,并且编译也并没有错,但是就是不能实现功能。但是如果我把这个函数体放在主函数里面就可以实现功能,请问大神们这是什么原因。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:150719 发表于 2016-11-28 12:48 | 只看该作者
可能是没有调用函数,可以把代码贴出来么
回复

使用道具 举报

板凳
ID:70330 发表于 2016-11-28 15:13 | 只看该作者
可能是参数没传过去
回复

使用道具 举报

地板
ID:150680 发表于 2016-11-28 15:16 | 只看该作者
这是我的主函数代码:目前主要的问题是键盘扫描函数失效
#include<hong.h>
#include <lcd_1602.h>
#include <ad.h>
#include <iic.h>
#include <transfer_num.h>
#include <keyscan.h>

uchar  u1=3,u2=0,u3=0;


uchar code dis4[] = {"T- .  V  "};
uchar code dis5[] = {"U- .  V  I- .  A"};

main()
{       
    uchar ad=0;
    uchar i,l;
    delay(10);                 //延时
    lcd_init();                //初始化LCD            

    lcd_pos(0);                //设置显示位置为第一行的第1个字符
     i = 0;
    while(dis4[i] != '\0')
     {                         //显示字符
       lcd_wdat(dis4[i]);
       i++;
     }

    lcd_pos(0x40);             //设置显示位置为第二行第1个字符
     i = 0;
    while(dis5[i] != '\0')
     {
       lcd_wdat(dis5[i]);      //显示字符
       i++;
     }
       
  while(1)
  {       
        iicInit();                      //I2C总线初始化
    ADC_PCF8591(0x04);

        if(SystemError == 1)          //有错误,重新来
          {
                  iicInit();                                  //I2C总线初始化
            ADC_PCF8591(0x04);
           }   
       
        for(l=0;l<4;l++)       
         {
       

          show_value(receivebuf[2]); //显示通道2                  
            lcd_pos(0x42);            
        lcd_wdat(dis[2]);        //整数位显示
        lcd_pos(0x44);            
        lcd_wdat(dis[1]);        //第一位小数显示
        lcd_pos(0x45);            
        lcd_wdat(dis[0]);        //第二位小数显示

      show_value(receivebuf[3]); //显示通道3         
            lcd_pos(0x4b);            
        lcd_wdat(dis[2]);        //整数位显示
        lcd_pos(0x4d);              
        lcd_wdat(dis[1]);        //第一位小数显示
        lcd_pos(0x4e);            
        lcd_wdat(dis[0]);        //第二位小数显示

              show_value_out(u1,u2,u3); //显示通道0

          iicInit();                             //I2C总线初始化  
      DAC_PCF8591(0x40,receivebuf[0]); //D/A输出

                   if(SystemError == 1)          //有错误,重新来
            {
                   iicInit();                                  //I2C总线初始化
                 DAC_PCF8591(0x40,receivebuf[0]); //D/A输出
            }
                                                            
          //delay(50);                       //延时
         }
add(u1) ;


}
  }


QQ图片20161128151310.png (7.98 KB, 下载次数: 64)

功能模块

功能模块

QQ图片20161128151330.png (14.51 KB, 下载次数: 72)

keyscan.c文件

keyscan.c文件

QQ图片20161128151336.png (14.3 KB, 下载次数: 57)

keyscan.h文件

keyscan.h文件
回复

使用道具 举报

5#
ID:70330 发表于 2016-11-28 19:16 | 只看该作者
while(1)里没有调用键盘扫描函数
回复

使用道具 举报

6#
ID:70330 发表于 2016-11-28 19:24 | 只看该作者
iicInit()放在主循环里啥意思,是反复初始化吗?add(u1)应该放在主循环体中的第一位置
回复

使用道具 举报

7#
ID:150812 发表于 2016-11-28 19:55 | 只看该作者
看你的程序,应该是想通过按键去改变u1的值,但你这样传递,u1的值是永远不变的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表