大家好,我是剛進(jìn)入led控制器行業(yè),以前做的都是硬件多,現(xiàn)在公司要做led控制器,我參考別人板子做了個主控制,后面是再加驅(qū)動板子.軟件調(diào)試時候,仿真p2,p0口都看到有電平信號出來了,可我燒進(jìn)51后,再測試接口電平,就一直高電平,不知道怎么回事.是不是我軟件不行,高手請幫看下軟件到底對不對?通過給245信號,再經(jīng)過595放大驅(qū)動led
謝謝
做了好多天了,老調(diào)試不來,很希望能得到高手指點(diǎn)下
做led控制器碰到個問題
全部回復(fù)(9)
正序查看
倒序查看
不知道怎么回事,老上傳不了
這么把程序發(fā)上去好了
#include
#include///////調(diào)用絕對地址訪問函數(shù)////
#include///////
#define uchar unsigned char
#define uint unsigned int////內(nèi)部函數(shù)/////
#define hao 0xc0
sbit oe =P2^7;
sbit rck =P2^6;
sbit sck =P2^5;
sbit datar=P2^4;
sbit wog =P3^5;
sbit led =P0^7;
sbit s23 =P0^5;
sbit s22 =P0^4;
sbit s21 =P0^3;
sbit s24 =P0^6;
sbit SDA =P2^1;
sbit SCL =P2^0;//////用到兩個字節(jié),第一個字節(jié)用來放模式,第2個字節(jié)用來放速度///不用也算了////////
bit input=0;
bit power=1;
uchar waita,timea,hui,liang,timeb;
uchar color,color1,mode,speed,speed1;
uchar s220,s221,s230,s231,s210,s211,s240,s241,mode; //key parmerter
bit addr,ishui,istype,istime,iscolor;
uchar huidu,speeddu,colordu,address,type;
uchar code spd[]={8,15,30,60,120,240,240};
uchar code spd1[]={2,5,13,19,28,45,90};
#define AddWr 0xa0 /*器件地址選擇及寫標(biāo)志*/
#define AddRd 0xa1 /*器件地址選擇及讀標(biāo)志*/
////////////////////////////////////////////////
void mDelay(uchar j)
{ uint i;
for(;j>0;j--)
{
for(i=0;i<125;i++)
{;}
}
}
/*發(fā)送起始條件*/
void Start(void) /*起始條件*/
{
SDA=1;
SCL=1;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
SDA=0;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
}
void Stop(void) /*停止條件*/
{
SDA=0;
SCL=1;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
SDA=1;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
}
void Ack(void) /*應(yīng)答位*/
{
SDA=0;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
SCL=1;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
SCL=0;
}
void NoAck(void) /*反向應(yīng)答位*/
{
SDA=1;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
SCL=1;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
SCL=0;
}
void Send(uchar Data) /*發(fā)送數(shù)據(jù)子程序,Data為要求發(fā)送的數(shù)據(jù)*/
{
uchar BitCounter=8; /*位數(shù)控制*/
uchar temp; /*中間變量控制*/
do
{
temp=Data;
SCL=0;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
if((temp&0x80)==0x80)/* 如果最高位是1*///////
SDA=1;
else
SDA=0;
SCL=1;//////////////////////發(fā)送準(zhǔn)備結(jié)束
temp=Data<<1; /*RLC*///////下一個字節(jié)
Data=temp;
BitCounter--;////////////
}while(BitCounter);
SCL=0;//////結(jié)束發(fā)送/////
}
uchar Read(void) /*讀一個字節(jié)的數(shù)據(jù),并返回該字節(jié)值*/
{
uchar temp=0;
uchar temp1=0;
uchar BitCounter=8;
SDA=1;
do{
SCL=0;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
SCL=1;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
if(SDA) /*如果Sda=1;*/
temp=temp|0x01; /*temp的最低位置1*/
else
temp=temp&0xfe; /*否則temp的最低位清0*/
if(BitCounter-1)
{ temp1=temp<<1;
temp=temp1;
}
BitCounter--;
}while(BitCounter);
return(temp);
}
void WrToROM(uchar Data[],uchar Address,uchar Num)///////////////寫數(shù)據(jù)到ROM中
{
uchar i=0;
uchar *PData;/////指針類
PData=Data;
Start();
Send(0xa0); /////發(fā)送
Ack();/////應(yīng)答
Send(Address); //////發(fā)送數(shù)據(jù)地址
Ack();
for(i=0;i {
Send(*(PData+i));
Ack();
}
Stop();
}
void RdFromROM(uchar Data[],uchar Address,uchar Num)////////從ROM中讀取
{
uchar i=0;
uchar *PData;
PData=Data;
for(i=0;i {
Start();
Send(0xa0);///////////先寫后讀
Ack();
Send(Address+i);
Ack();
Start();
Send(0xa1);
Ack();
*(PData+i)=Read();
SCL=0;
NoAck();
Stop();
}
}
//////////////////////////////////////
void yanse0()
{
switch(color)
{
case 0:
datar=0;
sck=0;
sck=1;
datar=1;
sck=0;
sck=1;
datar=1;
sck=0;
sck=1;
sck=0;
sck=1;
break;
case 1:
datar=1;
sck=0;
sck=1;
datar=0;
sck=0;
sck=1;
datar=1;
sck=0;
sck=1;
sck=0;
sck=1;
break;
case 2:
datar=1;
sck=0;
sck=1;
datar=1;
sck=0;
sck=1;
datar=0;
sck=0;
sck=1;
sck=0;
sck=1;
break;
case 3:
datar=0;
sck=0;
sck=1;
datar=0;
sck=0;
sck=1;
datar=1;
sck=0;
sck=1;
sck=0;
sck=1;
break;
case 4:
datar=0;
sck=0;
sck=1;
datar=1;
sck=0;
sck=1;
datar=0;
sck=0;
sck=1;
sck=0;
sck=1;
break;
case 5:
datar=1;
sck=0;
sck=1;
datar=0;
sck=0;
sck=1;
datar=0;
sck=0;
sck=1;
sck=0;
sck=1;
break;
case 6:
datar=0;
sck=0;
sck=1;
datar=0;
sck=0;
sck=1;
datar=0;
sck=0;
sck=1;
sck=0;
sck=1;
break;
case 7:
datar=1;
sck=0;
sck=1;
datar=1;
sck=0;
sck=1;
datar=1;
sck=0;
sck=1;
sck=0;
sck=1;
break;
default:
break;
}
}
////////////////////////////////////////////////
void comm() interrupt 4 using 3
{
if(RI)
{
RI=0;
if(addr==0)
{
if((address==SBUF)|(SBUF==0XFF))
{
istype=1;
ishui=0;
istime=0;
addr=1;
}
}
else if(istype)//////接收模式數(shù)據(jù)
{
istype=0;
ishui=1;
type=SBUF;
}
else if(ishui) //////接收灰度數(shù)據(jù)
{
ishui=0;
istime=1;
huidu=SBUF;
}
else if(istime)///////接收時間數(shù)據(jù)
{
istime=0;
speeddu=SBUF;
addr=0;
led=1;
input=1;
}
}
else TI=0;
}
////////////////////////////////////////////////
void time0() interrupt 1 using 1
{
timea++;
/////////////scan key board begin//////////////
if((s23==0)&(s230==0)&(s231==0))
{
s230=1;
}
else if((s23==0)&(s230==1)&(s231==0))
{
s230=0;
s231=1;
}
else if((s23==1)&(s230==0)&(s231==1))
{
s231=0;
mode=0;
input=1;
}
//////////////key s22/////////////////////////////
if((s22==0)&(s220==0)&(s221==0))
{
s220=1;
}
else if((s22==0)&(s220==1)&(s221==0))
{
s220=0;
s221=1;
}
else if((s22==1)&(s220==0)&(s221==1))
{
s221=0;
mode=1;
input=1;
}
if((s21==0)&(s210==0)&(s211==0))
{
s210=1;
}
else if((s21==0)&(s210==1)&(s211==0))
{
s210=0;
s211=1;
}
else if((s21==1)&(s210==0)&(s211==1))
{
s211=0;
mode=2;
input=1;
}
////////////////////////////////////////
if((s24==0)&(s240==0)&(s241==0))
{
s240=1;
}
else if((s24==0)&(s240==1)&(s241==0))
{
s240=0;
s241=1;
}
else if((s24==1)&(s240==0)&(s241==1))
{
s241=0;
mode=3;
input=1;
}
/////////////scan key board end/////////////////////////
if(timea>50)
{
waita++;
timeb++;
if(timeb>100)
{
timeb=0;
led=~led;
}
timea=0;
}
liang--;
if(liang>hui) oe=1;
else oe=0;
if(liang==0) liang=50;
TH0 = 0Xfd; //5MS
TL0 = 0x00;
}
/////////////////////////////
main()
{
uchar a,b,c;
TMOD=0x20; //
ET0 = 1; // 允許定時器0中斷
ES=1; //默認(rèn)允許串口中斷
SCON=0X50; //
PCON=0X80; //
TH0 =0Xc0; //5MS
TL0 =0x00; //定時0設(shè)定初值
TH1=0Xfb;
TR0 = 1; //開定時器1
TR1 =1 ; //開定時器1
IT0=1; //外部中斷0為脈沖觸發(fā)方式(下降沿)
EX0=1; //禁 止外部中斷0;
WrToROM( );
RdFromROM(); ////讀取該分控的地址
////address=0x04;
IP =0X10; //串行口為高優(yōu)先級中斷
EA = 1; //開總中斷
input=0;
color=1;
type=0;
speed=50; //分控預(yù)先設(shè)置的默認(rèn)速度
color=2; //分控預(yù)先設(shè)置的顏色
hui=50; //分控預(yù)先設(shè)置的灰度數(shù)
addr=0; ////默認(rèn)的分控是拒絕接受任何數(shù)據(jù)的
///////////////////////////////////////////////
for(;;)
{
ll:
input=0;
//type++;
switch(type)
{
case 0://////0~~6為6種單色
hui=huidu;
speed=speeddu;
color=0;
for(a=0;a<4;a++)
{
yanse0();
}
rck=0;
rck=1;
do{
if(input==1) goto ll;
}
while(waita waita=0;
break;
case 1:
hui=huidu;
speed=speeddu;
color=1;
for(a=0;a<4;a++)
{
yanse0();
}
rck=0;
rck=1;
do{
if(input==1) goto ll;
}
while(waita waita=0;
break;
case 2:
hui=huidu;
speed=speeddu;
color=2;
for(a=0;a<4;a++)
{
yanse0();
}
rck=0;
rck=1;
do{
if(input==1) goto ll;
}
while(waita waita=0;
break;
case 3:
hui=huidu;
speed=speeddu;
color=3;
for(a=0;a<4;a++)
{
yanse0();
}
rck=0;
rck=1;
do{
if(input==1) goto ll;
}
while(waita waita=0;
break;
case 4:
hui=huidu;
speed=speeddu;
color=4;
for(a=0;a<4;a++)
{
yanse0();
}
rck=0;
rck=1;
do{
if(input==1) goto ll;
}
while(waita waita=0;
break;
case 5:
hui=huidu;
speed=speeddu;
color=5;
for(a=0;a<4;a++)
{
yanse0();
}
rck=0;
rck=1;
do{
if(input==1) goto ll;
}
while(waita waita=0;
break;
case 6:
hui=huidu;
speed=speeddu;
color=6;
for(a=0;a<4;a++)
{
yanse0();
}
rck=0;
rck=1;
do{
if(input==1) goto ll;
}
while(waita waita=0;
break;
case 7:
hui=huidu;
speed=speeddu;
color=7;
for(a=0;a<4;a++)
{
yanse0();
}
rck=0;
rck=1;
do{
if(input==1) goto ll;
}
while(waita waita=0;
break;
case 8://漸變
speed=speeddu;
for(a=0;a<7;a++)
{
color=a;
for(b=0;b<4;b++)
{
yanse0();
}
rck=0;
rck=1;
for(c=0;c<50;c++)
{
hui=c;
do{
if(input==1) goto ll;
}
while(waita waita=0;
if(input==1) goto ll;
}
for(c=50;c>0;c--)
{
hui=c;
do{
if(input==1) goto ll;
}
while(waita waita=0;
}
if(input==1) goto ll;
}
break;
default:
break;
}
}
}
這么把程序發(fā)上去好了
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int////內(nèi)部函數(shù)/////
#define hao 0xc0
sbit oe =P2^7;
sbit rck =P2^6;
sbit sck =P2^5;
sbit datar=P2^4;
sbit wog =P3^5;
sbit led =P0^7;
sbit s23 =P0^5;
sbit s22 =P0^4;
sbit s21 =P0^3;
sbit s24 =P0^6;
sbit SDA =P2^1;
sbit SCL =P2^0;//////用到兩個字節(jié),第一個字節(jié)用來放模式,第2個字節(jié)用來放速度///不用也算了////////
bit input=0;
bit power=1;
uchar waita,timea,hui,liang,timeb;
uchar color,color1,mode,speed,speed1;
uchar s220,s221,s230,s231,s210,s211,s240,s241,mode; //key parmerter
bit addr,ishui,istype,istime,iscolor;
uchar huidu,speeddu,colordu,address,type;
uchar code spd[]={8,15,30,60,120,240,240};
uchar code spd1[]={2,5,13,19,28,45,90};
#define AddWr 0xa0 /*器件地址選擇及寫標(biāo)志*/
#define AddRd 0xa1 /*器件地址選擇及讀標(biāo)志*/
////////////////////////////////////////////////
void mDelay(uchar j)
{ uint i;
for(;j>0;j--)
{
for(i=0;i<125;i++)
{;}
}
}
/*發(fā)送起始條件*/
void Start(void) /*起始條件*/
{
SDA=1;
SCL=1;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
SDA=0;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
}
void Stop(void) /*停止條件*/
{
SDA=0;
SCL=1;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
SDA=1;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
}
void Ack(void) /*應(yīng)答位*/
{
SDA=0;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
SCL=1;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
SCL=0;
}
void NoAck(void) /*反向應(yīng)答位*/
{
SDA=1;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
SCL=1;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
SCL=0;
}
void Send(uchar Data) /*發(fā)送數(shù)據(jù)子程序,Data為要求發(fā)送的數(shù)據(jù)*/
{
uchar BitCounter=8; /*位數(shù)控制*/
uchar temp; /*中間變量控制*/
do
{
temp=Data;
SCL=0;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
if((temp&0x80)==0x80)/* 如果最高位是1*///////
SDA=1;
else
SDA=0;
SCL=1;//////////////////////發(fā)送準(zhǔn)備結(jié)束
temp=Data<<1; /*RLC*///////下一個字節(jié)
Data=temp;
BitCounter--;////////////
}while(BitCounter);
SCL=0;//////結(jié)束發(fā)送/////
}
uchar Read(void) /*讀一個字節(jié)的數(shù)據(jù),并返回該字節(jié)值*/
{
uchar temp=0;
uchar temp1=0;
uchar BitCounter=8;
SDA=1;
do{
SCL=0;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
SCL=1;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
if(SDA) /*如果Sda=1;*/
temp=temp|0x01; /*temp的最低位置1*/
else
temp=temp&0xfe; /*否則temp的最低位清0*/
if(BitCounter-1)
{ temp1=temp<<1;
temp=temp1;
}
BitCounter--;
}while(BitCounter);
return(temp);
}
void WrToROM(uchar Data[],uchar Address,uchar Num)///////////////寫數(shù)據(jù)到ROM中
{
uchar i=0;
uchar *PData;/////指針類
PData=Data;
Start();
Send(0xa0); /////發(fā)送
Ack();/////應(yīng)答
Send(Address); //////發(fā)送數(shù)據(jù)地址
Ack();
for(i=0;i
Send(*(PData+i));
Ack();
}
Stop();
}
void RdFromROM(uchar Data[],uchar Address,uchar Num)////////從ROM中讀取
{
uchar i=0;
uchar *PData;
PData=Data;
for(i=0;i
Start();
Send(0xa0);///////////先寫后讀
Ack();
Send(Address+i);
Ack();
Start();
Send(0xa1);
Ack();
*(PData+i)=Read();
SCL=0;
NoAck();
Stop();
}
}
//////////////////////////////////////
void yanse0()
{
switch(color)
{
case 0:
datar=0;
sck=0;
sck=1;
datar=1;
sck=0;
sck=1;
datar=1;
sck=0;
sck=1;
sck=0;
sck=1;
break;
case 1:
datar=1;
sck=0;
sck=1;
datar=0;
sck=0;
sck=1;
datar=1;
sck=0;
sck=1;
sck=0;
sck=1;
break;
case 2:
datar=1;
sck=0;
sck=1;
datar=1;
sck=0;
sck=1;
datar=0;
sck=0;
sck=1;
sck=0;
sck=1;
break;
case 3:
datar=0;
sck=0;
sck=1;
datar=0;
sck=0;
sck=1;
datar=1;
sck=0;
sck=1;
sck=0;
sck=1;
break;
case 4:
datar=0;
sck=0;
sck=1;
datar=1;
sck=0;
sck=1;
datar=0;
sck=0;
sck=1;
sck=0;
sck=1;
break;
case 5:
datar=1;
sck=0;
sck=1;
datar=0;
sck=0;
sck=1;
datar=0;
sck=0;
sck=1;
sck=0;
sck=1;
break;
case 6:
datar=0;
sck=0;
sck=1;
datar=0;
sck=0;
sck=1;
datar=0;
sck=0;
sck=1;
sck=0;
sck=1;
break;
case 7:
datar=1;
sck=0;
sck=1;
datar=1;
sck=0;
sck=1;
datar=1;
sck=0;
sck=1;
sck=0;
sck=1;
break;
default:
break;
}
}
////////////////////////////////////////////////
void comm() interrupt 4 using 3
{
if(RI)
{
RI=0;
if(addr==0)
{
if((address==SBUF)|(SBUF==0XFF))
{
istype=1;
ishui=0;
istime=0;
addr=1;
}
}
else if(istype)//////接收模式數(shù)據(jù)
{
istype=0;
ishui=1;
type=SBUF;
}
else if(ishui) //////接收灰度數(shù)據(jù)
{
ishui=0;
istime=1;
huidu=SBUF;
}
else if(istime)///////接收時間數(shù)據(jù)
{
istime=0;
speeddu=SBUF;
addr=0;
led=1;
input=1;
}
}
else TI=0;
}
////////////////////////////////////////////////
void time0() interrupt 1 using 1
{
timea++;
/////////////scan key board begin//////////////
if((s23==0)&(s230==0)&(s231==0))
{
s230=1;
}
else if((s23==0)&(s230==1)&(s231==0))
{
s230=0;
s231=1;
}
else if((s23==1)&(s230==0)&(s231==1))
{
s231=0;
mode=0;
input=1;
}
//////////////key s22/////////////////////////////
if((s22==0)&(s220==0)&(s221==0))
{
s220=1;
}
else if((s22==0)&(s220==1)&(s221==0))
{
s220=0;
s221=1;
}
else if((s22==1)&(s220==0)&(s221==1))
{
s221=0;
mode=1;
input=1;
}
if((s21==0)&(s210==0)&(s211==0))
{
s210=1;
}
else if((s21==0)&(s210==1)&(s211==0))
{
s210=0;
s211=1;
}
else if((s21==1)&(s210==0)&(s211==1))
{
s211=0;
mode=2;
input=1;
}
////////////////////////////////////////
if((s24==0)&(s240==0)&(s241==0))
{
s240=1;
}
else if((s24==0)&(s240==1)&(s241==0))
{
s240=0;
s241=1;
}
else if((s24==1)&(s240==0)&(s241==1))
{
s241=0;
mode=3;
input=1;
}
/////////////scan key board end/////////////////////////
if(timea>50)
{
waita++;
timeb++;
if(timeb>100)
{
timeb=0;
led=~led;
}
timea=0;
}
liang--;
if(liang>hui) oe=1;
else oe=0;
if(liang==0) liang=50;
TH0 = 0Xfd; //5MS
TL0 = 0x00;
}
/////////////////////////////
main()
{
uchar a,b,c;
TMOD=0x20; //
ET0 = 1; // 允許定時器0中斷
ES=1; //默認(rèn)允許串口中斷
SCON=0X50; //
PCON=0X80; //
TH0 =0Xc0; //5MS
TL0 =0x00; //定時0設(shè)定初值
TH1=0Xfb;
TR0 = 1; //開定時器1
TR1 =1 ; //開定時器1
IT0=1; //外部中斷0為脈沖觸發(fā)方式(下降沿)
EX0=1; //禁 止外部中斷0;
WrToROM( );
RdFromROM(); ////讀取該分控的地址
////address=0x04;
IP =0X10; //串行口為高優(yōu)先級中斷
EA = 1; //開總中斷
input=0;
color=1;
type=0;
speed=50; //分控預(yù)先設(shè)置的默認(rèn)速度
color=2; //分控預(yù)先設(shè)置的顏色
hui=50; //分控預(yù)先設(shè)置的灰度數(shù)
addr=0; ////默認(rèn)的分控是拒絕接受任何數(shù)據(jù)的
///////////////////////////////////////////////
for(;;)
{
ll:
input=0;
//type++;
switch(type)
{
case 0://////0~~6為6種單色
hui=huidu;
speed=speeddu;
color=0;
for(a=0;a<4;a++)
{
yanse0();
}
rck=0;
rck=1;
do{
if(input==1) goto ll;
}
while(waita
break;
case 1:
hui=huidu;
speed=speeddu;
color=1;
for(a=0;a<4;a++)
{
yanse0();
}
rck=0;
rck=1;
do{
if(input==1) goto ll;
}
while(waita
break;
case 2:
hui=huidu;
speed=speeddu;
color=2;
for(a=0;a<4;a++)
{
yanse0();
}
rck=0;
rck=1;
do{
if(input==1) goto ll;
}
while(waita
break;
case 3:
hui=huidu;
speed=speeddu;
color=3;
for(a=0;a<4;a++)
{
yanse0();
}
rck=0;
rck=1;
do{
if(input==1) goto ll;
}
while(waita
break;
case 4:
hui=huidu;
speed=speeddu;
color=4;
for(a=0;a<4;a++)
{
yanse0();
}
rck=0;
rck=1;
do{
if(input==1) goto ll;
}
while(waita
break;
case 5:
hui=huidu;
speed=speeddu;
color=5;
for(a=0;a<4;a++)
{
yanse0();
}
rck=0;
rck=1;
do{
if(input==1) goto ll;
}
while(waita
break;
case 6:
hui=huidu;
speed=speeddu;
color=6;
for(a=0;a<4;a++)
{
yanse0();
}
rck=0;
rck=1;
do{
if(input==1) goto ll;
}
while(waita
break;
case 7:
hui=huidu;
speed=speeddu;
color=7;
for(a=0;a<4;a++)
{
yanse0();
}
rck=0;
rck=1;
do{
if(input==1) goto ll;
}
while(waita
break;
case 8://漸變
speed=speeddu;
for(a=0;a<7;a++)
{
color=a;
for(b=0;b<4;b++)
{
yanse0();
}
rck=0;
rck=1;
for(c=0;c<50;c++)
{
hui=c;
do{
if(input==1) goto ll;
}
while(waita
if(input==1) goto ll;
}
for(c=50;c>0;c--)
{
hui=c;
do{
if(input==1) goto ll;
}
while(waita
}
if(input==1) goto ll;
}
break;
default:
break;
}
}
}
0
回復(fù)
@zhongyuqiang
不知道怎么回事,老上傳不了這么把程序發(fā)上去好了#include#include///////調(diào)用絕對地址訪問函數(shù)////#include///////#defineucharunsignedchar#defineuint unsignedint////內(nèi)部函數(shù)/////#definehao0xc0sbit oe =P2^7;sbit rck =P2^6;sbit sck =P2^5;sbit datar=P2^4;sbit wog =P3^5;sbit led =P0^7;sbit s23 =P0^5;sbit s22 =P0^4;sbit s21 =P0^3;sbit s24 =P0^6;sbit SDA =P2^1;sbit SCL =P2^0;//////用到兩個字節(jié),第一個字節(jié)用來放模式,第2個字節(jié)用來放速度///不用也算了////////bitinput=0;bitpower=1;ucharwaita,timea,hui,liang,timeb;ucharcolor,color1,mode,speed,speed1;uchars220,s221,s230,s231,s210,s211,s240,s241,mode;//keyparmerterbitaddr,ishui,istype,istime,iscolor;ucharhuidu,speeddu,colordu,address,type;uchar code spd[]={8,15,30,60,120,240,240};uchar code spd1[]={2,5,13,19,28,45,90};#defineAddWr0xa0/*器件地址選擇及寫標(biāo)志*/#defineAddRd0xa1/*器件地址選擇及讀標(biāo)志*/////////////////////////////////////////////////voidmDelay(ucharj){uinti;for(;j>0;j--){for(i=0;i
希望大家見涼
0
回復(fù)