第一个问题 昨天晚上调试了程序,for语句的时间是没变化的,
for(a=5000;a>0;a--)
for(b=c;b>0;b--);
不管是把c放在第一个for中还是放在循环体中,时间都是一样的。
第二个问题是关于位定位的问题,一般要给一个位变量来接收一个位口,例如 sbit wela=P2^7;这样才可以。
第三个问题就是调试的时候容易出错误,要考虑变量名和空间的大小,我昨晚出错就是没有把声名函数后面加一个“;”,最主要的是要学会看调试提示,这样就是解决问题就会快很多。下次把出错的内容翻译一下。
昨天刚把消影给学会了,可管与管之间的问题怎么解决!这中间有消影没?实事上没有!单独一个管的段选和位选是要消影,这个消的是不让其它管子有闪亮。等到把外部除影玩再除去内部的。
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar ms,a,b,ccc,aa=0;ff,c;
uint zi;
void desplay(uchar bai,uchar shi,uchar ge );
void delay(uchar ms);
void init();
void main()
{
init();
while(1)
{
desplay(ccc,ff,c);
}
}
void desplay(uchar bai,uchar shi,uchar ge)
{
wela=1;
P0=0xff;
wela=0;
dula=1;
P0=table[bai];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(10);
wela=1;
P0=0xff;
wela=0;
dula=1;
P0=table[shi];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(10);
wela=1;
P0=0xff;
wela=0;
dula=1;
P0=table[ge];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(10);
}
void delay(uchar ms)
{
for(a=ms;a>0;a--)
for(b=110;b>0;b--);
}
void init()
{
/*TMOD=0x01;
EA=1;
ET0=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;*/
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
if(aa==1000)
aa=0;
ccc=aa/100;
ff=aa%100/10;
c=aa%10;
}
消影
程序的调试有错误怎么办?

经过查找发现是没有等号的原故。
网友评论