微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 各位大神,小弟刚学51的串口,发送a不能变为十六进制

各位大神,小弟刚学51的串口,发送a不能变为十六进制

时间:10-02 整理:3721RD 点击:
#include <reg52.h>       
#define uchar unsigned char
#define uint unsigned int
uchar aa;
void main(void)
{
    SCON = 0x50;              //设定串口工作方式
    PCON = 0x00;              //波特率不倍增
    TMOD = 0x20;              //定时器1工作于8位自动重载模式, 用于产生波特率
    EA = 1;
    ES = 1;                   //允许串口中断
    TL1 = 0xfd;
    TH1 = 0xfd;               //波特率9600
    TR1 = 1;
    while(1);
          
}
void  serial() interrupt 4
{
        RI = 0;                   //清除串行接受标志位
        aa = SBUF;                //从串口缓冲区取得数据
        P1 =~ (aa&0x0f);
        SBUF = aa;                //允许串口中断
        while(!TI);
        TI = 0;
}
这个是我写的  
不知道哪里错了  发送a的时候并不是代表10,而是1,其他的bcdef也不能代表相应的十进制数
刚刚学习单片机好多不懂 麻烦各位大神帮我看看
如果我还有什么有什么问题都说出来吧  刚起步,虚心求教,麻烦大家了
(这个是任务要求:使用中断的方式,接收上位机的一个字节数据,数据的低4位分别代表了L1-L4的亮灭,高电平为亮,低电平为灭。)

你发送的时候是按照10进制还是16进制呀?

字符a十六进制表示是0x61,应该是你发送的时候忘了选 十六进制发送了

恩恩 懂了 原来默认的是字符格式,改了十六进制就好了  谢谢你啦   

你客气了,有问题记得到这里来,会有好多人帮你的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top