12m晶振波特率89C52单片机怎样将波特率设置成2400

> 问题详情
设80C51单片机串行口工作于方式1,晶振频率为12MHz,定时器T1工作于方式2作为波特率发生器,要求波特率为1200b
悬赏:0&答案豆
提问人:匿名网友
发布时间:
设80C51单片机串行口工作于方式1,晶振频率为12MHz,定时器T1工作于方式2作为波特率发生器,要求波特率为1200b/s,SMOD=0,试计算T1的时间常数和波特率误差,并编写初始化程序。
您可能感兴趣的试题
1设以串行方式1进行数据传送,fosc=6MHz,波特率为2400bit/s(SMOD=1)。发送的8个数据依次存在外RAM首址4000H单元中,先发送数据长度,后发送8个数据,试编写发送子程序。2设以串行方式1进行数据传送,fosc=6MHz,波特率为2400bit/s(SMOD=1)。发送的8个数据依次存在外RAM首址4000H单元中,数据长度未知,先接收数据长度,后接收数据,试编写接收子程序,接收数据存在内RAM 50H开始的区域中。3设计一个串行方式2发送子程序(SMOD=0),甲机每隔1s(fosc=6MHz,用T0中断)从P1口读入8位数据串行发送,第9数据位作为奇偶校验位。接到乙机核对正确的回复信号(用00H表示)后,置P3.5=1(正确指示灯亮)。否则置P3.5=0(正确指示灯灭),再重发一遍,直至乙机发回正确回复信号。4编制一个串行方式2接收子程序,接收上例发送的数据,并核对奇偶校验位,接收核对正确,发出回复信号00H,存首址为2000H的外RAM中;发现错误,发出回复信号册,并等待重新接收。
我有更好的答案
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……
每天只需0.4元
选择支付方式
支付宝付款
郑重提醒:支付后,系统自动为您完成注册
请使用微信扫码支付(元)
支付后,系统自动为您完成注册
遇到问题请联系在线客服QQ:
恭喜你被选中为
扫一扫-免费查看答案!
请您不要关闭此页面,支付完成后点击支付完成按钮
遇到问题请联系在线客服QQ:
恭喜您!升级VIP会员成功
提示:请截图保存您的账号信息,以方便日后登录使用。
常用邮箱:
用于找回密码
确认密码:stc89c52(晶振12MHZ)设置19200的波特率,老是出现乱码,怎么回事,求大神指导_百度知道
stc89c52(晶振12MHZ)设置19200的波特率,老是出现乱码,怎么回事,求大神指导
是不是这个51单片机不能准确的提供19200的波特率,误差太大
我有更好的答案
TL1 = TH1;
PCON = 0x80;}推荐使用1112MHz在19200波特率下误差太大甚至9600波特率误差都很大只能在7200波特率以下运行void InitUART(void)//初始化为7200波特率{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xF7
采纳率:70%
没有的应用可用
为您推荐:
其他类似问题
波特率的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。单片机复习100题 1. 简述累加器的ACC的作用。 2. 简述MCS-51单片机的中断入口地址。 3. 简述“伪指令”与“指令”之间的区别 4. 单片机CPU与通用微机CPU有什么异同?
5. 单片机主要用途是什么?列举你所知道的目前应用较为广泛的单片机种类。 6. MCS-51单片机内部RAM可分为几个区?各区的主要作用是什么? 7. 程序状态字寄存器PSW各位的定义是什么? 8. 89C51 CPU复位后内部RAM各单元内容是否改变? 9. 简述P1口的内部结构。将P1口引脚作为输入引脚,为什么使用前一定要向P1口锁存器相应位写入“1”。 10. 指出复位后工作寄存器组R7~R0的物理地址。如果希望工作寄存器组中R0对应的物理存储单元为10H,请写系统复位后实现这一要求的指令。 11. 什么是时钟周期?什么是机器周期?什么是指令周期?89C51 CPU机器周期与时钟周期是什么关系?如果晶振频率为12MHz,则一个机器周期是多少微秒? 12. 假设某CPU含有16根地址线,8根数据线,则该CPU最多寻址能力是多少KB? 13. 在计算机里,一般具有哪三类总线?请说出各自的特征(包括传输的信息类型、单向传输还是双向传输)。 14. 计算机字长的含义是什么?80C51单片机的字长是多少? 15. 在89C51单片机应用系统中 /VPP引脚如何连接?为什么? 16. 89C52单片机内部含有哪几类存储器?各自的容量是多少? 17. 简述P1口的内部结构。为什么将P1口引脚作为输入引脚使用前,一定要向P1口锁存器相应位写入“1”。 18. 指出复位后工作寄存器组R7~R0的物理地址。 19. 如果希望工作寄存器组中R0对应的物理存储单元为10H,请写系统复位后实现这一要求的指令。 20. 说出访问下列寄存器或存储空间可以使用的寻址方式,并举例: (1)89C51系列内部数据存储器前128字节。 (2)89C52系列内部数据存储器后128字节。 21. 特殊功能寄存器。 22. 在MCS-51单片机应用系统中,外接程序存储器和数据存储器的地址空间允许重叠而不会发生冲突,为什么?外部I/O接口地址是否允许与存储器地址重叠?为什么? 23. 什么是时钟周期?什么是机器周期?什么是指令周期?89C51 CPU机器周期与时钟周期是什么关系?如果晶振频率为12MHz,则一个机器周期是多少微秒? 24. 89C51 CPU复位后内部RAM各单元内容是否改变? 25. MCS-51单片机通过什么指令读写外部数据存储器?通过什么引脚选通外部数据存储器? 26. MCS-51单片机内部RAM可分为几个区?各区的主要作用是什么? 27. 程序状态字寄存器PSW各位的定义是什么? 28. 在单片机系统中常使用哪些存储器?MCS-51存储器结构的主要特点是什么?程序存储器和数据存储器各有何不同? 29. MCS-51单片机的P0~P3四个I/O端口在结构上有何异同?使用时应注意哪些事项? 30. 为什么说单片机具有较强的位处理能力? 31. MCS-51单片机有几种复位方法?复位后,CPU从程序存储器的哪一个单元开始执行程序? 32. 指令由哪几部分组成? 33. 什么是汇编语言指令?为什么说汇编语言指令比机器语言指令更容易理解和记忆?通过什么方式可将汇编语言程序转化为机器语言程序? 34. MCS-51汇编语言中有哪些常用的伪指令?各起什么作用? 35. 汇编语言程序和汇编程序两术语含义相同吗? 36. 给出下列指令中每一操作数的寻址方式。
#23H (2) MOV
23H,A (3) MOV
23H (4) MOV
@R0 (5) INC
A 37. 位地址90H和字节地址90H及P1.0有何异同?如何区别?位寻址和字节寻址如何区分?在使用时有何不同? 38. 要访问专用寄存器和片外数据寄存器,应采用什么寻址方式?举例说明。 39. 假设内部RAM(30H)=3FH,累加器A=0FEH,R0=30H,SP=07H,PSW=00H,则执行如下指令后,各存储单元及寄存器内容是什么(假设各小题相互独立)? (1) MOV
。 (2) INC
。 (3) MOV
A, #01H (4) MOV
A, #04H ADD
A, @R0 INC
@R0, A A=
;(30H)=
。 (5) ANL
。 (6) PUSH
。 40. 输入、编译、运行下列程序段,并指出复位后和程序执行过程中SP、程序计数器PC的变化以及程序执行结束后累加器ACC、内部RAM 30H~33H单元内容。 ORG
0000H LJMP
1000H Main:
SP, #6FH MOV
R0, #30H MOV
Rl, #32H MOV
30H,#12H MOV
31H,#34H MOV
32H,#76H MOV
33H,#98H LCALL SUBl NOP ORG
2000H SUBl:
A, @R0 ADD
A, @R1 MOV
@R0,A INC
R0 RET 41. 假设程序头中含有如下变量定义伪指令。 TXDBUF
#40H BDATA
#28H (1) 请指出“MOV
R0,#TXDBUF”指令、“MOV
R0, TXDBUF”指令目的操作数的寻址方式 (2) 执行如下程序段后,内部RAM 40H~4FH单元内容是什么?28H单元内容又是什么? MOV
BDATA, #10H MOV
#XDBUF CLR
A LOOP: MOV
BDATA,LOOP END 42. MCS-51系列单片机能提供几个中断源、几个中断优先级?各个中断源的优先级怎样确定?在同一优先级中,各个中断源的优先顺序怎样确定? 43. 简述MCS-51系列单片机的中断响应过程。MCS-51单片机中断响应时间是否固定?为什么? 44. MCS-51有几个中断优先级?试通过修改IP寄存器,使串行口中断优先级最高,定时器T1的中断优先级最低。 45. MCS-51外中断有几种触发方式?一般情况下,采用哪种触发方式较好? 46. MCS-51单片机如果扩展6个中断源,可采用哪些方法?如何确定它们的优先级? 47. CPU响应中断请求后,不能自动清除哪些中断请求标志? 48. MCS-51CPU在什么时候查询中断请求标志?满足什么条件才响应? 49. 子程序和中断服务程序有何异同?为什么子程序返回指令RET和中断返回指令RETI不能相互替代? 50. 如果某一中断服务程序中没有改写工作寄存器R0~R7的指令,则进入中断服务程后,是否需要切换工作寄存器区?简述原因。 51. 综述MCS-51系列单片机定时器0、1的结构与工作原理。8051定时器作定时和计数时,其计数脉冲分别由谁提供? 52. 8051定时器的门控信号GATE为1时,定时器如何启动? 53. MCS-51子系列具有几个定时/计数器?简述定时/计数器T1的主要用途。 54. 如果系统晶振频率为12MHz,分别指出定时/计数器方式1和方式2最长定时时间。 55. 定时器/计数器0已预置为156,且选定用于模式2的计数方式,现在T0引脚上输入周期为lms的脉冲,问: (1)
此时定时器/计数器0的实际用途是什么? (2)
在什么情况下,定时器/计数器0溢出? 56. 解释下列概念: (1)并行通信、串行通信;(2)波特率;(3)单工、半双工、全双工;(4)奇偶校验。 57. 为何T1用作串行口波特率发生器时常用模式2? 若fosc=6MHz,试求出T1在模式2下可能产生的波特率的变化范围。 58. 在图(a)所示电路中,如果CPU是80C31,则复位期间和复位后LED是否发光?为什么?
59. 用DAC0832进行D/A转换时,当输出电压的范围在0~5V时,每变化一个二进制数其输出电压跳变约20mV,即输出是锯齿状的,采取何种措施可使输出信号比较平滑? 60. LED发光二极管与普通整流二极管有什么不同?LED发光二极管工作电流和导通电压范围分别是多少?液晶模块显示器LCD与LED七段数码显示器相比有何优点? 61. 状态或数码显示时,对LED的驱动可采用低电平驱动,也可以采用高电平驱动,二者各有什么特点? 62. 比较图(d)和图(e)电路的优缺点。如果LED工作电流IF为15mA,电源电压Vcc为5.0V,则图中限流电阻R如何选择(提示:主要考虑阻值和耗散功率)? 63. 根据LED数码管内部各LED二极管连接方式的不同,可将LED数码管分为几类? 64. LED数码显示器静态显示驱动方式和动态显示驱动方式各有什么优缺点? 65. 在8位LED数码管动态显示电路中,如果每位显示时间为2.5ms,则显示刷新频率为多少?如果每位显示时 3 间为2.0ms,刷新频率不低于25Hz,则最多能显示几位? 66. 矩阵式键盘如何实现中断方式? 67. 简述单片机应用系统开发的一般过程。 68. 单片机应用系统的基本设计原则是什么? 69. 单片机应用系统的干扰源主要有哪些?列举常用的软件、硬件抗干扰措施。 70. 如何迅速判别MCS-51 CPU是否工作? 71. 单片机应用系统的硬件设计包括哪些内容? 72. 单片机开发系统的作用与特点是什么? 73. 编程将内部RAM的20H单元的内容传送给外部RAM的2000H单元。 74. 编程将内部数据存储器20H~30H单元内容清零。 75. 已知A=83H,R0=17H,(17H):34H,写出下列程序段执行完后的A中的内容。 ANL
17H,A XRL
A 76. 编程查找内部RAM的32H~41H单元中是否有0AAH这个数据,若有这一数据,则将50H单元置为0FFH,否则清50H单元为0。 77. 已知单片机的晶振为12MHz,分别设计延时0.1s、1s、lmin的子程序。 78. 查找20H~4FH单元中出现00H的次数,并将查找结果存入50H单元 79. 试编程使内部RAM的20H~4FH单元的数据块按降序排列。 80. 内部RAM的20H单元开始有一个数据块,以0DH为结束标志,试统计该数据块长度,将该数据块传送到外部数据存储器7E01H开始的单元,并将长度存入7E00H单元。 81. 试编写一个用查表法查0~9字形段码的子程序,调用子程序前,待查表的数据存放在累加器A中,子程序返回后,查表的结果也存放在累加器A中。 82. 内部RAM的DATA开始的区域中存放着10个单字节十进制数,求其累加和,并将结果存入SUM和SUM+1单元。 83. MCS-51内部RAM前128字节支持哪些寻址方式?请写出用不同寻址方式将内部RAM 30H单元信息传送到累加器A的指令或程序片段;内部RAM后128字节支持哪些寻址方式?请写出将内部RAM 80H单元信息传送到累加器A的指令或程序片段。 84. 写出实现下列要求的指令或程序片段,并在仿真机上验证(假设指令代码从2000H单元开始存放)。 (1) 将内部RAM 20H单元内容与累加器A相加,结果存放在20H单元中。 (2) 将8032内部RAM 80H单元内容与内部RAM 31H单元内容相加,结果存放到内部RAM 31H单元中。 (3) 将内部RAM 20H单元内容传送到外部RAM 20H单元中。 (4) 将程序状态字寄存器PSW内容传送到外部RAM的0D0H单元中。 (5) 将内部RAM 00H~7FH单元,共128字节传送到以8000H为首址的外部RAM中。 (6) 将外部RAM 8000H~803FH单元,共64字节传送到以40H为首址的内部RAM中。 (7) 将外部RAM 8000H~807FH单元,共128字节传送到以0000H为首址的外部RAM中。 (8) 将存放在内部RAM的40H、41H和外部RAM的8000H、8001H的16位二进制数相加,结果存放在内部RAM的40H和41H单元中(假设低位字节存放在低地址中)。 (9) 如果0~9七段数码显示器对应的字模码3P,06,5B,4F,66,6D,7D,07,7E6F存放在1000H为首址的程序存储器中,写出将数字4对应的字模码输出到外部RAM 3003H单元(即扩展I/O端口地址)的程序段。 (10)
使内部RAM 20H单元的b7和b3清零,其他位不变。 (11)
使内部RAM 20H单元的b7和b3置1,b5清零,其他位不变。 (12)
将内部RAM 20H单元的b7和b3置1,b5取反,其他位不变。 (13)
将DPH寄存器的b7、b5位清零,将b2、b0位置1,其他位不变。 (14)
将存放在内部RAM 40H、41H和外部RAM 8000H、8001H的四位BCD码相加,结果存放在内部RAM 40H和41H单元中(假设低位字节存放在低地址中)。 (15)
将立即数32H传送到内部RAM 30H单元中。 (16)
将立即数32H传送到8032 CPU内部RAM 88H单元中。
4 85. 假设4位BCD码压缩存放在R3、R2中,试编写BCD减1的程序段,并在仿真机上验证。 86. 如果希望快速保护工作寄存器组,请写出将2区作为当前工作寄存器区的程序段。 87. 如果 引脚出现100~200ms低电平信号时,在P1.0引脚输出低电平,但 引脚存在尖脉冲干扰。请问应选择什么触发方式?请写出中断服务程序。 88. 如果系统的晶振频率为12MHz,利用定时/计数器T0,在P1.0引脚输出周期为100ms的方波。 89. 利用定时/计数器T2的时钟输出功能,在P1.1引脚上输出周期为10ms的方波。 90. 利用定时/计数器T2的时钟输出功能,在P1.1引脚上不断重复输出频率为450Hz,持续和停止时间均为4s的方波信号。 91. 编写与PC机串行通信程序:系统晶振频率为11.0592MHz,波特率为2400,8位数据,1位奇偶校验。 92. 8051以方式2进行串行通信,假定波特率为1200,要作奇偶验,以中断方式发送,请编写程序。 93. 假设系统晶振频率为12MHz,试利用定时/计数器T2定时中断功能,实现每25ms将内部RAM 80H~87H单元内容依次送P1口。 94. 以定时器1进行外部事件计数,每计数1000个脉冲后,定时器l转为定时工作方式。定时10ms后,又转为计数方式。如此循环不止。设fosc=6MHz,试用模式1编程。 95. 设:fosc=12MHz,试编写一段程序,功能为:对定时器T0初始化,使之工作在模式2,产生200μs定时,并用查询T0溢出标志的方法,控制P1.1输出周期为2ms的方波。 96. 请编写89C51单片机通过DAC0832产生锯齿波信号、三角波、梯形波的程序(可以为任意频率)。 97. 当图8-28的ADC0809对8路模拟信号进行A/D转换时,请编写用查询方式工作的采样程序,8路采样值存放在30H~37H单元。若采用中断方式,请再编写一段相应程序。
98. 欲利用串行口扩展四位LED七段数码静态显示器,请画出相应逻辑电路并编写其显示子程序。 99. 写出图7-21(a)所示矩阵键盘电路的扫描程序(采用定时中断检测方式,每隔50ms检测有无按键输入,系统晶振频率为6MHz)。
100. 请在图8―1的基础上,设计一个以中断方式工作的开关式键盘,并编写其中断键处理程序。51单片机UART通信[发送接收数字字母中文,控制LED亮灭] 【常用波特率、函数】
<span type="1" blog_id="1699963" userid='
分享到朋友圈
好的文章,和好友一起分享2334人阅读
嵌入式之单片机篇——UART(2)
修改了 1 中不能连续调用 字符串发送的BUG!!
/*-----------------------------------------------
名称:串口通信 修复程序1中无法连续调用字符串发送的BUG
内容:连接好串口波特率设置为9600,无奇偶校验
晶振11.0592MHz
接上串口,可以接收到自己发送的字符
------------------------------------------------*/
#include&reg52.h& //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
/*******************************************************************
请提前计算一下所选晶振能达到的最高速度,波特率不能超过最高速度
(1) 波特率加倍(SMOD=1):
Max_Baud = FOSC/12/16
(2) 波特率不加倍(SMOD=0):Max_Baud = FOSC/12/32
例如:22.1184MHz晶振,波特率加倍时,最大波特率=/16=115200
*******************************************************************/
#define FOSC
//振荡频率
#define BAUD 9600
#define SMOD 1
//是否波特率加倍
#define TC_VAL (256-FOSC/16/12/BAUD)
#define TC_VAL (256-FOSC/32/12/BAUD)
typedef unsigned char uint8;
typedef unsigned int uint16;
code const char str1[] = "The string is 来自单片机!\r\n";
code const char str2[] = "Author: Louis \r\n";
code const char str3[] = "多多指教~~\r\n";
限定一个变量不允许被改变。在一定程度上提高程序安全性和可靠性
//code 存储区间为 程序存储区
/***************函数声明*******************/
void InitUART(void);
void SendOneByte(uint8);
void SendrStr(const uint8 *ptr);
/****************主函数********************/
void main(void)
uint8 i=0;
InitUART();
while(str2[i]!='\0')
SendOneByte(str2[i++]);
SendrStr(&str1[0]);
SendrStr(&str1[0]);
/****************中断服务函数***************/
void UART_ISR(void) interrupt 4
uint8 RX_D
//只响应"接收"中断,"发送"中断来了就直接抹掉
RI = 0; //串口中断标志不能自己清除,需要手动清除
RX_Data=SBUF;
SendOneByte(RX_Data);
//串口发中断是发送完缓冲区数据之后产生
/****************串口初始化函数*************/
void InitUART(void)
TMOD = 0x20;
//定时器1,模式2工作模式
SCON = 0x50;
//串口工作模式1,允许REN
/* SCON: 模式 1,
8-bit UART, 使能接收
TH1 = TC_VAL;
TL1 = TH1;
PCON = 0x80;
//发送速率加倍
/**************串口发送字符函数*************/
void SendOneByte(uint8 c)
//禁止中断,让串口安心工作啊
while(!TI);
//等待发送完毕
//清TI中断
//打开中断
/**************串口发送字符串函数*************/
void SendrStr(const uint8 *ptr)
for(;*ptr!='\0';ptr++)
SendOneByte(*ptr);

我要回帖

更多关于 单片机晶振与波特率 的文章

 

随机推荐