man1234567 发表于 2019-12-25 07:35 #include<reg51.h> unsigned char code table1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//轮流点亮 unsigned char code table2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};//逐个点亮 unsigned char code table3[]={0x00}; unsigned char code table4[]={0x55,0xaa}; //间隔点亮 unsigned char xs[]; sbit S0=P1^0; sbit S1=P1^1; sbit S2=P1^2; sbit S4=P1^3; sbit S5=P1^4; sbit S6=P1^5; sbit S7=P1^6; sbit P11 =P3^2; unsigned char a=3; unsigned char x=0; unsigned char y=0; int i,j,k; void panduan(); void delay_t1(unsigned char n); void delay_t2(unsigned char n); void chufa() interrupt 0 { if(S5==0) a=0; if(S6==0) a=1; if(S7==0) a=2; P0=0XFF; P2=0XFF; x=8; y=8; } void panduan(){ S4=(S0 & S1 & S2); P11=S4; S5=S0; S6=S1; S7=S2; } void main() { EA=1; EX0=1; IT0=0; PX0=1; a=0; P11=0; while(1) { while(a==0) { x=0; y=0; for(;x<8;x++) { P2=~0x01; P0=table1[x]; delay_t1(2); } for(;y<8;y++) { P2=~0x02; P0=table1[y]; delay_t1(2); } P0=0xff; P2=0xff; } while(a==1) { x=0; y=0; for(;x<8;x++) { P2=~0X01; P0=table2[x]; delay_t1(2); } for(;y<8;y++) { for(x=0;x<8;x++) { P2=~0X02; P0=table2[y]; delay_t2(1); P2=~0x01; P0=0xff; delay_t2(1); } P0=0xff; P2=0xff; delay_t2(2); } while(a==2) { x=0;y=0; for(x=0;x<8;x++) { P2=~0x01; P0=table4[0]; delay_t2(1); P2=~0x02; P0=table4[0]; delay_t2(1); } for(;y<8;y++) { // delay_t1(2); P2=~0x01; P0=table4[1]; delay_t2(1); P2=~0x02; P0=table4[1]; delay_t2(1); } } void delay1_0ms() { for(j=0;j<20;j++) { TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; while(1) { if(TF0==1){ TF0=0; break; } } } } void delay2_0ms() { for(j=0;j<2;j++) { TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; while(1) { if(TF0==1){ TF0=0; break; } } } } void delay_t2(unsigned char n) { for(k=0;k<n;k++){ delay2_0ms(); } panduan(); } void delay_t1(unsigned char n) { for(k=0;k<n;k++){ delay1_0ms(); } panduan(); } |
mffhxa 发表于 2019-12-25 09:01 上面是完整代码,大神可以看看怎样修改吗? |
moluxiyan 发表于 2019-12-25 08:48 #include<reg51.h> unsigned char code table1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//轮流点亮 unsigned char code table2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};//逐个点亮 unsigned char code table3[]={0x00}; unsigned char code table4[]={0x55,0xaa}; //间隔点亮 unsigned char xs[]; sbit S0=P1^0; sbit S1=P1^1; sbit S2=P1^2; sbit S4=P1^3; sbit S5=P1^4; sbit S6=P1^5; sbit S7=P1^6; sbit P11 =P3^2; unsigned char a=3; unsigned char x=0; unsigned char y=0; int i,j,k; void panduan(); void delay_t1(unsigned char n); void delay_t2(unsigned char n); void chufa() interrupt 0 { if(S5==0) a=0; if(S6==0) a=1; if(S7==0) a=2; P0=0XFF; P2=0XFF; x=8; y=8; } void panduan(){ S4=(S0 & S1 & S2); P11=S4; S5=S0; S6=S1; S7=S2; } void main() { EA=1; EX0=1; IT0=0; PX0=1; a=0; P11=0; while(1) { while(a==0) { x=0; y=0; for(;x<8;x++) { P2=~0x01; P0=table1[x]; delay_t1(2); } for(;y<8;y++) { P2=~0x02; P0=table1[y]; delay_t1(2); } P0=0xff; P2=0xff; } while(a==1) { x=0; y=0; for(;x<8;x++) { P2=~0X01; P0=table2[x]; delay_t1(2); } for(;y<8;y++) { for(x=0;x<8;x++) { P2=~0X02; P0=table2[y]; delay_t2(1); P2=~0x01; P0=0xff; delay_t2(1); } P0=0xff; P2=0xff; delay_t2(2); } while(a==2) { x=0;y=0; for(x=0;x<8;x++) { P2=~0x01; P0=table4[0]; delay_t2(1); P2=~0x02; P0=table4[0]; delay_t2(1); } for(;y<8;y++) { // delay_t1(2); P2=~0x01; P0=table4[1]; delay_t2(1); P2=~0x02; P0=table4[1]; delay_t2(1); } } void delay1_0ms() { for(j=0;j<20;j++) { TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; while(1) { if(TF0==1){ TF0=0; break; } } } } void delay2_0ms() { for(j=0;j<2;j++) { TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; while(1) { if(TF0==1){ TF0=0; break; } } } } void delay_t2(unsigned char n) { for(k=0;k<n;k++){ delay2_0ms(); } panduan(); } void delay_t1(unsigned char n) { for(k=0;k<n;k++){ delay1_0ms(); } panduan(); } |
man1234567 发表于 2019-12-25 07:35 应该怎样改呢?大神可以发下修改后的程序给我吗? |
HC6800-ES-V2.0 发表于 2019-12-25 08:14 那应该怎么改?或者可以发个修改后的程序吗?求大神指导,挺急的 |
你这个程序的变量i,j,k是0——255范围用的。而定义的范围是-128——127的范围,所以不匹配。 把int i,j,k;改为unsigned int i,j,k;就可以了。 |
双击错误,定位到出错的行上,这么一堆,谁知道错在哪,而且程序还不全 |
错误太小了。就是你的函数最后差两个}而已,你这样写程序,出这样的错是迟早的。 |
疑似void delay1_0ms()函数少了 } |