设80C51单片机串行口工作于方式1,晶振频率为12MHz,定时器T1工作于方式2作为波特率发生器,要求波特率为1200b/s,SMOD=0,试计算T1的时间常数和波特率误差,并编写初始化程序。
第1题
设80C51单片机串行口工作于方式1,晶振频率为12MHz,定时器T1工作于方式2作为波特率发生器,要求波特率为1200b/s,SMOD=0,试计算T1的时间常数和波特率误差,并编写初始化程序。
第3题
A、80C51串行口只有异步方式而无同步方式,因此,只能进行串行异步通信
B、80C51串行口发送和接收使用同一个数据缓冲寄存器SBUF
C、双机通信时要求两机的波特率相同
D、偶校验是指给校验位写入一个0或1,以使得数据位和校验位中1的个数为偶数
第4题
【填空题】1、可控秒表(上位机控制)的设计,根据电路补充程序 要求:可控秒表的设计(上位机控制)上位机发送’0’启动秒表工作,秒表每间隔1S,显示加1,当加到60时,数码管显示0,从0开始继续加1。/*---------------第一部分:预处理命令----------*/ include <reg51.h> //包含头文件reg51.h /*----------第二部分:定义全局变量或常量--------*/ sbit com1=P3^2; sbit com2=P3^3; unsigned dm[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管对应段码 unsigned char c1,miao=50; /*---------第三部分:函数原型申明及函数定义-----*/ void ys(unsigned int t) { while(t--); } void zdcsh()//中断初始化程序的编写 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; //设置T0为工作方式1,定时器使用;定时器T1工作方式2,定时器使用,此时定时器T1作为串口的波特率发生器来使用。 //定时器T0中断允许 //定时器T0关闭工作 //串口波特率为9600b/s TH1=0xfd; //定义串行口工作于方式1,不接收 =0x00;//波特率不倍增 //接收允许 //启动定时器T1工作,定时器T1作为串口的波特率发生器来使用。 ES=1;EA=1;//串口中断允许,总中断允许 } void ()//显示函数 { //选中1号数码管 P2=dm[ ];//显示变量miao的十位 ys(1000); P2=0xff;//关闭显示,消影 com1=0;com2=1;//选中2号数码管 P2= [miao%10];//显示变量miao的个位 ys(1000); //关闭显示,消影 } void main { zdcsh();//调用中断初始化函数 while(1) { } } void tozd( ) //T0中断函数 { TH0=(65536-50000) ;//重新设置T0计数初值高8位,定时时间50ms TL0=(65536-50000) ;//重新设置T0计数初值低8位,定时时间50ms //5万us计算器加1 if( )//1S时间到 { c1=0; miao++; if( ) //当秒计数到60,回到0 } } } void ckzd() 4//串口中断类型号为4 //软件清除中断标志位 if(SBUF== ) //串口接收到字符‘0’启动秒表工作 if( =='1') //串口接收到字符‘1’秒表暂停工作 if(SBUF '2') { a=0;}//串口接收到字符‘2’秒表暂停工作,并显示清0 }
第5题
A、A. 51 内部有一个可编程的全双工串行通信接口
B、B.51 的串行接口可以作为通用异步接收 /发送器,也可以作为同步移位寄存器
C、C.串行口中设有接收控制寄存器 SCON
D、D.通过设置串口通信的波特率可以改变串口通信速率
第6题
A、A. T1的作用是产生用以串行收发节拍控制的通信时钟脉冲,也可用 T0 进行替换
B、B.发送数据时,该时钟脉冲的下降沿对应于数据的移位输出
C、C.接收数据时,该时钟脉冲的上升沿对应于数据位采样
D、D.通信波特率取决于 T1 的工作方式和计数初值,也取决于 PCON的设定值
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!