RFID程序 读到寄存器的值通过串口打印出为0x14 不知道是什么原因 求解答

RFID程序 读到寄存器的值通过串口打印出为0x14 不知道是什么原因 求解答,第1张

根据你贴的寄存器的说明,复位时为0x04,即“0000 0100”,

而你串口读出来的值为0x14,即为“0001 0100”,表明数据的第4位发生了变化,第4位是IdleIRQ,可以查询其对应的说明。

结合这两个,另外检查一下在复位前,前后几行程序做了什么动作,基本可以定位原因。

希望对你有帮助,祝早日解决。

看了一下,你的中断程序有问题

单片机的串口,每次只能接受一个字符,而你的程序是判断两个字符

if(UART_data!='\0'),这句是不能实现的,\0 是两个字符

还有你的中断内使用的一个变量 J,这是全局变量,使用后应该重新赋值

你的程序中并没有重新给J赋值的语句,所以你的程序中,J的值只会加不会减

就是无限制的累加,直到溢出,这是一个很大的错误,直接影响你的数据接收

而且程序中还缺少等待接收完成的语句,while(!RI),没有这句也可以接收

只是很容易出错,就是数据出现接收错误

接收的语句最好是这样写

若满意请记得采纳下

void UART_R(void) interrupt 4

{

  if(RI==1)

  {

UART_data=SBUF

  while(!RI)

RI = 0

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11149014.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存