📄 duijj.c~rf2d2a22.tmp
字号:
P3OUT |= 0x30; //MSM7512转换到发送模式
Tx_Mode();
delay(100); //延时
nTX_Len=PackData(UART_TX_BUF,Tshow_Puf,count);//封装要发送的数据
String_printf(UART_TX_BUF); //通过串口发送数据
for(i=0;i<=nTX_Len;i++) //清空缓存
{ Tshow_Puf[i]='\0';
UART_TX_BUF[i]='\0';}
nTX_Flag=0; //清除发送标志
//DisNum=0;
count=0; //发送计数清零
delay(10);
P3OUT |= 0x30; //MSM7512转换到接收模式
Rx_Mode();
j=0x01;}
if(j==0x01){j=0x00; break;}
if ( nRX_Flag==1 ) //接收标志位为一,收到数据
{
NOKIA5110_clear(); //清屏
count=0;
NOKIA5110_w_char_string(0,0,"=chat=");//显示
NOKIA5110_w_char_string(42,0,"Read: ");
NOKIA5110_w_char_string(0,1,UART_RX_BUF);
for(i=Buf_Dp-1;i!=0;i--) //清空接收缓存
{ UART_RX_BUF[i]='\0'; }
RX1_Len_temp=0; //接收计数清零
nRX_Flag=0; //清接收标志
Write_Flag=1; //写信息
}
if( Rece_Flag==1&count!=0) //回复信息,清屏。输入新信息
{Rece_Flag=0;count=0;
NOKIA5110_clear();
NOKIA5110_w_char_string(0,0,"=chat=");
if(Write_Flag!=0)
NOKIA5110_w_char_string(42,0,"write: ");}
if((Write_Flag==0)&(Rece_Flag==0)) //退出发送接收模式,回到主页面
{ NOKIA5110_clear();
x=0;y=0; break;
}
}
TBCCTL0=CCIE; //使能定时器中断
}
else { P2IE &=~BIT1;} //关闭键盘
}
}
#pragma vector=PORT2_VECTOR
__interrupt void PORT2_ISR(void)
{
if(P2IFG & BIT1) //如果是clock的中断
{
P2IFG &=~ BIT1; //清除中断标志
if(bitcount == 11) //接收第1位
{
if(SIDval) //如果不是起始位
return;
else
bitcount--;
}
else if(bitcount == 2) //接收奇偶校验位
{
if(SIDval) //如果校验位等于1
pebit = 1;
else
pebit = 0;
bitcount--;
}
else if(bitcount == 1) //接收停止位
{
if(SIDval) //若停止位正确
{
bitcount = 11; //复位位计数变量
IntNum = 0; //当中断11次后表示一帧数据收完,清变量准备下一次接收
BF = 1; //标识有字符输入完了
_DINT(); //关中断等显示完后再开中断 (注:如这里不用BF和关中断直接调Decode()则所Decode中所调用的所有函数要声明为再入函数)
Decode(recdata) ; //解码获得此键值的ASCII值并保存
// LPM3_EXIT; //退出低功耗模式
recdata = 0; //清除接收数据
_EINT () ; //开中断
}
else //如果出错
{
bitcount = 11;
recdata = 0;
}
}
else //接收8个数据位
{
recdata >>= 1;
if(SIDval) recdata |= 0x80;
bitcount--;
}
}
}
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR(void)
{
if(P1IFG & BIT3)
{ delay(100); //去抖
P1IFG &=~ BIT3;
Write_Flag=0x01;
}
if(P1IFG & BIT2)
{ delay(100); //去抖
P1IFG &=~ BIT2;
Write_Flag=0x00;
Rece_Flag=0;
nRX_Flag=0x00;
}
}
#pragma vector=USCIAB1RX_VECTOR
__interrupt void USCI1RX_ISR(void)
{
_DINT();
if(RX_Flag==1) //接收标志位是否为一,是将数据载入缓存
{
UART_RX_BUF[RX1_Len_temp] = UCA1RXBUF;
if( RX1_Len_temp<100) RX1_Len_temp++;
else RX1_Len_temp=0;
if(UART_RX_BUF[RX1_Len_temp-1]=='%') //收到结束标志,接收完成。
{
UART_RX_BUF[RX1_Len_temp-1]=32;
UART_RX_BUF[RX1_Len_temp]='*';
UART_RX_BUF[RX1_Len_temp+1]='*';
UART_RX_BUF[RX1_Len_temp+2]='E';
UART_RX_BUF[RX1_Len_temp+3]='N';
UART_RX_BUF[RX1_Len_temp+4]='D';
UART_RX_BUF[RX1_Len_temp+5]='*';
UART_RX_BUF[RX1_Len_temp+6]='*';
RX_Flag =0; //清除接收标志
nRX_Flag =1; //接收完成标志
Rece_Flag=1;
}
}
else //等待引导码
{ if(Resv[0] ==0x55)
{ Resv[1] = UCA1RXBUF;
if(Resv[1] ==0xaa)
{ RX_Flag=1; }
Resv[0] = '\0';
Resv[1] = '\0';
}
else Resv[0] = UCA1RXBUF;
}
_EINT();
}
#pragma vector=TIMERB0_VECTOR
__interrupt void Timer_B0(void)
{ int results[2];
ADC12CTL0 &= ~ENC;
results[0] =ADC12MEM0;
results[1] =ADC12MEM1;
if((results[0]<=2600)&(results[0]>1700)){signal=3;}
else if((results[0]<1700)&(results[0]>1000)){signal=2;}
else {signal=0;}
Tlotal_m(signal);
ADC12CTL0 |= ENC+ADC12SC;
}
void Get_time(unsigned char *ReadingData)
{
char i,k;
DS1302_GetData(ReadingData);
NYR[2]=(char)(((ReadingData[0]>>4)&0x0f)+48);//年
NYR[3]=(char)((ReadingData[0]&0x0f)+48);
NYR[5]=(char)(((ReadingData[2]>>4)&0x0f)+48);//月
NYR[6]=(char)((ReadingData[2]&0x0f)+48);
NYR[8]=(char)(((ReadingData[3]>>4)&0x0f)+48);//日
NYR[9]=(char)((ReadingData[3]&0x0f)+48);
switch(ReadingData[1])
{
case 0x01:{k=0;break;}
case 0x02:{k=1;break;}
case 0x03:{k=2;break;}
case 0x04:{k=3;break;}
case 0x05:{k=4;break;}
case 0x06:{k=5;break;}
case 0x07:{k=6;break;}
default: break;
}
for(i=0;i<4;i++)
{ Xinq[i]=TAB_f_Week[k][i];}
O_Tm =(char)((ReadingData[4]>>4)&0x08);
A_PM =(char)((ReadingData[4]>>4)&0x02);//时
if(O_Tm==0x08)
{SF[0]=(char)((ReadingData[4]>>4)&0x01);}//时
else
{SF[0]=(char)((ReadingData[4]>>4)&0x03); }
SF[1]=(char)(ReadingData[4]&0x0f);
SF[3]=(char)((ReadingData[5]>>4)&0x0f);//分
SF[4]=(char)(ReadingData[5]&0x0f);
}
void Tlotal_m(char k)
{ char i;
NOKIA5110_clear();
NOKIA5110_draw_bmp(0,0,TX,8,8);
for(i=0;i<=k;i++)
NOKIA5110_w_Symbol(i);
Get_time(ReadingData);
NOKIA5110_w_char_string(35,0,"38/27MHz");
NOKIA5110_w_char_string(0,1,"SSB interphone");
for(i=0;i<5;i++)
{ Write_shuzi((i+2)*8,2,b[SF[i]]);}
if(O_Tm==0x08)
{ if(A_PM==0x02) Write_hanzi(64,2,PM);
else Write_hanzi(64,2,AM);}
NOKIA5110_w_char_string(0,4,NYR);
NOKIA5110_w_char_string(10*6,4,Xinq);
NOKIA5110_w_char_string(0,5,"Message");
NOKIA5110_w_char_string(10*6,5,"Back");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -