修改代码 望各位大神指点

作业1: PC机通过串口发送命令给单片机,单片机收到字符1循环跑马,收到字符2发送自己的名字到PC机,收到字符3采集光照电压到PC机

 

#include "iocc2530.h"

#include <string.h>

 

#define LED1 P1_0 // LED1端口宏定义

#define LED2 P1_3 // LED2端口宏定义  

#define LED3 P1_4 // LED3端口宏定义

#define LED4 P1_5 // LED4端口宏定义

 

#define uchar unsigned char

uchar c;

uchar i=0;

 

void init_UART() //串口初始化

{

  CLKCONCMD &= 0x80; //晶振32MHz

  

  PERCFG=0x00; 

  P0SEL |=0X3C;

  U0CSR |= 0x80; //UART方式

  U0BAUD=216;

  U0GCR=10;

  U0UCR|=0X80;

  URX0IF=0; //打开接收器,必须要先配置好串口,才能打开接收器

  U0CSR|=0x40;

  IEN0 |=0x84;

  EA=1;

}

 

void init_light()

{

  P1SEL&=~0X39;//0001 1011

  P1DIR|=0X39;

  

  LED1=0;

  LED2=0;  

  LED3=0;

  LED4=0;

}

/****************************************************************

*函数功能 :串口发送字符串函数     

*入口参数 : data:数据         

* len :数据长度       

*返 回 值 :无           

*说 明 :    

****************************************************************/

void UartTX_Send_String(char *Data,int len)

{

  int j;

  for(j=0;j<len;j++)

  {

    U0DBUF = *Data++;

    while(UTX0IF == 0);

    UTX0IF = 0;

  }

}

 

#pragma vector = URX0_VECTOR

__interrupt void UART0_ISR(void)

{

  URX0IF = 0; //清中断标志

  c = U0DBUF;    

  i=1;

}

 

 

 

void main()

{

  init_light();

  init_UART();

  //接受单个字

  while(1)

  {

    if(i==1)

    {

      i=0;

      if(c=='1')     

      {

        LED1=1;

        LED2=LED3=LED4=0;

        UartTX_Send_String("\nLED1 has been turn on!\n",25);

        

      }

      

      else if(c=='2')

      {

        LED2=1;

        LED1=LED3=LED4=0;

        UartTX_Send_String("\nLED2 has been turn on!\n",25);

      }

      

      else if(c=='3')

      {

        LED3=1;

        LED1=LED2=LED4=0;

        UartTX_Send_String("\nLED3 has been turn on!\n",25);

        

      }

      

      else if(c=='4')

      {

        LED4=1;

        LED1=LED2=LED3=0;

        UartTX_Send_String("\nLED4 has been turn on!\n",25);

      }

      

      c=(uchar)NULL;

    }

  }

}

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。

​​​​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。