任务要求
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<16;i++){ SBUF = Tx_Buf[i]; //SUBF作为发送缓冲器 while(!TI); // 等特数据传送 (TI发送中断标志) TI = 0; // 清除数据传送标志 } delay(1000); } } /************************************************** 延时处理程序 **************************************************/ void delay(unsigned int i) { unsigned char j; for(i; 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<16;i++){ if(RI) //RI接受中断标志 { RI=0; //清除RI接受中断标志 Rx_Buf[i]=SBUF ; //SUBF作为接受寄存器 } } delay(1000); } } /************************************************** 延时处理程序 **************************************************/ void delay(unsigned int i) { unsigned char j; for(i; i > 0; i--) for(j = 200; j > 0; j--) ; }
上一篇:《初学者C51自学笔记》之74HC573芯片及发光二极管闪烁
下一篇:51单片机之串口波特率配置
推荐阅读最新更新时间:2024-11-12 08:54
设计资源 培训 开发板 精华推荐
- 使用 Microchip Technology 的 TCL1587 的参考设计
- ADA4627-1ARZ带保护同相放大器典型应用电路
- AM1D-1212S-RZ 12V 1 瓦 DC-DC 转换器的典型应用
- 使用 Analog Devices 的 LT1171HVIQ#PBF 的参考设计
- 爱墓式635-USB升7V/9V/12V基于TPS61088
- LT1725IGN 演示板、48Vin 至 5Vout 2A 模块、隔离式反激式、1x2 占位面积
- 使用 NXP Semiconductors 的 MCR20AVHM 的参考设计
- LT8631EFE 12V、1A、降压转换器的典型应用电路
- ADA4858-3ACPZ-RL 直流耦合、单电源运算放大器电路的典型应用电路
- 具有 PWM 调光功能的 NSV45090JDT4G LED 灯串的典型应用