我最近在學習指紋模塊,模塊與單片機一直通信不上,用上位機測試軟件卻可以正常運行。然后用串口調試發送握手指令,單片機沒有顯示握手成功卻跳進主功能界面,當斷開單片機電源在上電時,串口助手的接收緩沖區顯示數據跟我之前發送的握手指令一致。請問這是什么原因導致數據發不出去,也接收不到返回包,導致一致通信失敗。(我指紋模塊因為單片機引出的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);
}
|