📄 main.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 + -