Warning:写作不易,请勿转载,感谢。
Fosc为6MHz,定时器T1为工作模式2,串口工作模式1,波特率为4800。
1、通过波特率计算定时器T1时间常数初值。
2、编写甲机发送程序,工作于查询或者中断方式,传送30H——3FH中的十六个字节。
3、编写乙机接收程序,接受十六字节数据放在40H——4FH中。
/*****************************************************
*任务要求
*Fosc为6MHz,定时器T1为工作模式2,串口工作模式1,波特率为4800。
*1、通过波特率计算定时器T1时间常数初值。
*2、编写甲机发送程序,工作于查询或者中断方式,传送30H——3FH中的十六个字节。
*3、编写乙机接收程序,接受十六字节数据放在40H——4FH中。
*
*项目名:甲机
*作者:刘子琰
*时间:2020年4月4日11:34:59
******************************************************/
#include
#include
typedef unsigned char u8;
void delay(unsigned int i); //函数声明
u8 i=0;
u8 *Tx_Buf= (u8*)0x30;
void main (void) {
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
TMOD|= 0x20; //定时器1的工作方式2
PCON|= 0x80; //波特率提高一倍
TH1 = 0xFA; //TH1=256-(6000000/12)*(2/(32*4800))
TL1 = 0xFA; //因为是定时器模式2,所以高8位和低八位要相同
TR1 = 1; //开启定时器1
ES = 1; //开串口中断
EA = 1; // 开总中断
while(1)
{
for(i=0;i 0; i--)
for(j = 200; j > 0; j--) ;
}
接受机(乙机)
/*****************************************************
*任务要求
*Fosc为6MHz,定时器T1为工作模式2,串口工作模式1,波特率为4800。
*1、通过波特率计算定时器T1时间常数初值。
*2、编写甲机发送程序,工作于查询或者中断方式,传送30H——3FH中的十六个字节。
*3、编写乙机接收程序,接受十六字节数据放在40H——4FH中。
*
*项目名:乙机
*作者:刘子琰
*时间:2020年4月4日11:34:59
******************************************************/
#include
#include
typedef unsigned char u8;
void delay(unsigned int i); //函数声明
u8 i=0;
u8 *Rx_Buf= (u8*)0x40;
void main (void) {
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
TMOD|= 0x20; //定时器1的工作方式2
PCON|= 0x80; //波特率提高一倍
TH1 = 0xFA; //TH1=256-(6000000/12)*(2/(32*4800))
TL1 = 0xFA; //因为是定时器模式2,所以高8位和低八位要相同
TR1 = 1; //开启定时器1
ES = 1; //开串口中断
EA = 1; // 开总中断
while(1)
{
for(i=0;i 0; i--)
for(j = 200; j > 0; j--) ;
}