更新时间2021-07-11 09:18:25
#include "reg52.h"//#include "intrins.h"#define uchar unsigned char#define uint unsigned sbit IN=P1^0; //红外接收sbit CNTROL=P1^1;const uchar tab1[]={0x18,0x00,0x18,0x00,0x08,0x20,0xF8,0x3F,0xF8,0x3F,0x08,0x20,0x18,0x00,0x18,0x00,/*"T",0*/0x08,0x20,0xF8,0x3F,0xF8,0x3F,0x88,0x20,0x88,0x20,0xF8,0x31,0x70,0x1F,0x00,0x0E,/*"I",1*/0x10,0x04,0x10,0x07,0xD0,0x03,0xFF,0xFF,0xFF,0xFF,0xD0,0x04,0x94,0x06,0x04,0x03,0x84,0x01,0xE4,0xFF,0xFC,0xFF,0x9C,0x00,0x84,0x01,0x04,0x07,0x04,0x06,0x04,0x00,/*"杯",2*/};const uchar tab2[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f}; // 同心圆/***************************************************************************延时函数***************************************************************************/void delay(uint k){ //延时k*1msuint m,n,b;for(m=0;m<k;m++){ b=0;for(n=0;n<120;n++)b=1; } }/***************************************************************************TI杯函数***************************************************************************/void TIT(tab1){ uchar j,i,q=0; while(1){ //等待标志杆到了开始显示IN=1;if(IN==0){IN=1;break; } }while (1) //循环滚屏显示TI杯{ P0=0xff; P2=0xff; for (i=0;i<20;i++) { for(j=q;IN==1;j++) { if(q==7){P2=tab1[j%64];delay(20);}else{P0=tab1[j%64];delay(20);} }} } if(CNTROL!=1); break; //功能键下不是1跳出函数q=q+2; //显示下一屏内容 }/***************************************************************************同心圆函数***************************************************************************/void circle(tab2){ uchar j,i,q=0; while(1) { // 等待标志杆到来开始显示同心圆IN=1;if(IN==0){IN=1;break; }} while (1){ P0=0xff; P2=0xff; for (i=0;i<20;i++) { for(j=q;IN==1;j++) //外层起显示一圈同心圆{ if(q==7){ P0=tab2[j/16]; delay(20); } else { P2=tab2[j/16]; delay(20);} } } } if(CNTROL!=0) ; break; q=q+1; } void main (void ){ uchar i;{ for (i=0;i<16;i++) {if (i!=7) P2=tab2[i]; else P1=tab2[i]; } while(1) {switch(CNTROL){case 0 :circle(tab2 ) ; break; // 显示TI杯 case 1 : TIT(tab1) ; break; // 显示同心圆default : break;}} }}编译LED.C(58): error C216: subscript on non-array or too many dimensionsLED.C(69): error C171: 'break': missing enclosing loopLED.C(109): error C171: 'break': missing enclosing loop
改好可以编译通过的程序如下。不作解释了,因为单片机的程序你必须自己理解及配置相应的硬件才能运行的,参考别人的程序基本没意义。
#include "reg52.h" //#include "intrins.h" #define uchar unsigned char #define uint unsigned sbit IN=P1^0; //红外接收 sbit CNTROL=P1^1; const uchar tab1[]= { 0x18,0x00,0x18,0x00,0x08,0x20,0xF8,0x3F,0xF8,0x3F,0x08,0x20,0x18,0x00,0x18,0x00, /*"T",0*/ 0x08,0x20,0xF8,0x3F,0xF8,0x3F,0x88,0x20,0x88,0x20,0xF8,0x31,0x70,0x1F,0x00,0x0E, /*"I",1*/ 0x10,0x04,0x10,0x07,0xD0,0x03,0xFF,0xFF,0xFF,0xFF,0xD0,0x04,0x94,0x06,0x04,0x03, 0x84,0x01,0xE4,0xFF,0xFC,0xFF,0x9C,0x00,0x84,0x01,0x04,0x07,0x04,0x06,0x04,0x00, /*"杯",2*/ }; const uchar tab2[]= { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f }; // 同心圆 /*************************************************************************** 延时函数 ***************************************************************************/ void delay(uint k) { //延时k*1ms uint m,n,b; for(m=0; m<k; m++) { b=0; for(n=0; n<120; n++) b=1; } } /*************************************************************************** TI杯函数 ***************************************************************************/ void TIT() { uchar j,i,q=0; while(1) { //等待标志杆到了开始显示 IN=1; if(IN==0) { IN=1; break; } } while (1) //循环滚屏显示TI杯 { P0=0xff; P2=0xff; for (i=0; i<20; i++) { for(j=q; IN==1; j++) { if(q==7) { P2=tab1[j%64]; delay(20); } else { P0=tab1[j%64]; delay(20); } } } if(CNTROL!=1) break; //功能键下不是1跳出函数 } q=q+2; //显示下一屏内容 } /*************************************************************************** 同心圆函数 ***************************************************************************/ void circle() { uchar j,i,q=0; while(1) { // 等待标志杆到来开始显示同心圆 IN=1; if(IN==0) { IN=1; break; } } while (1) { P0=0xff; P2=0xff; for (i=0; i<20; i++) { for(j=q; IN==1; j++) //外层起显示一圈同心圆 { if(q==7) { P0=tab2[j/16]; delay(20); } else { P2=tab2[j/16]; delay(20); } } } if(CNTROL!=0) break; } q=q+1; } void main (void ) { uchar i; { for (i=0; i<16; i++) { if (i!=7) P2=tab2[i]; else P1=tab2[i]; } while(1) { switch((int)CNTROL) { case 0 : circle() ; break; // 显示TI杯 case 1 : TIT() ; break; // 显示同心圆 default : break; } } } }