c语言中 unsigned uchar *led 什么意思?
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<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语言。