|
單片機間串口通信.png (27.27 KB, 下載次數: 78)
下載附件
2017-5-31 03:11 上傳
/****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)
2017-5-31 03:12 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|