高手们,能不能帮我看看这个程序,谢谢了
时间:10-02
整理:3721RD
点击:
#include<reg52.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsignend int
void init();
void display(uchar);
uchar code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F};
uchar flag,i,a,u;
void main()
{
init();
while(1)
{
display(u);
if(flag==1)
{
ES=0;
SBUF=a;
while(!TI);
TI=0;
ES=1;
flag=0;
}
}
}
void init()
{
u=0;
TMOD=0x20;
PCON|= 0x80;
//TH1 = 0xFD; //baud*2 /* reload value 19200、数据位8、停止位1。效验位无 (11.0592)
TH1 = 0xF3; // //baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M)
TL1 = 0xF3;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
void display(uchar value)
{
P0=LED7Code[value];
}
void ser() interrupt 4
{
RI=0;
u=SBUF;
a=u;
flag=1;
}
主要是想利用上位机通过串口调试助手发送一个0~9的数,然后再用一个数码管显示出来,该数码管是阳极的。结果开始时可以显示0,但是当我给非零数时,数码管上的等就全亮了,求解答啊~~谢谢~~~
#include<stdio.h>
#define uchar unsigned char
#define uint unsignend int
void init();
void display(uchar);
uchar code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F};
uchar flag,i,a,u;
void main()
{
init();
while(1)
{
display(u);
if(flag==1)
{
ES=0;
SBUF=a;
while(!TI);
TI=0;
ES=1;
flag=0;
}
}
}
void init()
{
u=0;
TMOD=0x20;
PCON|= 0x80;
//TH1 = 0xFD; //baud*2 /* reload value 19200、数据位8、停止位1。效验位无 (11.0592)
TH1 = 0xF3; // //baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M)
TL1 = 0xF3;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
void display(uchar value)
{
P0=LED7Code[value];
}
void ser() interrupt 4
{
RI=0;
u=SBUF;
a=u;
flag=1;
}
主要是想利用上位机通过串口调试助手发送一个0~9的数,然后再用一个数码管显示出来,该数码管是阳极的。结果开始时可以显示0,但是当我给非零数时,数码管上的等就全亮了,求解答啊~~谢谢~~~
PCON|= 0x80;
这是波特率加倍。注意下。