找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求教个仿真问题,在将函数内容放到主函数按位输出IO口没问题,做成调用函数出现显示...

[复制链接]
跳转到指定楼层
楼主
ID:379877 发表于 2021-4-25 11:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
源程序如下:
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int   
#define uchar unsigned char   
sbit SEGA = P0^0;
sbit SEGB = P0^1;
sbit SEGC = P0^2;
sbit SEGD = P0^3;
sbit SEGE = P0^4;
sbit SEGF = P0^5;
sbit SEGG = P0^6;
sbit SEGH = P0^7;  

uchar num;
char val=12;
uchar M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

displayout();//数码管显示函数声明

void delay1ms(int w)  

    unsigned char a,b,c;
    for(c=w;c>0;c--)
        for(b=142;b>0;b--)
            for(a=2;a>0;a--);
}

void main()
{

  while(1)
  {
       num=M[val/10];                    displayout();
        num=M[val%10];
       displayout();
               
        }
}

void displayout(uchar num)
{
        
        SEGA = (num>>0)&0x01;
  SEGB = (num>>1)&0x01;
  SEGC = (num>>2)&0x01;
  SEGD = (num>>3)&0x01;
  SEGE = (num>>4)&0x01;
  SEGF = (num>>5)&0x01;
  SEGG = (num>>6)&0x01;
  delay1ms(100);
  SEGA=SEGB=SEGC=SEGD=SEGE=SEGF=SEGG=1;

}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:332214 发表于 2021-4-25 12:12 | 只看该作者
你这不报错?
1.你注释的函数声明 displayout();
改成 void displayout(uchar num);
2.你主函数调用这个函数,都不传参的?

你这C语言得好好练练。
回复

使用道具 举报

板凳
ID:379877 发表于 2021-4-25 21:34 | 只看该作者
啊哈哈123 发表于 2021-4-25 12:12
你这不报错?
1.你注释的函数声明 displayout();
改成 void displayout(uchar num);

改了,也是不行,可以看下是哪里有问题  
回复

使用道具 举报

地板
ID:379877 发表于 2021-4-25 21:41 | 只看该作者
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int   
#define uchar unsigned char   
sbit SEGA = P0^0;
sbit SEGB = P0^1;
sbit SEGC = P0^2;
sbit SEGD = P0^3;
sbit SEGE = P0^4;
sbit SEGF = P0^5;
sbit SEGG = P0^6;
sbit SEGH = P0^7;  

uchar num;
char val=12;
uchar M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

void  displayout(uchar num);//数码管显示函数声明

void delay1ms(int w)  

    unsigned char a,b,c;
    for(c=w;c>0;c--)
        for(b=142;b>0;b--)
            for(a=2;a>0;a--);
}

void main()
{

  while(1)
  {
       num=M[val/10];                          displayout();
        num=M[val%10];
       displayout();
               
        }
}

void displayout(uchar num)
{
        
        SEGA = (num>>0)&0x01;//仿真查看SEGA值无法赋正确的值,问题怎么解决,求解
        SEGB = (num>>1)&0x01;
        SEGC = (num>>2)&0x01;
        SEGD = (num>>3)&0x01;
        SEGE = (num>>4)&0x01;
        SEGF = (num>>5)&0x01;
        SEGG = (num>>6)&0x01;
       delay1ms(100);
      SEGA=SEGB=SEGC=SEGD=SEGE=SEGF=SEGG=1;

}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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