找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 734|回复: 2
打印 上一主题 下一主题
收起左侧

十六进制怎么用单片机串口发送出去?

[复制链接]
跳转到指定楼层
楼主
ID:475031 发表于 2023-6-12 19:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
0X03,0XFD,0X10,0XE8,0X00,0X00,0X0C,0X80,0X6B
上面
十六进制怎么串口发送出去,

下面是我的程序。编译也没有错误,按钮按了也没有见发送出去。
#include <STC15W204S.h>
#include <intrins.h>
#define uchar unsigned char     //定义一下方便后面使用
#define uint  unsigned int            //定义一下方便后面使用
#define ulong unsigned long            //定义一下方便后面使用               
#define COMM_BAUD_RATE  9600    //串口波特率
#define FOSC 11059200L //晶振设置,默认使用11.0592M Hz,
sbit KEY1 = P3^3;  //触发

void UartInit(void) {
        //8位数据,可变波特率
        SCON = 0x50;
        //串口1选择定时器2为波特率发生器
        AUXR |= 0x01;
        //定时器2时钟为Fosc,即1T
        AUXR |= 0x04;
        //内部RC时钟设置为11.0592的定时器2初值设置
        //设定定时初值
        T2L = 0xE0;
        //设定定时初值
        T2H = 0xFE;
        //启动定时器2
        AUXR |= 0x10;
        //允许UART串口中断
        ES = 1 ;
        //允许总中断
        EA = 1 ;
}



void send(uchar dat)
{
        SBUF=dat;                         //发送指令到SBUF
        while(!TI);                         //等待发送结束
        TI=0;                                 //清除结束标志,以便再发送数据
}
void main()
{
        UartInit();//串口寄存器的初始化设置

        while(1)
        {
  if(KEY1==0)  //判断是否按下键盘
        {
                  
        send(0X03);                 
        send(0XFD);                 
        send(0X14);                 
        send(0XFF);                  
        send(0X00);                 
        send(0X00);                  
        send(0X00);                 
        send(0X0F);                    
        send(0X6B);         
                 }
                while(KEY1==0);//按键锁定,每按一次count只加1.
                 
        }
        
        }
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:116103 发表于 2023-6-12 22:24 | 只看该作者
初始化程序中你开了中断,ES=1,EA=1,则TI=1时就会进入中断,而你没有中断程序,你是用的查询方式发码,所以要把ES=1关了,ES=0.  也就是不用中断。
回复

使用道具 举报

板凳
ID:213173 发表于 2023-6-13 07:14 | 只看该作者
  1. #include <STC15W204S.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char     //定义一下方便后面使用
  4. #define uint  unsigned int            //定义一下方便后面使用
  5. #define ulong unsigned long            //定义一下方便后面使用               
  6. #define COMM_BAUD_RATE  9600    //串口波特率
  7. #define FOSC 11059200L //晶振设置,默认使用11.0592M Hz,
  8. sbit KEY1 = P3^3;  //触发

  9. uchar code Table[]={0X03,0Xfd,0X14,0Xff,0X00,0X00,0X00,0X0f,0X6b};

  10. void Delay10ms()                //@11.0592MHz
  11. {
  12.         unsigned char i, j;

  13.         i = 18;
  14.         j = 235;
  15.         do
  16.         {
  17.                 while (--j);
  18.         } while (--i);
  19. }

  20. void UartInit(void)
  21. {
  22.         SCON = 0x50;//8位数据,可变波特率
  23.         AUXR |= 0x01;//串口1选择定时器2为波特率发生器
  24.         AUXR |= 0x04;//定时器2时钟为Fosc,即1T
  25.         //内部RC时钟设置为11.0592的定时器2初值设置
  26.         T2L = 0xE0;//设定定时初值
  27.         T2H = 0xFE;//设定定时初值
  28.         AUXR |= 0x10;//启动定时器2
  29.         ES = 1 ;//允许UART串口中断
  30.         EA = 1 ;//允许总中断
  31. }

  32. void send(uchar dat)
  33. {
  34.         SBUF=dat;                         //发送指令到SBUF
  35.         while(!TI);                         //等待发送结束
  36.         TI=0;                                 //清除结束标志,以便再发送数据
  37. }
  38. void main()
  39. {
  40.         uchar i;
  41.         UartInit();//串口寄存器的初始化设置
  42.         while(1)
  43.         {
  44.                 if(KEY1==0)  //判断是否按下键盘
  45.                 {
  46.                         Delay10ms();
  47.                         if(KEY1==0)
  48.                         {
  49.                                 for(i=0;i<9;i++)
  50.                                         send(Table[i]);
  51. /*                                send(0X03);                 
  52.                                 send(0XFD);                 
  53.                                 send(0X14);                 
  54.                                 send(0XFF);                  
  55.                                 send(0X00);                 
  56.                                 send(0X00);                  
  57.                                 send(0X00);                 
  58.                                 send(0X0F);                    
  59.                                 send(0X6B);         
  60. */
  61.                         }
  62.                         while(!KEY1);//按键锁定,每按一次count只加1.               
  63.                 }
  64.         }       
  65. }
复制代码
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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