楼主数组定义错误。数组成员只能是常量,不可以是变量或表达式。ROM中定义的数组不可更改,RAM中定义的数组才可以更改。串口只发不收不需要开接收中断。1T的MCU延时程序要修正参数。程序修改如下:
- #include <STC15F2K60S2.H>
- #define uchar unsigned char
- #define uint unsigned int
- sbit key1=P3^2;
- sbit key2=P3^3;
- uchar a,i,flag1,r_cut,cs;
- //uchar code red[6]={0xc5,0xaa,0xa4,&r_cut,0x01,&cs};
- uchar data red[6]={0xc5,0xaa,0xa4,0x00,0x01,0x00};
- void delay(uint);
- void init()
- {
- PCON &= 0x7F;
- SCON = 0x50;
- AUXR |= 0xC0;
- AUXR &= 0xFE;
- TMOD=0X22;
- TH1=0xB8;
- TL1=0xB8;
- TR1=1;
- // ET1=0;
- // EA=1;
- // ES=1;
- P_SW1=0X40; //P3.6,P3.7
- P3M0=0X00;
- P3M1=0X00;
- r_cut=0x0f;
- a=10;
- }
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=1150;y>0;y--);//1T/y=1150,12T/y=110
- }
- void scankey()
- {
- if(key1==0)
- {
- delay(10);
- if(key1==0)
- {
- a++;
- r_cut=a;
- red[3]=r_cut;
- cs=(0xc5+0xaa+0xa4+r_cut+0x01)&0xff;
- red[5]=cs;
- // ES=0;
- for(i=0;i<6;i++)
- {
- SBUF=red[i];
- while(!TI);
- TI=0;
- //flag1=0;
- }
- // ES=1;
- while(!key1);
- }
- }
- if(key2==0)
- {
- delay(10);
- if(key2==0)
- {
- a--;
- r_cut=a;
- red[3]=r_cut;
- cs=(0xc5+0xaa+0xa4+r_cut+0x01)&0xff;
- red[5]=cs;
- // ES=0;
- for(i=0;i<6;i++)
- {
- SBUF=red[i];
- while(!TI);
- TI=0;
- }
- // ES=1;
- while(!key2);
- }
- }
- }
- void main()
- {
- init();
- while(1)
- {
- scankey();
- }
- }
- /*
- void ser() interrupt 4
- {
- if (RI)
- {
- RI=0;
- }
- else TI=0;
- }*/
复制代码
|