| 对初学者来说,程序没有好次,能跑对就是成功。楼主既然在开发板上弄对了,那就是对了,好不好是另外的话。NE5532 发表于 2012-6-26 22:28
 刚醒来的时候突然想把程序的左移方式改下,由原来的F出现后重新显示0~7,改为循环显示,即出现8~F的下一状态为9~F~0,仅仅改了几个变量就OK了,修改的地方加了红色
 #include<reg52.h>
 #include<intrins.h>
 #define uchar unsigned char
 #define uint unsigned int
 uchar code seg[]={
 0xc0,0xf9,0xa4,0xb0,
 0x99,0x92,0x82,0xf8,
 0x80,0x90,0x88,0x83,
 0xc6,0xa1,0x86,0x8e};  //数码管段码
 void delay(uchar x)  //延时程序
 {
 uchar a,b;
 for(a=x;a>0;a--)
 for(b=100;b>0;b--);
 }
 void main()      //主程序
 {
 uchar c,d=0x7f,e,i,il;  //c:数码管段选偏移量;d:数码管位选变量;e:数码管段码地址变量
 while(1)
 {
 for(il=100;il>0;il--)
 {
 e=c;
 for(i=8;i>0;i--)
 {
 P0=0xff;    //段码清零,防止数码管出现余辉
 P2=d;   //选位
 P0=seg[e];  //调用段码表
 delay(10);    //延时
 e++;    //段码加1
 if(e==c+8)   //是否最后一个数码管
 {e=c;}
 if(e==16)
 e=0;    //重新装载段码地址变量
 d=_cror_(d,1); //位选变量右移一位
 }
 }
 c++;
 if(c>15)
 c=0;
 }
 }
 |