网站首页 > 技术教程 正文
这张图第一眼看过去,可能会让人觉得头皮发麻,但稍微想一下,其实并不复杂。
这里以定时器中断T0为例。先看
定时器(也就是计数器)T0到达PT0H之前,先要经过TF0,开关ET0和开关EA。事实上,TF0也是一个开关,那么,为了让定时器T0的中断顺利到达PT0H,这三个开关就必须都闭合。
为什么说TF0也是一个开关呢?注意到TF0所在的那一列,一共有8位,这8位刚好可以用一个寄存器来保存和控制,这个寄存器就叫做定时器控制寄存器:
图3和TF0所在的那一列不是完全相同,我们暂且不管。这个TF0其实是定时器0的溢出中断标志位 ,当T0从初值开始加1计数到产生溢出时,由硬件使TF0置1,也就是说,TF0等于1的时候(相当于这个开关接通),表示T0(一个8位寄存器)这个定时器(计数器)已经由8个0通过加1计数变成了8个1,再加1将产生溢出。这个时候就会引起CPU硬件复位,让T0重新变成8个0。那么,TF0等于1的作用其实相当于把T0这个寄存器重新置0,当然,重新置0之后这个开关又重新断开。
再看ET0所在的那一列。这一列同样由一个寄存器来控制,叫做中断允许控制寄存器IE:
那么,将ET0这个开关闭合,就只要将寄存器IE中的那一位置1就可以了。ET0置1以后,就相当于定时器T0所引起的操作已经被CPU允许了。
再看图1中EA所在的那一列。这一列的所有开关要么全断开,要么全闭合。全断开的时候,CPU不响应任何中断;全闭合的时候,CPU响应全部中断。所以,EA叫做中断允许控制位。至此,图1中左边的三个开关已经解释清楚了,那么右边的呢?
右边的更简单了。我们注意到,图1中一共有六个不同的中断源:定时器T0,T1和T2,外中断0和外中断1,还有一个串口中断。这六个不同的中断源要是同时产生中断请求怎么办呢?这个时候就有一个优先级的问题,那么
优先级就由PT0H和PT0这两位来设置:
也就是说,六个不同的中断源中的任何一个,都可以通过这两位设置成0到3中的任何一个优先级。再看图1中任何一个优先级的左边
是不是都有6根连线?
通过上述解释,图1就可以这样简单理解:
一个中断源如果想得到CPU的响应,就必须先闭合左边的三个开关,再按照被设定的优先级顺序进行响应。
是不是很简单?
当定时器T0中断经过左边三个开关以及优先级设定后,到达图7的位置以后,这个时候就要把定时器T0的中断服务程序的入口地址放到CPU的PC寄存器里边以便执行这个中断程序。
最后以一个简单的定时器程序来说明:
MOV TMOD,A ; 将工作方式控制字写入TMOD
MOV TL0, #9CH ; 送初值
MOV TH0, #9CH ; 送重装初值,这个程序的前三句是设定定时器T0的初值,可以不管
SETB ET0 ; 图1中的ET0开关闭合,允许定时器T0中断
SETB EA ; 图1中EA开关闭合,CPU允许全部中断
SETB TR0 ; 启动定时器T0,这一句和图1中的TF0开关闭合不同,可以这样理解:TF0开关 闭合是让计数器T0重新变成0,这个过程是自动进行的;而计数器T0重新变成0 以后,要重新开始计数,TR0置1就是启动这个过程。
HERE: SJMP HERE ; 循环等待,当计数器T0没有变成全1的时候重复执行这个指令,就是 空转
; 定时器T0的中断服务程序
CTC0: 当计数器T0变成全1的时候 ,将 CTC0这个中断程序的入口地址送人PC寄存 器
CPL P1.7
这个程序的作用是在P1.7引脚输出周期为200 μs的方波,所以中断程序只有一句,就是对P1.7引脚的电压不断进行取反操作。
上面程序的编写思路是这样的:主程序中设置好中断发生的所有条件,即把该闭合的开关闭合,然后启动定时器,等待定时器计数,当定时器计数未满时,主程序空转;当计数器满了以后,相当于图1中最左边的那个开关TF0闭合,从而将中断程序的入口地址CTC0送入PC让CPU执行,并同时将计数器清0。
当中断程序执行完成以后(执行了一遍CPL P1.7指令),CPU又回到主程序的空转指令
HERE: SJMP HERE ;继续等待,这个时候因为计数器已经重新清0并已经开始重新计数(定时器只要启动一次),并且TFo这个开关已经重新断开,所以主程序就在那里等待计数器下一次计满溢出,如此周而复始。
- 上一篇: 近百张自动化原理动态图,看懂的都是高手!
- 下一篇: 经典,制冷系统原理的动态图,制冷人必看
猜你喜欢
- 2024-11-25 运动控制系统
- 2024-11-25 非常全面的汽车原理动图归纳,看完对发动机原理了解了不少
- 2024-11-25 防抖!自适应光学的由来
- 2024-11-25 得知机器系统原理,带你行走挖掘天下
- 2024-11-25 最全面的楼宇自控(BA)系统监控原理图,CAD格式
- 2024-11-25 图解发动机知识,发动机八大系统工作原理,一起来了解发动机
- 2024-11-25 水处理系统基本原理
- 2024-11-25 液压系统是什么原理,为何通过很小的力产生很大的力?
- 2024-11-25 「干货分享」伺服、步进、变频三大控制要点详解
- 2024-11-25 经典,制冷系统原理的动态图,制冷人必看
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)