STC89C51单片机串口通讯 ,发送数据数码管不显示,大佬们帮忙看看代码哪里出问题了?

#include <reg51.h>
#include <intrins.h>
int num=0;

void timer1init();
void delay(char k)
{

while(k--);
}

void display(int i)
{

static int wei;
char code a[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

switch(wei)
{
case 0: P2=0x7F;P0=a[i/100]; break;
case 1: P2=0xBF;P0=a[i/10%10];break;
case 2: P2=0xDF;P0=a[i%10]; break;
}

wei++ ;
if(wei==3)
wei=0;
delay(2);

}
void timer0init()
{
EA=1;
ET0=1;
TR0=1;
// REN=1;
TMOD |=0x01;
TH0=0xed;
TL0=0xff;
}
void UARTInit()
{
EA=1;
ES=1;
SM0=0;
REN=1;
TR1=1;
TMOD |=0x01;
TH1=0xfd;
TL1=0xfd;
}

void main()
{

timer0init();
UARTInit();
while(1)
{

}
}

void int1() interrupt 1
{
TH0=0xed;
TL0=0xff;

display(num);
}

void UART() interrupt 4
{
if(RI)
{
num=SBUF;
RI=0;
}
}

STC89C51单片机串口通讯 ,发送数据数码管不显示,是因为串口初始化程序错误,设置串口方式1,要写成一行,别分开写,那样写是错的。
写成SCON=0x50;
TMOD方式也错了,串口用定时器T1的方式2。应该是
TMOD|=0x20;


你这个程序,T0和串口初始化写成了两个子程序,最好不要这么写程序,直接在主程序中合并写一起,更简单,别养成这种写程序的习惯,实在不值得提倡。

追问

多谢大佬,我感觉您是真的强

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-08-19
上protues仿真下。电路图放上来。P2输入,P0输出?
确认硬件电路没问题?