中断器控制蜂鸣器,用温度变化控制LED灯

这是beep.c代码
#include "beep.h"

void BEEP_Init(void)
{
P2DIR |= 0x01; //0000 0001
BEEP=0;//默认不响
}
这是main.c代码
unsigned char ch1[]="Temp:";
unsigned char ch2[]=" RH:";
unsigned char Temp[5];//初始值
unsigned char Rh[5];//初始值

unsigned int TempS;//温度
unsigned int HumiS;//湿度
//读温湿度指令
cmd[0]=0x01;//地址
cmd[1]=0x03;//03
cmd[2]=0x02;//02
cmd[3]=0x00;//00
cmd[4]=0x00;//00
cmd[5]=0x02;//02
cmd[6]=0xC5;//CRCH C5
cmd[7]=0xB3;//CRCL B3
LED_Init(); //调用初始化函数
BEEP_Init();
InitUart();//波特率9600
OLED_Init();
OLED_Fill(0xff); //屏全亮
delay_ms(2000);
OLED_Fill(0x00); //屏全灭
delay_ms(20);

OLED_Clear();

OLED_PutString_8X16(20,2,ch1);
OLED_PutString_8X16(20,4,ch2);
delay_ms(400);
U0CSR &= ~0x40; //禁止接收
Uart_Send_String(cmd,8); //发送已记录的字符串。
delay_ms(4);
U0CSR |= 0x40; //允许接收
while(1)
{
if(RXTXflag == 1) //发送状态
{

    /****Rxdata[3]  Rxdata[4]保存的温度******/
    /*********Rxdata[5] Rxdata[6]保存的湿度***********/
    TempS=Rxdata[3]*256+(Rxdata[4]>>4)*16+(Rxdata[4] & 0x0F);//总温度
    HumiS=Rxdata[5]*256+(Rxdata[6]>>4)*16+(Rxdata[6] & 0x0F);//总湿度
    //TempS=TempS*2;
    //TempS=685;
    //转换温度
    TempS=TempS-400;
    //TempS=251;
    Temp[0]=TempS/100+48;//十位
    TempS=TempS%100;
    Temp[1]=TempS/10+48;//个位
    Temp[2]='.';//小数点
    Temp[3]=TempS%10+0x30;//十分位
    Temp[4]='\0';
    
    //转换湿度
    Rh[0]=HumiS/100+48;//十位
    HumiS=HumiS%100;
    Rh[1]=HumiS/10+48;//个位
    Rh[2]='.';//小数点
    Rh[3]=(unsigned char)HumiS%10+0x30;//十分位
    Rh[4]='\0';
    
    
   //OLED_Clear();
   //delay_ms(1);
   //OLED_PutString_8X16(20,2,ch1);   
   //OLED_PutString_8X16(20,4,ch2);
   OLED_PutString_8X16(70,2,Temp); 
   OLED_PutString_8X16(70,4,Rh); //4
   delay_ms(500);
   U0CSR &= ~0x40;      //禁止接收 
   Uart_Send_String(cmd,8); //发送已记录的字符串。
   U0CSR |= 0x40;      //允许接收 

   RXTXflag = 0;       // 恢复到接收状态 
   datanumber = 0;     //指针归0 
  }    

}
}

/****************************************************************
串口接收一个字符: 一旦有数据从串口传至CC2530, 则进入中断,将接收到的数据赋值给变量temp.
****************************************************************/
#pragma vector = URX0_VECTOR
__interrupt void UART0_ISR(void)
{
URX0IF = 0; // 清中断标志
temp = U0DBUF;

if((datanumber<9)) //最多能接收9个字符
{
Rxdata[datanumber] = temp;
datanumber++;
}
if(datanumber>=9)
{
RXTXflag = 1; //进入发送状态
// datanumber=0;
}
}

比如温度高于28度亮红灯,温度低于28度亮蓝灯这种