大家好,占用大家寶貴時間請指點。
主機傳送,用串口助手接收正常的。在接收端似乎是ASCII碼的hex,請教各位,如何在從機端才能分離出110這個數字在數碼管顯示出來。
傳送代碼如下:
unsigned int nbt=110;
unsigned int nct=10;
unsigned int ndt=20;
unsigned int net=140;
i=Read_key(); //讀按鍵值
if(i==7)
{
memset(num, 0, sizeof(char)*18);
while(Read_key()==i); //等待按鍵釋放
Write_DATA(0,tab[2]);
sprintf(num,"time%d\n",nbt);
SendString(num);
delay(100);
}
1q.JPG (72.72 KB, 下載次數: 38)
下載附件
2024-5-12 13:56 上傳
在接收端接收到time110;現在time可以正常分離判斷,110分離不了,請教各位,如何才能分離出110這個數字在數碼管顯示出來。
接收端代碼:
- unsigned char Uart_recd_data(void){
- static char str[10];
- unsigned char i,temp;
- if(USART_RX_STA) {
- for(i=0;i<Data_Length;i++)
- {
- str[i]=USART_RX_BUF[i];
- }
- USART_RX_STA=0;//接收完畢
- temp=0;
- if(strstr(str,"time")) {
- for(i=5;i<8;i++) {
- temp=(char)temp*10+(str[i]-30);
- }
- }
- ES=1; }
- return temp;
- }
- void main{
- while(1)
- {
- temp = Uart_recd_data();
- num[0] = temp/100;
- num[1] = temp/10%10;
- num[2] = temp %10;
- delay(1000);
- Write_DATA(0,tab[num[0]]);
- Write_DATA(2,tab[num[1]]);
- Write_DATA(4,tab[num[2]]);
- }
- }
復制代碼
|