微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > c语言中 unsigned uchar *led 什么意思?

c语言中 unsigned uchar *led 什么意思?

时间:10-02 整理:3721RD 点击:

void xian(unsigned char *led)

{

unsigned char i;

for(i=0;i<8;i++)

{

P0=0;

cs2=0;

cs1=1;

P0=0xff;

wr=0;

_nop_();

_nop_();

wr=1;

cs2=1;


cs1=0;

P0=led;

wr=0;

_nop_();

_nop_();

wr=1;

cs1=1;


dat=0;

cs2=0;

cs1=1;

P0=tab1;

wr=0;

_nop_();

_nop_();

wr=1;

cs2=1;

}

}

……//中间省掉一些子函数

void main()

{

Tinit();

s=0;

while(1)

{

led[7]=tab[shi/10];

led[6]=tab[shi%10];

led[5]=tab[16];

led[4]=tab[fen/10];

led[3]=tab[fen%10];

led[2]=tab[16];

led[1]=tab[miao/10];

led[0]=tab[miao%10];

led1[0]=led[0];

led1[1]=led[1];

led1[2]=led[2];

led1[3]=led[3];

led1[4]=led[4];

led1[5]=led[5];

led1[6]=led[6];

led1[7]=led[7];

xian(led);

if(s==0)

shan();

}

}


/*************************************************************************************************************************************************/ /********以下是原程序************************************************************************************************************************/

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define dat P0
sbit cs1=P1^0;
sbit cs2=P1^1;
sbit wr=P1^2;
sbit anj=P1^3;
uchar k,wie,shi,fen,miao,num;
uchar led[8],led1[8];
bit s;
void xian(uchar *led);

uchar code tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar code tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xbf};

void Tinit()
{
        TMOD=0x11;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        TH1=(65536-50000)/256;
        TL1=(65536-50000)%256;
        EA=1;
        ET0=1;
        ET1=1;
        EX0=1;
        IT0=1;
        IT1=1;
        TR0=1;
}

void delay(uchar a)
{
        uchar b;
        for(;a>0;a--)
                for(b=20;b>0;b--);
}

void shan()
{
        if(wie==0)
        {
                led1[0]=0xff;
                led1[1]=0xff;
        }
        if(wie==1)
        {
                led1[3]=0xff;
                led1[4]=0xff;
        }
        if(wie==2)
        {
                led1[6]=0xff;
                led1[7]=0xff;
        }
        k=30;
        while(k--)
                xian(led1);
        k=80;
        while(k--)
                xian(led);
}
void xian(uchar *led)
{
        uchar i;
        for(i=0;i<8;i++)
        {
                 dat=0;
                cs1=1;
                cs2=0;
                dat=0xff;
                wr=0;
                _nop_();
                _nop_();
                wr=1;
                cs2=1;
               
                cs1=0;
                dat=led;
                wr=0;
                _nop_();
                _nop_();
                wr=1;
                cs1=1;
               
                dat=0;
                cs2=0;
                cs1=1;
                dat=tab1;
                wr=0;
                _nop_();
                _nop_();
                wr=1;
                cs2=1;
                delay(20);
                dat=0x00;
                cs1=1;
                cs2=1;
                               
        }
}



void main()
{
        Tinit();
        s=0;
        while(1)
        {
                led[7]=tab[shi/10];       
                led[6]=tab[shi%10];
                led[5]=tab[16];
                led[4]=tab[fen/10];
                led[3]=tab[fen%10];
                led[2]=tab[16];
                led[1]=tab[miao/10];
                led[0]=tab[miao%10];
                led1[0]=led[0];
                led1[1]=led[1];
                led1[2]=led[2];
                led1[3]=led[3];
                led1[4]=led[4];
                led1[5]=led[5];
                led1[6]=led[6];
                led1[7]=led[7];
                xian(led);
                if(s==0)
                        shan();
        }
}
void wu0() interrupt 0
{
        TR1=s;
        EX1=s;
        s=~s;
        TR0=s;
}
void time0() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        num++;
        if(num==5)
        {
                num=0;
                miao++;
                if(miao==60)
                {
                        miao=0;
                        fen++;
                        if(fen==60)
                        {
                                fen=0;
                                shi++;
                                if(shi==24)
                                        shi=0;
                        }
                }
        }       
}
void wu1() interrupt 2
{
        if(wie==0)
        {
                miao++;
                if(miao==60)
                        miao=0;
        }
        if(wie==1)
        {
                fen++;
                if(fen==60)
                        fen=0;
        }
        if(wie==2)
        {
                shi++;
                if(shi==24)
                        shi=0;
        }
}
void time1() interrupt 3
{
        TH1=(65536-50000)/256;
        TL1=(65536-50000)%256;
        num++;
        if(num==6)
        {
                num=0;
                if(anj==0)
                {
                        wie++;
                        if(wie==3)
                                wie=0;
                                delay(10);
                }
        }       
}

/*************************************************************************************************************************************************/ /*************************************************************************************************************************************************/



问 *led什么意思?


//uchar *led表示led是一个指针变量。从整个程序来看,void xian(uchar *led)函数需要做如下修改。
//因为你的uchar led[8],tab1[8];是全局数组,所以不用传参,直接用。
//void xian(uchar *led)
void xian(void)
{
        uchar i;
        for(i=0;i<8;i++)
        {
                 dat=0;
                cs1=1;
                cs2=0;
                dat=0xff;
                wr=0;
                _nop_();
                _nop_();
                wr=1;
                cs2=1;
               
                cs1=0;

                //这里是送段码数据
                //dat=led;

               dat=led[ i ];
                wr=0;
                _nop_();
                _nop_();
                wr=1;
                cs1=1;
               
                dat=0;
                cs2=0;
                cs1=1;

               //这里送位选数据
               // dat=tab1;

               dat=tab1[ i ];

                wr=0;
                _nop_();
                _nop_();
                wr=1;
                cs2=1;
                delay(20);
                dat=0x00;
                cs1=1;
                cs2=1;
                                
        }
}

那个,你能说的简单点吗,,刚学,不懂诶

指针变量,可以参考C语言。

上一篇:ATMEL单片机
下一篇:8*8*8光立方原理求助

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

网站地图

Top