中断注意问题

上传人:豆浆 文档编号:11368395 上传时间:2017-10-13 格式:DOC 页数:13 大小:52KB
返回 下载 相关 举报
中断注意问题_第1页
第1页 / 共13页
中断注意问题_第2页
第2页 / 共13页
中断注意问题_第3页
第3页 / 共13页
中断注意问题_第4页
第4页 / 共13页
中断注意问题_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《中断注意问题》由会员分享,可在线阅读,更多相关《中断注意问题(13页珍藏版)》请在金锄头文库上搜索。

1、void init(void) P3_3=0; EX0=1; IT0=1; EA=1; void extern_int1(void) interrupt 0 using 0 P3_3=!P3_3; 你用的是 0 还是 1 中断? linbizhong 2009-08-15 16:58:44 中断初始化,中断入口,中断返回 888168g 2010-06-18 12:37:29 中断初始化,工作方式,中断入口,中断返回 ,优先级别。 888168g 2010-06-18 12:46:54 interrupt 表示中断优先级,using 表示所用工作寄存器组。 interrupt x using

2、y 跟在 interrupt 后面的 xx 值得是中断号,就是说这个函数对应第几个中断端口,一般在 51 中 0 外部中断 0 1 定时器 0 2 外部中断 1 3 定时器 1 4 串行中断 其它的根据相应得单片机有自己interrupt 表示中断优先级,using 表示所用工作寄存器组。interrupt x using y 跟在 interrupt 后面的 xx 值得是中断号,就是说这个函数对应第几个中断端口,一般在 51 中 0 外部中断 0 1 定时器 0 2 外部中断 1 3 定时器 1 4 串行中断 其它的根据相应得单片机有自己的含义,实际上 c 在编译的时候就是把你这个函数的入口

3、地址放到这个对应中断的跳转地址 using y 这个 y 是说这个中断函数使用的那个寄存器组就是 51 里面一般有 4个 r0 - r7 寄存器,如果你的终端函数和别的程序用的不是同一个寄存器组则进入中断的时候就不会将寄存器组压入堆栈返回时也不会弹出来 节省代码和时间外部中断 INT0void intsvr0(void) interrupt 0 using 1定时/计数器 T0void timer0(void) interrupt 1 using 1外部中断 INT1void intsvr1(void) interrupt 2 using 1定时/计数器 T1void timer1(void)

4、 interrupt 3 using 1串口中断void serial0(void) interrupt4 using 1单片机的 C 语言HNBCC 培训电话:13712969808一,中断的概念中断:当计算机执行正常程序时 ,系统中出现某些急需处理的异常情况和特殊请求 .中断的执行:当 CPU 正在执行某一程序时,若有中断响应,则 CPU 转而执行中断服务程序, 当中断服务程序执行完毕后,CPU 自动返回原来的程序继续执行.中断服务程序的语句写法与函数的写法完全相同,所以, 中断服务程序也是函数 ,只在函数头部有不同(后续).中断服务程序的执行与函数的执行不同:函数的执行是有固定位置的,

5、是通过函数的调用来完成的;而中断服务程序的执行是不固定位置的 ,只要有中断响应 ,在一 定条件下都会去响应中断,即执行中断服务程序.二,中断源中断源:任何引起计算机中断的事件 ,一般一台机器允许有许多个中断源 .8051 系列单片机至少有 5 个可能的中断(8052 有 6 个, 其它系列成员最多可达 15 个).下面以 5 个中断源为例.8051 单片机的五个中断源是:外部中断请求 0,由 INT0(P3.2)输入;外部中断请求 1,由 INT1(P3.3)输入;片内定时器/计数器 0 溢出中断请求;片内定时器/计数器 1 溢出中断请求;片内串行口发送/接收中断请求 .三,与中断有关的寄存器

6、1,定时/计数器控制寄存器 TCONTF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0D7 D6 D5 D4 D3 D2 D1 D0. IT0,IT1:外部中断 0,1 触发方式选择位,由软件设置;1下降沿触发方式,INT0/INT1 管脚上高到低的负跳变可引起中断;0电平触发方式, INT0/INT1 管脚上低电平可引起中断. IE0,IE1:外部中断 0,1 请求标志位;当外部中断 0,l 依据触发方式满足条件,产生中断请求时由硬件置位 (IE0/IE1=1);当 CPU 响应中断时由硬件清除(IE0/IE1= 0). TR0,TR1: 启动定时 /计数器 0,1. TF0,T

7、F1:定时器/计数器 0,1(T/C0,T/C1)溢出中断请求标志;当 T/C0,1 计数溢出时由硬件置位(TF0/TF1=l);当 CPU 响应中断由硬件清除(TFO/TF1=0).三,与中断有关的寄存器2,串行口控制寄存器 SCONTI RID7 D6 D5 D4 D3 D2 D1 D0. RI:串行口接收中断请求标志位;当串行口接收完一帧数据后请求中断,由硬件置位(RI=1)RI 必须由软件清0. TI:串行口发送中断请求标志位 .当串行口发送完一帧数据后请求中断,由硬件置位(TI=1)TI 必须由软件清0.三,与中断有关的寄存器3, 中断允许寄存器 IEEA ET2 ES ET1 EX

8、1 ET0 EX0D7 D6 D5 D4 D3 D2 D1 D0. EX0,EX1:外部中断 0,1 的中断允许位 ;l外部中断 0,1 开中断;0 外部中断 0,1 关中断. ET0,ET1:定时器/计数器 0,1(T/C0,T/C1)溢出中断允许位 ;1T/C0,T/Cl 开中断;0T/C0,T/Cl 关中断. ES:串行口中断允许位;1串行口开中断;0串行口关中断. ET2:定时器/计数器 2(T/C2)溢出中断允许位;1T/C2 开中断;0T/C2 关中断. EA:CPU 开/关中断控制位.1CPU 开中断.0CPU 关中断.8051 复位时,IE 被清0,此时 CPU 关中断, 各中

9、断源的中断也都屏蔽三,与中断有关的寄存器4,中断优先级寄存器 IPPS PT1 PX1 PT0 PX0D7 D6 D5 D4 D3 D2 D1 D0. PX0,PX1:外部中断 0,1 中断优先级控制位 ;1高优先级;0低优先级. PT0,PT1:定时器/计数器 0,1 中断优先级控制位;1高优先级;0低优先级. PS:串行口中断优先级控制位;1高优先级;0低优先级.8051 复位时,IP 被清0,5 个中断源都在同一优先级 ,其内部优先级的顺序从高到低为: 外部中断 0(IE0)定时器/计数器 0(TF0)外部中断 1(IE1)定时器/计数器 1(TF1)串行口中断(RI+TI)四,中断响应

10、8051 的 CPU 在每个机器周期采样各中断源的中断请求标志位,如果没有下述阻止条件,将在下一个机器周期响应被激活了的最高级中断请求:1.CPU 正在处理同级或更高级的中断;2.现行机器周期不是所执行指令的最后一个机器周期;3. 正在执行的是 RETI 或是访问 IE 或 IP 的指令.CPU 在中断响应后完成如下的操作:1.硬件清除相应的中断请求标志;2.执行一条硬件子程序,保护断点 ,并转向中断服务程序人口3. 结束中断时执行 RETI 指令 ,恢复断点, 返回主程序.8051 的 CPU 在响应中断请求时 ,由硬件自动形成转向与该中断源对应的服务程序入口地址,这种方法为硬件向量中断法.

11、五,中断服务程序的入口地址编号 中断源 人口地址0 外部中断 0 0003H1 定时器/计数器 0 000BH2 外部中断 1 0013H3 定时器/计数器 1 001BH4 串行口中断 0023H各中断服务程序入口地址仅间隔 8 个字节,编译器在这些地址放入无条件转移指令跳转到服务程序的实际地址.六,中断服务程序的语法规则中断服务程序的语法规则如下:函数的返回值 函数名(参数) interrupt n using m函数体;对中断程序而言,函数的返回值和参数一般为 void.interrupt n 中 n 的取值为 031 的常数, 不允许用表达式,表示中断向量的编号.using m 中 m

12、 的取值为 03 的常数,不允许用表达式, 表示内部 RAM 中的工作寄存器.七,中断说明中断不允许用于外部函数,它对函数目标代码影响如下 z当调用函数时,SFR 中的 ACC,B,DPH,DPL 和 PSW(当需要时)入钱;.如果不使用寄存器组切换,甚至中断函数所需的所有工作寄存器都入钱 ;.函数退出前,所有的寄存器内容出钱;函数由 8051 的指令 RETI终止 .中断服务程序使用的任何程序也使用同一寄存器组.八,中断例子#include reg51.hunsigned char status;bit flag;void service_int() interrupt 2 using 2

13、flag=1;status=P1;void main(void)IP=0x04; IE=0x84;for(;)if(flag)switch(status)case 0: break;case 1: break;case 2: break;case 3: break;default: ;flag=0;图见书中 P148习题试设计满足下列要求的电路图:1 单片机采用 89C51,时钟 11.0592MHz;2 有 4 个指示灯表示状态;3 外接 12 位 A/D 芯片 AD574;4 有 4 * 4 的键盘;5 有字符型 LCD(画成插座形式 ,12Pin 插座,管脚接法见书 P253);6 有串

14、行接口与计算机连接;7 设置 8 位二进制的地址,地址范围可表示为 0255;8 外接 EEPROM.定时器/计数器(T/C)8051 系列单片机至少有两个 16 位内部定时器/ 计数器,8052 有三个定时器/计数器,其中有两个是基本定时器/计数器是定时器 /计数器.它们既可以编 程为定时器使用,也可以编程为计数器使用.若是计数内部晶振驱动时钟,它是定时器; 若是计数,8051 的输入管脚的脉冲信号, 它是计数器.当 T/C 工作在定时器时,对振荡源 12 分频的脉冲计数,即每个机器周期计数值加 1,计数率=1/12f osc.例当晶振为 12MHz 时,计数率=1000kHz, 即每 1s

15、 计数值加 1.当 T/C 工作在计数器时,计数脉冲来自外部脉冲输入管脚 T0(P3.4)或 T1(P3.5), 当 T0 或 T1脚上负跳变时计数值加 1.识别管脚上的负跳变需两个机器周期 ,即 24 个振荡周期.所以 T0或 T1 脚输入的可计数外部脉冲的最高频率为 1/24fosc,当晶振为 12MHZ 时,最高计数率为500kHz,高于此频率将计数出错.一,与 T/C 有关的 SFR1,计数寄存器 Th 和 TLT/C 是 16 位的,计数寄存器由 TH 高 8 位和 TL 低 8 位构成.在特殊功能寄存器(SFR) 中,对应 T/C0 为 TH0 和 TL0;对应 T/C1 为 TH1 和 TL1.定时器/计数器的初始值通过 TH1/TH0 和 TL1/TL0 设置.2,定时器/计数器控制寄存器 TCON前面已介绍.二,与 T/C 有关的 SFR3,T/C 的方式控制寄存器 TMOD. C/T:计数器或定时器选择位;1为计数器;0为定时器. GATE :门控信号;1 T/C 的启动受到双重控制,即要求 TR0/TR1 和 INT0/INT1 同时为高;0 T/C 的启动仅受 TR0 或 TR1 控制.GATE C/T M1 M0 GATE C/T M1 M0D7 D6 D5 D4 D3 D2 D1 D0T/C1T/C0三,四种工作方式M1 M0 方式 功

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号