51单片机之232串口实现-任务要求Fosc为6MHz,定时器T1为工作模式2

Jenny ·
更新时间:2024-11-10
· 640 次阅读

Warning:写作不易,请勿转载,感谢。

51单片机之232串口实现-任务要求Fosc为6MHz,定时器T1为工作模式2任务要求发送机(甲机)接受机(乙机) 任务要求

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--) ; }
作者:琰婧



t1 51单片机 串口 单片机

需要 登录 后方可回复, 如果你还没有账号请 注册新账号