找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[求助]51串口显示总是出错

[复制链接]
跳转到指定楼层
楼主
ID:43372 发表于 2012-7-28 15:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如下的程序,串口助手总是显示80而不是0,请问是为什么?谢谢了~ #include #include //Keil library #include //Keil library #include int i; void main() { TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; SM0=0; SM1=1; REN=1; EA=1; ES=1; i = 0; while(1) { SBUF=i; while(!TI); TI=0; } }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:34608 发表于 2012-7-28 16:03 | 只看该作者

你把i定义成unsigned char 试试,以前我也遇到过这样的事情,

回复

使用道具 举报

板凳
ID:43372 发表于 2012-7-28 16:33 | 只看该作者
还是一样啊
回复

使用道具 举报

地板
ID:50001 发表于 2015-3-9 00:06 | 只看该作者
稍微改了一下程序:
我运行了一下,输入一个值,会返回一个值
#include<reg52.h>
unsigned int i;
void main()
{
        TMOD=0x20;
        TH1=0xfd;
        TL1=0xfd;
        TR1=1;
        SM0=0;
        SM1=1;
        REN=1;
        //EA=1;
        ES=0;
        i = 0;
        while(1)
        {
               
                if(1==RI)
                {
                        RI=0;
                        SBUF=i;//i是你要输入的值
                        i=SBUF;
                }       
                else if(1==TI);
                TI=0;
        }
}
回复

使用道具 举报

5#
ID:1033693 发表于 2022-6-17 11:02 | 只看该作者
#include <reg52.h>
typedef unsigned int u16;//对系统默认数据类型进行重定义
typedef unsigned char u8;
int i,j,N=0;
sbit dula=P2^6;
sbit wela=P2^7;
int zhhcc[8];
char code table[]={0x3f,0x06,0x5b,0x4f,
                    0x66,0x6d,0x7d,0x07,
                                        0x7f,0x6f,0x77,0x7c,
                                        0x39,0x5e,0x79,0x71}; //0~f十六个数字数组
void uart_init(u8 baud)
{
TMOD|=0X20; //设置计数器工作方式 2
SCON=0X50; //设置为工作方式 1
PCON=0X80; //波特率加倍
TH1=baud; //计数器初始值设置
TL1=baud;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1; //打开计数器
}
void delay(x)
{
  int i,j;
  for(i=x;i>0;i--)
  for(j=110;j>0;j--);
  }

void main()
{
        uart_init(0XFA);//波特率为 9600
       
        while(1)                                          //进入显示循环
                                                {        while(1)
                                                        {        P0=0xfe; wela=1; wela=0;
                                                       
                                                         P0=zhhcc[0];dula=1;dula=0;          //显示第一位
                                                         P0=0xff;
                                                         delay(5);
                                                         if(N==1)                          
                                                         break;
                                                         P0=0xfd; wela=1; wela=0;
                                                       
                                                         P0=zhhcc[1];dula=1;dula=0;P0=0xff;          //显示第二位
                                                         delay(5);
                                                         if(N==2)
                                                         break;
                                                         P0=0xfb; wela=1; wela=0;
                                                         
                                                         P0=zhhcc[2];dula=1;dula=0;P0=0xff;                 //显示第三位
                                                         delay(5);
                                                         if(N==3)
                                                         break;
                                                         P0=0xf7; wela=1; wela=0;
                                                         ;
                                                         P0=zhhcc[3];dula=1;dula=0;        P0=0xff; //显示第四位
                                                         delay(5);
                                                         if(N==4)
                                                         break;
                                                         P0=0xef; wela=1; wela=0;
                                               
                                                         P0=zhhcc[4];dula=1;dula=0;P0=0xff;         //显示第五位
                                                         delay(10);
                                                         if(N==5)
                                             break;
                                                          P0=0xdf; wela=1; wela=0;
                                                 
                                                         P0=zhhcc[5];dula=1;dula=0;P0=0xff;         //显示第六位
                                                         delay(5);
                                                         if(N==6)
                                             break;
                                                         P0=0xbf; wela=1; wela=0;
                                                 
                                                         P0=zhhcc[6];dula=1;dula=0;P0=0xff;         //显示第七位
                                                         delay(5);
                                                         if(N==7)
                                             break;
                                                         P0=0x7f; wela=1; wela=0;
                                                 
                                                         P0=zhhcc[7];dula=1;dula=0;P0=0xff;         //显示第八位
                                                         delay(5);
                                                         if(N==8){N=0;};

                                             break;
                                                        }
}
}

void uart() interrupt 4 //串口通信中断函数
{
u8 rec_data;

if(RI==1)
{  
RI = 0; //清除接收中断标志位

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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