串口初始化后 还是握手失败
附上一些主要程序
- 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;
- }
- 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);
- }//这些是串口初始化的程序
- void Device_Check(void)//握手
- {
- unsigned char i=0;
- FPM10A_RECEICE_BUFFER[9]=1; //串口数组第九位可判断是否通信正常
- LCD1602_Display(0xc0,"Loading",0,7); //设备加载中界面
- for(i=0;i<8;i++) //进度条式更新,看起来美观
- {
- LCD1602_WriteDAT(42); //42对应ASIC码的 *
- Delay_Ms(200); //控制进度条速度
- }
- LCD1602_Display(0xc0,"Docking failure",0,16); //液晶先显示对接失败,如果指纹模块插对的话会将其覆盖
- FPM10A_Cmd_Check(); //单片机向指纹模块发送校对命令
- FPM10A_Receive_Data(12); //将串口接收到的数据转存
- if(FPM10A_RECEICE_BUFFER[9] == 0) //判断数据低第9位是否接收到0
- {
- LCD1602_Display(0xc0,"Docking success",0,16); //符合成功条件则显示对接成功
- }
- }
- //发送包头
- void FPM10A_Cmd_Send_Pack_Head(void)
- {
- int i;
- for(i=0;i<6;i++) //包头
- {
- Uart_Send_Byte(FPM10A_Pack_Head[i]);
- }
- }
- //发送指令
- void FPM10A_Cmd_Check(void)
- {
- int i=0;
- FPM10A_Cmd_Send_Pack_Head(); //发送通信协议包头
- for(i=0;i<10;i++)
- {
- Uart_Send_Byte(FPM10A_Get_Device[i]);
- }
- }
- //接收反馈数据缓冲
- void FPM10A_Receive_Data(unsigned char ucLength)
- {
- unsigned char i;
- for (i=0;i<ucLength;i++)
- FPM10A_RECEICE_BUFFER[i] = Uart_Receive_Byte();
- }
- code unsigned char FPM10A_Get_Device[10] ={0x01,0x00,0x07,0x13,0x00,0x00,0x00,0x00,0x00,0x1b};//口令验证
- code unsigned char FPM10A_Pack_Head[6] = {0xEF,0x01,0xFF,0xFF,0xFF,0xFF}; //协议包头
复制代码
串口调试助手上接收到的数据
接收到了的确是包头和口令验证里面的数据 但是最前面有一个00 不知道是为什么 然后程序就一直不能握手成功 lcd1602就显示的对接失败
求求大神指点啊 拜托了
|