单片机程序有两处错误求好心的大神帮忙看看,学校实训救急!!

发布时间:2019-08-08 13:13:12

#defineuintunsigned int

#defineucharunsigned char

uchar code table0[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//LED从低位往高位移

uchar code table1[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//LED从高位往低位移

uchar code table2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};//LED从1个亮到8个都点亮(从低位往高位)

uchar code table3[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};//LED从1个亮到8个都点亮(从高位往低位)

uchar code table4[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//LED从8个全亮到一个都不亮(从低位往高位)

uchar code table5[]={0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};//LED从8个全亮到一个都不亮(从高位往低位)

uchar code table6[]={0x01,0x03,0x05,0x09,0x11,0x21,0x41,0x81};//LED从低位往高位移(最低位始终为0)

uchar code table7[]={0x80,0xc0,0xa0,0x90,0x88,0x84,0x82,0x81};//LED从高位往低位移(最高位始终为0)

uchar i,j;//定义循环变量

uint tt=70;//定义时间指数

void delay(uint time)//延时函数

{

uint x,y;

for(x=time;x>0;x--)

for(y=110;y>0;y--);

}

void disp0()//状态0 所有LED闪烁3次

{

for(i=0;i<3;i++)

{

P0=0xff; P2=0xff; P3=0xff; P1=0xff;

delay(300);

P0=0x00; P2=0x00; P3=0x00; P1=0x00;

delay(300);

}

}

void disp1()//状态1 LED顺时针转一圈

{

for(i=0;i<8;i++)

{

P2=table1[i];

delay(100);

}

P2=0x00;

for(i=0;i<8;i++)

{

P3=table1[i];

delay(100);

}

P3=0x00;

for(i=0;i<8;i++)

{

P1=table1[i];        

delay(100);

}

P1=0x00;

for(i=0;i<8;i++)

{

P0=table0[i];

delay(100);

}

P0=0x00;

}

void disp2()//状态2 LED逆时针转一圈

{

for(i=0;i<8;i++)

{

P0=table1[i];

delay(100);

}

P0=0x00;

for(i=0;i<8;i++)

{

P1=table0[i];

delay(100);

}

P1=0x00;

for(i=0;i<8;i++)

{

P3=table0[i];

delay(100);

}

P3=0x00;

for(i=0;i<8;i++)

{

P2=table0[i];

delay(100);

}

P2=0x00;

}

void disp3()//状态3 4个LED同时顺时、逆时针移动1/4圈

{

for(i=0;i<8;i++)

{

P0=table1[i];

P1=table1[i];

P2=table1[i];

P3=table0[i];

delay(100);

}

for(i=0;i<8;i++)

{

P0=table0[i];

P1=table0[i];

P2=table0[i];

P3=table1[i];

delay(100);

}

P3=0x00; P0=0x00; 

}

void disp4()//状态4  2个LED同时顺时针移动半圈

{

for(i=0;i<8;i++)

{

P2=table1[i];

P1=table1[i];

delay(100);

}

P2=0x00; P1=0x00;

for(i=0;i<8;i++)

{

P3=table1[i];

P0=table0[i];

delay(100);

}

P3=0x00; P0=0x00;

}

void disp5()//状态5  2个LED同时逆时针移动半圈

{

for(i=0;i<8;i++)

{

P0=table1[i];

P3=table0[i];

delay(100);

}

P0=0x00; P3=0x00;

for(i=0;i<8;i++)

{

P1=table0[i];

P2=table0[i];

delay(100);

}

P1=0x00; P2=0x00;

}

void disp6()//状态6 LED自上而下逐渐点亮(一半点亮一半不亮)

{

for(i=0;i<8;i++)

{

P0=table3[i];

P2=table3[i];

delay(100);

}

P0=0x00; P2=0x00;

for(i=0;i<8;i++)

{

P1=table2[i];

P3=table3[i];

delay(100);

}

P1=0x00; P3=0x00;

}

void disp7()//状态7 LED自下而上逐渐点亮(直到全部点亮)

{

for(i=0;i<8;i++)

{

P1=table3[i];

P3=table2[i];

delay(100);

}

for(i=0;i<8;i++)

{

P0=table2[i];

P2=table2[i];

delay(100);

}

}

void main()

{

P0=0x00;P1=0x00;P2=0x00;;

此处错误Serial_Init();

delay(1000);   

此处错误Uart_SendCMD(0x17,0,0x01);

while(1)

{

disp0();//状态0 所有LED闪烁3次

disp1();//状态1 LED顺时针转一圈

disp2();//状态2 LED逆时针转一圈

disp3();//状态3 4个LED同时顺时、逆时针移动1/4圈

disp4();//状态4  2个LED同时顺时针移动半圈

disp5();//状态5  2个LED同时逆时针移动半圈

disp6();//状态6 LED自上而下逐渐点亮(一半点亮一半不亮)

disp7();//状态7 LED自下而上逐渐点亮(直到全部点亮)

}

}

void Usrat() interrupt 4

{

TI=0;

}


推荐回答

你的程序不完整,头上少函数定义(且你上传的程序本身少空格)

头上要这样

#include <reg51.h>#define uint unsigned int#define uchar unsigned charvoid Serial_Init();void Uart_SendCMD(uchar,uchar,uchar); //这个参数是我猜的

//后面是你的uchar code。。。程序

但你的Serial_Init函数及Uart_SendCMD要有定义的(在项目的其它文件中也可以)

以上问题属网友观点,不代表本站立场,仅供参考!