標(biāo)題: 求教個(gè)仿真問題,在將函數(shù)內(nèi)容放到主函數(shù)按位輸出IO口沒問題,做成調(diào)用函數(shù)出現(xiàn)顯示... [打印本頁]

作者: zhouyixing852    時(shí)間: 2021-4-25 11:49
標(biāo)題: 求教個(gè)仿真問題,在將函數(shù)內(nèi)容放到主函數(shù)按位輸出IO口沒問題,做成調(diào)用函數(shù)出現(xiàn)顯示...
源程序如下:
#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();//數(shù)碼管顯示函數(shù)聲明

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    時(shí)間: 2021-4-25 12:12
你這不報(bào)錯(cuò)?
1.你注釋的函數(shù)聲明 displayout();
改成 void displayout(uchar num);
2.你主函數(shù)調(diào)用這個(gè)函數(shù),都不傳參的?

你這C語言得好好練練。
作者: zhouyixing852    時(shí)間: 2021-4-25 21:34
啊哈哈123 發(fā)表于 2021-4-25 12:12
你這不報(bào)錯(cuò)?
1.你注釋的函數(shù)聲明 displayout();
改成 void displayout(uchar num);

改了,也是不行,可以看下是哪里有問題  
作者: zhouyixing852    時(shí)間: 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);//數(shù)碼管顯示函數(shù)聲明

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.torrancerestoration.com/bbs/) Powered by Discuz! X3.1