3、串口测试数据发送程序

#include
#define uchar unsigned char
#define uint unsigned int

uchar Tx_Data[2];//全局变量,存放两位需发送的数据
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴

sbit P2_0=P2^0;//数码管位选,十位
sbit P2_1=P2^1;//数码管位选,个位

sbit P1_0=P1^0;//发送数据后,指示灯显示

void Tx_UARTData(uchar Data0,uchar Data1);
void display(uchar D0,uchar D1);
void delay(uint delaytime)
{
uint j;
//TMOD=0X02; //T0定时器,方式2,自动重装初值
TL0=0X9C; //每次0.1ms(晶振12Mz)
TH0=0X9C;
TR0=1; //启动T0
for(j=delaytime;j>0;j--)
{
while(!TF0);
TF0=0; //溢出标志清零
}
TR0=0;
}
void Init()//串口初始化
{
//TMOD = 0x20; //定时器1,方式2
TH1 = 0xFD;
TL1 = 0xFD; //波特率9600,晶振12Mz
SCON = 0x40; //串口方式1,允许接收
PCON = 0x00; //SMOD=0
TR1 = 1; //启动定时器1
}
void Tx_UARTData(uchar Data0,uchar Data1)
{
uchar i;
Tx_Data[0]=Data0;
Tx_Data[1]=Data1;
for(i=0;i<2;i++)
{
SBUF=Tx_Data[i];
while(!TI); //等待数据发送完
P1_0=1;
TI=0;
delay(20);//延时2ms,等待发送下一个数据
}
}
void main()
{ uchar k;
P1_0=0;
TMOD = 0x22;//T0定时器,方式2,用于延时;定时器1,方式2,用于设置波特率
Init();
for(k=0;k<2;k++)
{
Tx_UARTData(1,3);
}
P2=1;
while(1)
{
display(1,3);
}
}


void display(uchar D0 ,uchar D1 )
{
P2_0=0;//显示十位
P0=table[D0];
delay(20);//延时2ms
P2_0=1;

P2_1=0;//显示个位
P0=table[D1];
delay(20);//延时2ms
P2_1=1;

}

相关文档
最新文档