完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我在串口接受到的数据是十六进制字符比如0x00,0xc1这样的,怎么将他们存进数组,然后在怎么将这个数组与另一个已知的类型一样的数组进行比较!!希望您能帮帮我!!谢谢
|
|
相关推荐
11 个讨论
|
|
#include
#include #include #define uchar unsigned char #define uint unsigned int uchar idata trdata[]={0x07,0x05,0x00,0x00,0xFF,0xFF,0xCC,0x1C,0xee}; uchar idata trdatc[]={0x07,0x05,0x00,0x00,0xFF}; uchar idata trdatb[5]; ***it K1=P3^2; //对应开发板K1按键 /*-------------------------------------------------------------*/ //串口初始化 void UART_Init(void) { SCON = 0x50; //串口工作方式为1 , 串行允许接收 //SM0=0; //SM1=1; //REN=1; TMOD = 0x20; //定时器1 工作在方式2 //PCON = 0x80; //SMOD = 1; 波特率加倍 TH1 = 0xfd; //波特率 9600bps fosc="11".0592MHz TL1 = 0xfd; ES = 1; //开串口中断 TR1 = 1; //允许定时器1工作 EA = 1; //开总中断 } void delay1ms(uint i) { uchar j; while(i--) { for(j=0;j<115;j++) //1ms基准延时程序 { ; } } } /*-------------------------------------------------------------*/ //串口发送一个字节 void Uart_SendChar(unsigned char dat) { SBUF = dat; //待发送的数据写入缓冲区 while(!TI); //等待发送完成 TI = 0; //清零发送标志位 } /*-------------------------------------------------------------*/ //串口发送一个字符串 void Uart_SendString() { uchar i=0; while(trdata[i]!=0xee) { SBUF=trdata[i]; while(!TI); TI=0; i++; } } /*-------------------------------------------------------------*/ //主函数 void main(void) { UART_Init(); //初始化串口 while(1) { if(K1==0) { delay1ms(20); if(K1==0) { Uart_SendString(); //发送数据 while(!K1); //等待按键释放 } } } } /*-------------------------------------------------------------*/ //串口接收中断函数 void INT_UartRcv(void) interrupt 4 { uchar i; unsigned char Rcv = 0; if(RI) //查询接收标志位(有数据发送过来时置为1) { RI = 0; //接收标志位清零 Rcv = SBUF; //存储缓冲区的数据 trdatb[i]=Rcv; i++ ; Uart_SendChar(Rcv); //让从计算机上传到单片机的数据 , 传回的计算机显示 if(trdatb[i]==trdatc[i]) { P0=0xfe; delay1ms(100); P0=0xff; delay1ms(100); P0=0xfe; delay1ms(100); P0=0xff; } } } 麻烦您帮我改改,谢谢 |
|
|
|
|
|
void INT_UartRcv(void) interrupt 4
{ int i; unsigned char Rcv = 0; if(RI) //查询接收标志位(有数据发送过来时置为1) { RI = 0; //接收标志位清零 Rcv = SBUF; //存储缓冲区的数据 for(i=0;i<6;i++) { trdatb[i]=Rcv; } Uart_SendChar(Rcv); //让从计算机上传到单片机的数据 , 传回的计算机显示 if(i==5) { P0=0xfe; delay1ms(100); P0=0xff; delay1ms(100); P0=0xfe; delay1ms(100); P0=0xff; } } } 您看这样写可以吗? |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 23:31 , Processed in 0.813372 second(s), Total 76, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号