- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章 mcs51单片机内部资源及编程
void int02() { unsigned char i; P30=1; for (i=0;i255;i++) ; P30=0; P16=0;P16=1; } 【例5-10】利用定时/计数器中断抗干扰防死机。 利用定时/计数器防止死机的思想是:先估算出系统主程序执行一次循环所需要的时间t1,然后设置定时/计数器的定时时间为t2,其中t2略大于t1。在主程序的循环部分包括对定时/计数器初始化,这样,如果系统正常运行,则由于定时时间比t2比t1大,所以定时还未到时,主程序已完成一次循环,定时器被重新初始化,定时时间始终不会到,定时/计数器不会溢出中断;只有当系统受干扰死机,主程序不能被重新执行,定时/计数器不会被重新初始化,则经过时间t2后,定时时间到,溢出中断,中断后由硬件实现转到中断服务程序。如果用户在中断服务程序中安排回到主程序中的命令,那么系统可以重新运行主程序,这就达到了防止死机的目的。 设选择定时/计数器T0,方式2,定时。方式控制字为02H,初值为YYH,由于C语言处理不方便,只编写了汇编程序: 主程序: MAIN:MOV TMOD,#20H MOV TL0,#YYH MOV TH0,#YYH SETB ET0 SETB PT0 SETB EA SETB TR0 …… 功能程序段 …… LJMP MAIN 中断服务程序: ORG 000BH AJMP INTT0 INTT0:POP ACC POP ACC MOV A,#MAINADRL PUSH ACC MOV A,#MAINADRH PUSH ACC RETI 三.方式2和方式3 方式2和方式3时都为9位异步通信接口,接收和发送一帧信息长度为11位,即1个低电平的起始位,9位数据位,1个高电平的停止位。发送的第9位数据放于TB8中,接收的第9位数据放于RB8中。TXD为发送数据端,RXD为接收数据端。方式2和方式3的区别在于波特率不一样,其中方式2的波特率只有两种:fosc/32或fosc/64,方式3的波特率与方式1的波特率相同,由定时/计数器T1的溢出率和电源控制寄存器PCON中的SMOD位决定,即: 波特率=2SMOD×(T1的溢出率)/32。 在方式1时,也需要对定时/计数器T1进行初始化。 1.发送过程 方式2和方式3发送的数据为9位,其中发送的第9位在TB8中,在启动发送之前,必须把要发送的第9位数据装入SCON寄存器中的TB8中。准备好TB8后,就可以通过向SBUF中写入发送的字符数据来启动发送过程,发送时前8位数据从发送数据寄存器中取得,发送的第9位从TB8中取得。一帧信息发送完毕,置TI为1。 2.接收过程 方式2和方式3的接收过程与方式1类似,当REN位置1时也启动接收过程,所不同的是接收的第9位数据是发送过来的TB8位,而不是停止位,接收到后存放到SCON中的RB8中,对接收是否有判断也是用接收的第9位,而不是用停止位。其余情况与方式1相同。 5.3.4 串行口的编程及应用 一.串行口的初始化编程 1.串行口控制寄存器SCON位的确定。 根据工作方式确定SM0、SM1位;对于方式2和方式3还要确定SM2位;如果是接收端,则置允许接收位REN为1;如果方式2和方式3发送数据,则应将发送数据的第9位写入TB8中。 2.设置波特率。 对于方式0,不需要对波特率进行设置。 对于方式2,设置波特率仅须对PCON中的SMOD位进行设置。 对于方式1和方式3,设置波特率不仅须对PCON中的SMOD位进行设置,还要对定时/计数器T1进行设置,这时定时/计数器T1一般工作于方式2—8位可重置方式,初值可由下面公式求得: 由于: 波特率=2SMOD×(T1的溢出率)/32 则: T1的溢出率=波特率×32/2SMOD 而T1工作于方式2的溢出率又可由下式表示: T1的溢出率=fosc/(12×(256-初值)) 所以: T1的初值=256 - fosc×2SMOD /(12×波特率×32) 二.串行口的应用 通常用于三种情况:利用方式0扩展并行I/O口;利用方式1实现点对点的双机通信;利用方式2或方式3实现多机通信。 1.利用方式0扩展并行I/O口 MCS-51单片机的串行口在方式0时,当外接一个串入并出的移位寄存器,就可以扩展并行输出口,当外接一个并入串出的移位寄存器时,就可以扩展并行输入口。 【例5-4】用8051单片机的串行口外接串入并出的芯片CD4094扩展并行输出口控制一组发光二极管,使发光二极管从左至右延时轮流显示。 CD4094是一块8位的串入并
原创力文档


文档评论(0)