各位大神,小弟刚学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的亮灭,高电平为亮,低电平为灭。)
#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,应该是你发送的时候忘了选 十六进制发送了
恩恩 懂了 原来默认的是字符格式,改了十六进制就好了 谢谢你啦
你客气了,有问题记得到这里来,会有好多人帮你的。