- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例5.13 利用定时中断抗干扰。 单片机应用系统开发完成后,在工作现场由于系统本身的噪声干扰、电磁干扰、过压干扰以及环境干扰等原因,往往会出现“死机”现象。解决的办法有多种,这里介绍利用定时中断防止“死机”的方法。 设计思想是先估算系统主程序执行一次循环所需时间t,然后把定时器T0或T1的定时时间取得比t稍大,并在主程序中包含对定时器的初始化程序,这样,如果系统主程序运行正常,因定时时间比t大,故在定时时间还未到时,主程序已完成一次循环,T0或T1被重新初始化,使定时时间常数重新置入其中,故不会产生溢出中断。若应用系统由于干扰失控,主程序不能正常循环运行,T0或T1不能及时初始化,则经过时间t后,T0或T1必将产生溢出中断,转入中断服务程序,这表明程序运行出现故障,用户可安排中断服务程序跳转回主程序需要的地址,以便重新使主程序运行。 图5-15 扩展多中断源接口电路 将T1设置为工作方式2,晶振频率为6MHz,防止“死机”的程序如下: SETB ET1 ;T1开中断 SETB PT1 ;T1中断设置为高优先 SETB EA ;CPU 开中断 MOV TL1,#data ;T1赋初值(根据t) MOV TH1,#data MOV TMOD #20H ;T1工作方式2,定时 SETB TR1 ;启动T1计数 ORG 001BH ;T1溢出中断入口地址 POP A ;丢弃PC压入堆栈的错误地址 POP A MOV A,#data ;将需转去的主程序地址(2个字节)送入栈顶 PUSH A MOV A,#data PUSH A RETI ;中断返回 例5.14 编程实现一台主机和多台(255台)从机之间进行通信。 解 多机通信需要符合一定的通信协议。为叙述方便,在此定如下几条协议: (1)系统中255台从机地址分别为0~FFH。 (2)地址FFH是对所有从机都起作用的一条控制命令:命令各从机恢复SM2=1的状态。 (3)主机发送的控制命令代码为: 00 ── 要求从机接收数据块; 01 ── 要求从机发送数据块; 其他 ── 非法命令。 (4)数据块长度:16个字节。 (5)从机状态字格式为: 其中,若ERR=1,从机接受到非法命令; 若TRDY=1,从机发送准备就绪; 若RRDY=1,从机接收准备就绪; 下面给出的串行口通信程序是按如下思路编制的。主机程序部分以子程序的方式给出,要进行串行通信时,可以直接调用这个子程序。主机在接受或发送完一个数据块后可返回主程序,完成其他任务。从机部分以串行口中断服务程序的方式给出。若从机未做好接受或发送数据的准备,就从中断程序中返回,在主程序中做好准备。故主机在这种情况下不能简单地等待从机准备就绪,而要重新与从机联络,使从机再次进入串行口中断。系统可采用定时器1作为波特率发生器,也可采用固定的波特率。主机和从机中对定时器初始化的程序及定时器中断程序从略。图5-16为多机通信主机子程序框图,图5-17为多机通信从机中断服务程序框图。 图5-17 多机通信从机中断服务程序框图 图5-16 多机通信主机子程序框图 (1)主机串行通信子程序 入口参数: R0 ── 主机发送的数据块首址; R1 ── 主机接受的数据块首址; R2 ── 被寻址从机地址; R3
文档评论(0)