|
/****A单片机程序***/
#include<reg52.h>
#include"type.h"
uint8 SigNum[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//CC共阴极数码管0123456789
void Delay1s(void)
{
uint8 h,i,j,k;
for(h=5;h>0;h--)
for(i=4;i>0;i--)
for(j=116;j>0;j--)
for(k=214;k>0;k--);
}
/*********************************************************
串口初始化函数 参数:无 返回值:无
*********************************************************/
void USART_Init(void)
{
TMOD = 0x20;//将定时器1设置为方式2,8位自动重装模式
SCON = 0x50;//串口控制寄存器,使串口工作在方式1,并且接受使能
PCON = 0x00;//该寄存器第一位为串口波特率倍速控制位,这里不倍速
TH1 = 0xfd; //11.0592M晶振,波特率9600
TL1 = 0xfd;
TR1 = 1;//开启定时器1
ES = 1;//开启串口中断
EA = 1;//开启总中断
}
/******************************************************************
发送一个字节函数 输入参数:dat 返回值:无
******************************************************************/
void Send_Dat(uint8 dat)
{
SBUF = dat;
while(TI==0);
TI=0;
}
void main()
{
uint8 a=0;
USART_Init();
while(1)
{
Send_Dat(SigNum[a]);
Delay1s();
a++;
if(a==10)
{
a=0;
}
}
}
void USART_INTR() interrupt 4 //串口中断
{
if(RI)
{
RI = 0;
P1 = SBUF;
}
}
/*********B单片机程序*************/
#include<reg52.h>
#include"type.h"
uint8 LedScan[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//LED从上到下依次变化
uint8 Num=0;//该变量用于计算接收到的数据的次数
/*void Delay1s(void)
{
uint8 h,i,j,k;
for(h=5;h>0;h--)
for(i=4;i>0;i--)
for(j=116;j>0;j--)
for(k=214;k>0;k--);
}*/
/*********************************************************
串口初始化函数 参数:无 返回值:无
*********************************************************/
void USART_Init(void)
{
TMOD = 0x20;//将定时器1设置为方式2,8位自动重装模式
SCON = 0x50;//串口控制寄存器,使串口工作在方式1,并且接受使能
PCON = 0x00;//该寄存器第一位为串口波特率倍速控制位,这里不倍速
TH1 = 0xfd; //11.0592M晶振,波特率9600
TL1 = 0xfd;
TR1 = 1;//开启定时器1
ES = 1;//开启串口中断
EA = 1;//开启总中断
}
/******************************************************************
发送一个字节函数 输入参数:dat 返回值:无
******************************************************************/
void Send_Dat(uchar dat)
{
SBUF = dat;
while(TI==0);
TI=0;
}
void main()
{
uint8 a=0;
USART_Init();
while(1)
{
if(Num==10)//接受9之后让LED变化一次
{
Num=0;
Send_Dat(LedScan[a]);
a++;
if(a==8)
{
a=0;
}
}
}
}
void USART_INTR() interrupt 4 //串口中断
{
if(RI)
{
RI = 0;
P1 = SBUF;
Num++;
//Delay1s();
}
}
全部资料下载地址:
单片机间串口通信.rar
(65.63 KB, 下载次数: 90)
|
|