51单片机问题之路

第一个问题  昨天晚上调试了程序,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;

}

消影

程序的调试有错误怎么办?


 说明有“:”分号错误

经过查找发现是没有等号的原故。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容