📄 main.c
字号:
buf = add_1 + 0x30;
disp_8x16character(&buf,4,64,0,0,1);//显示原来的时间
}
else if(curr_pos2 == 0)
{
menu_esc();
}
return;
}
if(curr_menu_id == 13)
{
if(curr_pos2 == 1)
{
curr_pos2 --;
buf = Add_2 + 0x30;
disp_8x16character(&buf,4,56,0,0,0);//显示原来的时间
buf = add_2 + 0x30;
disp_8x16character(&buf,4,64,0,0,1);//显示原来的时间
}
else if(curr_pos2 == 0)
{
menu_esc();
}
return;
}
if(curr_menu_id == 14)
{
if(curr_pos2 == 1)
{
curr_pos2 --;
buf = Add_3 + 0x30;
disp_8x16character(&buf,4,56,0,0,0);//显示原来的时间
buf = add_3 + 0x30;
disp_8x16character(&buf,4,64,0,0,1);//显示原来的时间
}
else if(curr_pos2 == 0)
{
menu_esc();
}
return;
}
}
}
///////////////轮显任务只显示最新的当前温度函数///////////////
void turn_show_task()
{
uint i;
uchar j;
uchar k;
i = 0;
task_pri[4].task_flag = 0;
if(alt) //alt为轮显反转标志
{
disp_lattice(0x00,0x00); //cls();清屏
disp_chinese(alt_view2,0,0,8,1,0);//显示标题
disp_8x16character(view_a,2,8,0,0,0); //x_number的为实际数减1
disp_chinese(view_tem,2,16,8,1,0);
j = site4[i]/10;
k = site4[i]%10;
set_code[0] = j + 0x30;
set_code[1] = k + 0x30;
disp_8x16character(set_code,2,80,1,0,0);//x_number的为实际数减1
disp_8x16character(&view_a[1],4,8,0,0,0);//x_number的为实际数减1
disp_chinese(view_tem,4,16,8,1,0);
j = site5[i]/10;
k = site5[i]%10;
set_code[0] = j + 0x30;
set_code[1] = k + 0x30;
disp_8x16character(set_code,4,80,1,0,0); //x_number的为实际数减1
disp_8x16character(&view_a[2],6,8,0,0,0); //x_number的为实际数减1
disp_chinese(view_tem,6,16,8,1,0);
j = site6[i]/10;
k = site6[i]%10;
set_code[0] = j + 0x30;
set_code[1] = k + 0x30;
disp_8x16character(set_code,6,80,1,0,0); //x_number的为实际数减1
alt = 0;
}
else //alt为轮显标志
{
disp_lattice(0x00,0x00); //cls();清屏
disp_chinese(alt_view1,0,0,8,1,0);//显示标题
disp_8x16character(view_a,2,8,0,0,0); //x_number的为实际数减1
disp_chinese(view_tem,2,16,8,1,0);
j = site1[i]/10;
k = site1[i]%10;
set_code[0] = j + 0x30;
set_code[1] = k + 0x30;
disp_8x16character(set_code,2,80,1,0,0); //x_number的为实际数减1
disp_8x16character(&view_a[1],4,8,0,0,0); //x_number的为实际数减1
disp_chinese(view_tem,4,16,8,1,0);
j = site2[i]/10;
k = site2[i]%10;
set_code[0] = j + 0x30;
set_code[1] = k + 0x30;
disp_8x16character(set_code,4,80,1,0,0); //x_number的为实际数减1
disp_8x16character(&view_a[2],6,8,0,0,0); //x_number的为实际数减1
disp_chinese(view_tem,6,16,8,1,0);
j = site3[i]/10;
k = site3[i]%10;
set_code[0] = j + 0x30;
set_code[1] = k + 0x30;
disp_8x16character(set_code,6,80,1,0,0); //x_number的为实际数减1
alt = 1;
}
return;
}
///////某温控点温度显示任务函数 08-9-26//////////////
void rtu_view_task()
{
uchar i;
uchar j;
uchar k;
uchar b ;//显示温度的行坐标
uchar c; //显示温度的列坐标
rtu_view = 1;
task_pri[3].task_flag = 0;
disp_lattice(0x00,0x00); //清屏
if(temp_addr == 1)
{
disp_chinese(rtu_head1,0,0,5,1,0);//显示标题
disp_8x16character(view_a,0,88,0,0,0);
for(b=0;b<7;b++) //6行,4列显示
{
for(c=0;c<4;c++)
{
i = c + b*4;
j = site1[i]/10; //第1个点的
k = site1[i]%10;
set_code[0] = j + 0x30;
set_code[1] = k + 0x30;
disp_8x8character(set_code,(b+2),c*32,2,1);
}
}
return;
}
if(temp_addr == 2)
{
disp_chinese(rtu_head1,0,0,5,1,0);//显示标题
disp_8x16character(&view_a[1],0,88,0,0,0);
for(b=0;b<7;b++) //6行,4列显示
{
for(c=0;c<4;c++)
{
i = c + b*4;
j = site2[i]/10; //第2个点的
k = site2[i]%10;
set_code[0] = j + 0x30;
set_code[1] = k + 0x30;
disp_8x8character(set_code,(b+2),c*32,2,1);
}
}
return;
}
if(temp_addr == 3)
{
disp_chinese(rtu_head1,0,0,5,1,0);//显示标题
disp_8x16character(&view_a[2],0,88,0,0,0);
for(b=0;b<7;b++) //6行,4列显示
{
for(c=0;c<4;c++)
{
i = c + b*4;
j = site3[i]/10; //第3个点的
k = site3[i]%10;
set_code[0] = j + 0x30;
set_code[1] = k + 0x30;
disp_8x8character(set_code,(b+2),c*32,2,1);
}
}
return;
}
if(temp_addr == 4)
{
disp_chinese(rtu_head2,0,0,5,1,0);//显示标题
disp_8x16character(view_a,0,88,0,0,0);
for(b=0;b<7;b++) //6行,4列显示
{
for(c=0;c<4;c++)
{
i = c + b*4;
j = site4[i]/10; //第4个点的
k = site4[i]%10;
set_code[0] = j + 0x30;
set_code[1] = k + 0x30;
disp_8x8character(set_code,(b+2),c*32,2,1);
}
}
return;
}
if(temp_addr == 5)
{
disp_chinese(rtu_head2,0,0,5,1,0);//显示标题
disp_8x16character(&view_a[1],0,88,0,0,0);
for(b=0;b<7;b++) //6行,4列显示
{
for(c=0;c<4;c++)
{
i = c + b*4;
j = site5[i]/10; //第5个点的
k = site5[i]%10;
set_code[0] = j + 0x30;
set_code[1] = k + 0x30;
disp_8x8character(set_code,(b+2),c*32,2,1);
}
}
return;
}
if(temp_addr == 6)
{
disp_chinese(rtu_head2,0,0,5,1,0);//显示标题
disp_8x16character(&view_a[2],0,88,0,0,0);
for(b=0;b<7;b++) //6行,4列显示
{
for(c=0;c<4;c++)
{
i = c + b*4;
j = site6[i]/10; //第6个点的
k = site6[i]%10;
set_code[0] = j + 0x30;
set_code[1] = k + 0x30;
disp_8x8character(set_code,(b+2),c*32,2,1);
}
}
return;
}
}
void main (void)
{
//curr_menu_id = 0;
char i,len1;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
BCSCTL1 = CALBC1_1MHZ; // Set DCO
DCOCTL = CALDCO_1MHZ;
P3SEL = 0x30; // P3.4,5 = USCI_A0 TXD/RXD
P3DIR |= 0x50; // All P3.x outputs
P3DIR &= ~0x20; // All P3.x outputs
TI_CC_LED2_PxDIR = TI_CC_LED2 ;
TI_CC_LED2_PxOUT |= TI_CC_LED2;
UCA0CTL1 |= UCSSEL_2; // CLK = ACLK
//UCA0CTL1 |= UCSSEL_1; // CLK = ACLK
UCA0BR0 = 0x68; // 32kHz/9600 = 3.41
UCA0BR1 = 0x00; //
// UCA0MCTL |= UCBRS0 ; // Modulation UCBRSx = 3UCBRS1 + UCBRS0;
UCA0MCTL |= UCBRS1 + UCBRS0;
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
IE2 |= UCA0RXIE;
//while (!(IFG2&UCA0RXIFG)); // Enable USCI_A0 RX interrupt
P3OUT |=0x40;
_EINT(); //中断使能
delay(100,100);
TI_CC_GDO0_PxDIR &= ~TI_CC_GDO0_PIN; //设GDOO为输入状
IFG1 &= ~OFIFG;
TI_CC_Wait(30);
TI_CC_SPISetup(); // Initialize SPI port -modify-
TI_CC_PowerupResetCCxxxx(); // Reset CCxxxx,TI_CC_SPI.c
writeRFSettings(); // Write RF settings to config reg
//设置功率
TI_CC_SPIWriteBurstReg(TI_CCxxx0_PATABLE, paTable, paTableLen);//Write PATABLE memory locations:TI_CCxxx0_PATABLE=0x3f
TI_CC_LED1_PxDIR |= TI_CC_LED1 ; //点亮LED1;
TI_CC_LED1_PxOUT &= ~(TI_CC_LED1 );
TI_CC_GDO0_PxDIR &= ~TI_CC_GDO0_PIN; //设置GDO0为输入;
TI_CC_GDO0_PxSEL &= ~TI_CC_GDO0_PIN; //设置P2.6脚为I/O端口;
TI_CC_GDO0_PxIES |= TI_CC_GDO0_PIN; //下降沿触发中断;
TI_CC_GDO0_PxIFG &= ~TI_CC_GDO0_PIN; // 清除中断标志;
TI_CC_GDO0_PxIE |= TI_CC_GDO0_PIN; // 使能中断总允许;
TI_CC_SPIStrobe(TI_CCxxx0_SIDLE); ////设置芯片为空闲状态;
TI_CC_SPIStrobe(TI_CCxxx0_SPWD); ////设置芯片为sleep状态;
/*TI_CC_SW_PxIES = KEY_ESC + KEY_UP + KEY_DOWN + KEY_OK; //按键选择下降沿触发
TI_CC_SW_PxIFG &= ~(KEY_ESC + KEY_UP + KEY_DOWN + KEY_OK); //清除按键中断请求
TI_CC_SW_PxIE = KEY_ESC + KEY_UP + KEY_DOWN + KEY_OK; */ //按键中断使能
//TI_CC_LED_PxDIR = TI_CC_LED1 + TI_CC_LED2; //设定输出状态
TI_CC_SPIStrobe(TI_CCxxx0_SIDLE);
TI_CC_SPIStrobe(TI_CCxxx0_SRX); // Initialize CCxxxx in RX mode.
init_port();
lcd_initial();
flag = 2;
task_pri[4].task_flag = 1;
LCD_BACK_PxDIR |= LED_BACK;
LCD_BACK_PxOUT &= ~LED_BACK;
TI_CC_LED1_PxDIR |= TI_CC_LED1 ;
TI_CC_LED1_PxOUT |= TI_CC_LED1 ;
TACCTL0 = CCIE; // TACCR0 interrupt enabled
TACCR0 = 50000;
TACTL = TASSEL_2 + MC_1; // SMCLK, upmode
/* TI_CC_LED1_PxOUT &= ~TI_CC_LED1 ;
delay_n_ms(200);
TI_CC_LED1_PxOUT |= TI_CC_LED1 ;
delay_n_ms(300);
TI_CC_LED1_PxOUT &= ~TI_CC_LED1 ;
delay_n_ms(200);
TI_CC_LED1_PxOUT |= TI_CC_LED1 ; */
_EINT(); //允许中断
while(1)
{
//menu_open = 1;
//receive10m++;
for(i=0;i<5;i++)
{
if(task_pri[i].task_flag)
{
task_pri[i].oper();
break;
}
}
__bis_SR_register(LPM0_bits + GIE); // Enter LPM3, enable interrupts
#ifdef _TRANSMITTER
//for(len1=0;len1<50;len1++)
if(j)
{
//TI_CC_SPIStrobe(TI_CCxxx0_SFTX);
RFSendPacket(txBuffer1, 9); // Send value over RF
//TI_CC_Wait(30000);
RFSendPacket(txBuffer1, 9); // Send value over RF
//TI_CC_Wait(30000);
RFSendPacket(txBuffer1, 9); // Send value over RF
//TI_CC_Wait(30000);
RFSendPacket(txBuffer1, 9); // Send value over RF
j = 0;
}
else
{
RFSendPacket(txBuffer2, 9); // Send value over RF
TI_CC_Wait(30000);
RFSendPacket(txBuffer2, 9); // Send value over RF
TI_CC_Wait(30000);
RFSendPacket(txBuffer2, 9); // Send value over RF
TI_CC_Wait(30000);
RFSendPacket(txBuffer2, 9); // Send value over RF
TI_CC_Wait(30000);
RFSendPacket(txBuffer2, 9); // Send value over RF
TI_CC_Wait(30000);
j = 1;
}
TI_CC_SPIStrobe(TI_CCxxx0_SFRX);//不能和RFReceivePacket()分得太远
TI_CC_SPIStrobe(TI_CCxxx0_SIDLE);
TI_CC_SPIStrobe(TI_CCxxx0_SRX);//后面的延时比较难调
TI_CC_LED1_PxOUT |= TI_CC_LED1;
TI_CC_Wait(30000);
TI_CC_LED_PxOUT &= ~(TI_CC_LED2 + TI_CC_LED1);
TI_CC_Wait(30000);
TI_CC_Wait(30000);
//_EINT(); // Enable interrupts
_BIS_SR(LPM3_bits + GIE);
#endif
/* RFReceivePacket(rxBuffer,&len1);
TI_CC_Wait(30000);
//_BIS_SR(LPM3_bits + GIE);
*/
///TI_CC_Wait(30);
if (RFReceivePacket(rxBuffer,&len1)) // Fetch packet from CCxxxx
// next++ ;
//Toggle LEDs according to pkt data
TI_CC_SPIStrobe(TI_CCxxx0_SFRX);//不能和RFReceivePacket()分得太远
TI_CC_SPIStrobe(TI_CCxxx0_SIDLE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -