找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

求助:51 串口发送数据

[复制链接]
admin 发表于 2012-9-2 16:29:48 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
请高手帮忙!!!(急用)
这是我写的一段程序,是用串口实现数码管显示,要做的工作是:在串口调试助手发送十六进制数00~ff,通过串口中断处理,在数码管上显示十进制数000~255;:

hug: 问题:在串口调试发送十六进制,需要在程序中将其转换为十进制数吗? 程序运行时串口调试发送十六进制ff,数码管显示255是正确的,为什么发送其他数据时,数码管显示的数据不正确??

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include<math.h>

unsigned char Dis_Baiwei;//定义百位
unsigned char Dis_Shiwei;//定义十位
unsigned char Dis_Gewei; //定义个位
unsigned char const tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值01234567

/*------------------------------------------------
延时子程序
------------------------------------------------*/
void delay(unsigned int cnt)
{
while(--cnt);
}
/******************************************************************/
/* 主函数 */
/******************************************************************/
void main (void)
{


SCON = 0x50; /* SCON: 模式 1, 8-bit UART, 使能接收 */
TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */
TH1 = 0xFD; /* TH1: reload value for 9600 baud @ 11.0592MHz */
TR1 = 1; /* TR1: timer 1 run */
EA = 1; /*打开总中断*/
ES = 1; /*打开串口中断*/

while (1)
{

P0=Dis_Baiwei;
P2=0;
delay(30);
P0=Dis_Shiwei;//显示十位
P2=1;
delay(30); //短暂延时
P0=Dis_Gewei; //显示个位
P2=2;
delay(30);
}
}
/******************************************************************/
/* 串口中断程序 */
/******************************************************************/
void UART_SER (void) interrupt 4 //串行中断服务程序
{
unsigned char Temp; //定义临时变量

if(RI) //判断是接收中断产生
{
RI=0; //标志位清零
Temp=SBUF; //读入缓冲区的值

Dis_Baiwei=tab[Temp/100];//百位显示处理
Dis_Shiwei=tab[(Temp%100)/10];//十位显示值处理
Dis_Gewei=tab[(Temp%100)%10]; //个位显示处理;
P1=Temp; //把值输出到P1口,用于观察
SBUF=Temp; //把接收到的值再发回电脑端
}
if(TI) //如果是发送标志位,清零
TI=0;
}
[
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-25 07:39 , Processed in 0.053496 second(s), 11 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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