在51单片机上实现串口通信代码
#include<reg52.h>
sbit wela = P2^7;
sbit Led1 = P1^0;
sbit dula = P2^6;
#define uchar unsigned char
uchar count1,Second,num;
uchar code SMGwei[] = {0xfe,0xfd,0xfb};
uchar code SMGduan[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void time0init();
void display(uchar);
void UARTInit();
void UARTInit()
{
EA = 1;
ES = 1;
SM0 = 0; SM1 = 1;
REN = 1;
TR1 = 1;
TMOD |=0x20;
TH1 = 0XFD;
TL1 = 0XFD;
}
void main()
{
UARTInit();
time0init();
while(1);
}
void time0init()
{
EA = 1;
ET0 = 1;
TR0 = 1;
TMOD |= 0X01;
TH0 = 0xee;
TL0 = 0x00;
}
void display(uchar num)
{
static uchar wei;
P0 = 0xff;
wela = 1;
P0 = SMGwei[wei];
wela = 0;
switch(wei)
{
case 0: dula = 1; P0 = SMGduan[num/100]; dula =0; break;
case 1: dula = 1; P0 = SMGduan[num%100/10]; dula =0; break;
case 2: dula = 1; P0 = SMGduan[num%10]; dula =0; break;
}
wei++;
if(wei == 3)
{
wei = 0;
}
}
void time0() interrupt 1
{
TH0 = 0xee;
TL0 = 0x00;
display(num);
}
void UART() interrupt 4
{
uchar count;
if(RI)
{
num = SBUF;
RI = 0;
count = num;
SBUF = ++count;
}
if(TI)
{
TI = 0;
}
}