hrefspace

 找回密码
 立即注册
搜索
热搜: PHP PS 程序设计
查看: 758|回复: 0

51单片机串口通讯问题,请高手协助~~

[复制链接]

523

主题

523

帖子

1599

积分

大司空

Rank: 5Rank: 5

积分
1599
发表于 2024-1-11 01:11:57 | 显示全部楼层 |阅读模式
//发送字符串到串口助手
#include <STC12C5410AD.h>
#include "string.h"

#define uchar unsigned char



sbit S1=P1^3;
sbit S2=P1^2;
sbit S3=P1^1;
sbit S4=P1^0;



//初始化
void uart_init(void)               //9600bps@22.1184MHz
{
        PCON &= 0x7F;                //波特率不倍速
        SCON = 0x50;                //8位数据,可变波特率
        AUXR &= 0xBF;                //定时器时钟12T模式
        AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
        TMOD &= 0x0F;                //设置定时器模式
        TMOD |= 0x20;                //设置定时器模式
        TL1 = 0xFA;                //设置定时初始值
        TH1 = 0xFA;                //设置定时重载值
        ET1 = 0;                //禁止定时器%d中断
        TR1 = 1;                //定时器1开始计时
        ES = 1;
        EA = 1;
        EA = 1;
}
//

void uart_tx_byte(uchar dat)
{
   SBUF=dat;
   while(!TI);
   TI=0;



}

void uart_tx_string(uchar *P)
{
    while(*P)
           {
             uart_tx_byte(*P);
         P++;
           }
  }
void main()
     
{
        uart_init();

        while(1)

   
        {static unsigned char delay;
                if(S1==0 || S2==0 || S3==0 || S4==0)//有键按下
              {
                        if(delay<0xFF)delay++;//消抖延时
                        if(delay == 250)
                        {
                                if(S1==0)    //按键S1按下
                                {
                                        uart_tx_string("EF 09 73 00 01 02 96 \n\r");
                                }
                                if(S2==0)   //按键S2按下
                                {
                                        uart_tx_string("EF 09 73 00 02 01 96 \n\r");
                                }
                                if(S3==0)   //按键S3按下
                                {
                                        uart_tx_string("EF 09 66 03 00 00 83 \n\r");
                                }
                                if (S4==0)
                                {
                                        uart_tx_string("EF 09 73 01 00 00 94 \n\r");
                                }                              
                        }
                }else{
                        delay = 0;
                }
        }
}
给位大神,帮我看看这代码,我发的EF 09 73 00 01 02 96,怎么串口助手收到的16进制是45 46 20 30 39 20 37 33 20 30 30 20 30 32 20 30 31 20 39 36 20 0A 0D这串数。单片机
发出不受控,请大神们帮我看看。谢了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|hrefspace

GMT+8, 2025-1-9 22:32 , Processed in 0.067847 second(s), 21 queries .

Powered by hrefspace X3.4 Licensed

Copyright © 2022, hrefspace.

快速回复 返回顶部 返回列表