我最近在学习指纹模块,模块与单片机一直通信不上,用上位机测试软件却可以正常运行。然后用串口调试发送握手指令,单片机没有显示握手成功却跳进主功能界面,当断开单片机电源在上电时,串口助手的接收缓冲区显示数据跟我之前发送的握手指令一致。请问这是什么原因导致数据发不出去,也接收不到返回包,导致一致通信失败。(我指纹模块因为单片机引出的3.3V电压不足,所以用的外部电源。)
接收缓冲区:EF 01 FF FF FF FF 01 00 07 13 00 00 00 00 00 1B
发送缓冲区:EF 01 FF FF FF FF 01 00 07 13 00 00 00 00 00 1B
#include"uart.h"
#include<reg52.h>
void Uart_Init(void)
{
SCON=0x50; //UART方式1:8位UART; REN=1:允许接收
PCON=0x00; //SMOD=0:波特率不加倍
TMOD=0x20; //T1方式2,用于UART波特率
TH1=0xFD;
TL1=0xFD; //UART波特率设置:FDFD,9600;FFFF,57600
TR1=1; //允许T1计数
EA=1;
ES=1;
}
void Uart_Send_Byte(unsigned char c)//UART Send a byte
{
SBUF = c;
while(!TI); //发送完为1
TI = 0;
}
unsigned char Uart_Receive_Byte()//UART Receive a byteg
{
unsigned char dat;
while(!RI); //接收完为1
RI = 0;
dat = SBUF;
return (dat);
}
|