⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 此源码是关于cc2430的低功耗实验
💻 C
字号:
//cd wxl
/*****************************************
//设置时间格式:#+00+00+00
*****************************************/
#include "ioCC2430.h"


#define led1 P1_0
#define gled P1_1

char time[3]={23,59,55};        //时间初值
char Recdata[9];                //串口接收到的数据
char SendData[10]="00:00:00  "; //时间数据包
char timetemp;                  //钞针
char counter = 0;               //中断计数
char temp;                      //用于读串口接收到的数
char number = 0;                //
char follow_second;             //时间跟随

extern void UartTX_Send_String(char *data,int len);
extern void InitClock(void);
extern void InitT1(void);
extern void InitUART0(void);

/*****************************************
*函数功能 :
*入口参数 :	
*返 回 值 :
*说    明 :
*****************************************/
void InitIO(void)
{
  P1DIR |= 0X03;
  P1_1 = 1;
  P1_0 = 1;
}

 /****************************************************************
*函数功能 :T1中断函数					
*入口参数 : 无							
*返 回 值 :无							
*说    明 :	
****************************************************************/
#pragma vector = T1_VECTOR
 __interrupt void T1_ISR(void)
 {
        IRCON &= ~0x02;//清中断标志
        counter++;
        if(counter == 250)
        {
          counter = 0;
          timetemp = 1;         //一秒到
          led1 = ~led1;         // 调试指示用
        }
 }

/****************************************************************
*函数功能 :串口接收一个字符					
*入口参数 : 无							
*返 回 值 :无							
*说    明 :接收完成后打开接收					
****************************************************************/
#pragma vector = URX0_VECTOR
 __interrupt void UART0_ISR(void)
 {
 	URX0IF = 0;				//清中断标志
	temp = U0DBUF;
 }
/*****************************************
主函数
*****************************************/
 void main(void)
 {
   InitClock();
   InitT1();
   InitUART0();
   InitIO();
   UartTX_Send_String(SendData,8);
   do{
     if(timetemp == 1)   //if0
     {
       if(time[2]<59)   //second  //if1
       {
         time[2]++;
       }
       else
       {
         time[2] = 0;
         if(time[1]<59) //minute  //if2
         {
           time[1]++;
         }
         else
         {
           time[1] = 0;
           if(time[0]<23) //hour  //if3
           {
             time[0]++;
           }
           else
           {
             time[0] = 0;
           }                //end if3
         }                  //end if2
       }                    //end if1
     timetemp = 0;
     }//end if0

     if(temp != 0)
     {
       Recdata[number++]=temp;
       temp = 0;
     }
/********上程序段用来计时,最小精度为秒*********************/
     if((Recdata[0] == '#')&&(number == 9))     //F0 为设时间的数据段首字节
     {
        time[2] = (Recdata[7]-48)*10+(Recdata[8]-48);;
        if(time[2]>59)time[2]=0;

        time[1] = (Recdata[4]-48)*10+(Recdata[5]-48);
        if(time[1]>59)time[1]=0;

        time[0] = (Recdata[1]-48)*10+(Recdata[2]-48);
        if(time[0]>23)time[0]=0;

        gled = !gled;                         //for test
        Recdata[0] = 0;
        number = 0;
     }

/************************以上程序段用来处理PC命令***************************/

     if(follow_second != time[2])
     {
           SendData[7] = (char)(time[2])%10+48;
           SendData[6] = (char)(time[2])/10+48;
           SendData[4] = (char)(time[1])%10+48;
           SendData[3] = (char)(time[1])/10+48;
           SendData[1] = (char)(time[0])%10+48;
           SendData[0] = (char)(time[0])/10+48;
/**************************以上程序将时间数据打包****************************/
           UartTX_Send_String(SendData,10);
           follow_second = time[2];
     }//end if
   }while(1);//end
 }//end main()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -