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

作者: zhouyixing852    时间: 2021-4-25 11:49
标题: 求教个仿真问题,在将函数内容放到主函数按位输出IO口没问题,做成调用函数出现显示...
源程序如下:
#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;

}


作者: 啊哈哈123    时间: 2021-4-25 12:12
你这不报错?
1.你注释的函数声明 displayout();
改成 void displayout(uchar num);
2.你主函数调用这个函数,都不传参的?

你这C语言得好好练练。
作者: zhouyixing852    时间: 2021-4-25 21:34
啊哈哈123 发表于 2021-4-25 12:12
你这不报错?
1.你注释的函数声明 displayout();
改成 void displayout(uchar num);

改了,也是不行,可以看下是哪里有问题  
作者: zhouyixing852    时间: 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;

}





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1