欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4446|回復: 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空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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; //清除接收中斷標志位

回復

使用道具 舉報

地板
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;
        }
}
回復

使用道具 舉報

板凳
ID:43372 發表于 2012-7-28 16:33 | 只看該作者
還是一樣啊
回復

使用道具 舉報

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

你把i定義成unsigned char 試試,以前我也遇到過這樣的事情,

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表