外部中断外部中断通常是指来自计算机外围设备的中断请求,如:键盘中断、打印机中断、计时器中断等。 外部中断一般通过io的高低电平(在寄存器中配置有下降沿等)来触发io中断函数并进行响应
计时器中断计时器中断是指计数器在晶体振动的作用下向上计数到一定值后,溢出产生中断,进入中断服务函数
用单片机80c51
共有5个中断源2个优先级http://www.Sina.com/http://www.Sina.com/http://www.Sina
默认优先级为INT0 T0 INT1 T1串行端口中断。 默认优先级为INT0 T0 INT1 T1串行端口中断
IP寄存器很少用于设定优先顺序
80c51单片机中,p3.2控制的外部中断0 p3.3控制的外部中断1
p3.4控制计时器0 (外部输入) p3.5控制计时器1 (外部输入) )。
1.外部中断0
注意,中断相关寄存器包括(IE、IP、TCON和SCON ),它们都可以进行位寻址
寄存器TMOD不能位地址。 只能做字节地址
2.定时器0
例如,外部中断0:首先配置TCON寄存器的IT0,选择外部中断发生的条件是向下、低电平发生是向上、下降沿发生,然后,TCON寄存器的IE0请求发生中断是因为IE0是硬件因为用硬件处理,所以写程序的时候不用管理。 然后,到达IE寄存器,控制EX0以打开外部中断0,并且EA是总中断。
中断服务程序的编制
几点必须注意:
1中断函数没有返回值,也不能有参数。
2函数名称后跟关键字interrupt,表示这是中断服务函数。
3在关键字interrupt后加一个中断号,表示此中断服务函数正在为该中断服务。
中断服务函数的形式如下。
使用void函数名称(中断编号----函数体)计时器0运行间隔计时器。 中断程序体系结构我们c语言可以写中断号:从中断优先级的顶部到底部从0到5
例如,外部中断0中断服务程序
void函数名(interrupt 0{ )程序)最后计时器中断.3.外部中断1
51单片机有两个定时/计数器T0和T1,是16位加法计数器,由下8位TLx和上8位THx两个寄存器构成,最大计数值为65535计数脉冲。
该1加法计数器的计数脉冲源有2个:
1系统时钟振荡器输出的12分频。
输入到2 T0或T1端子的外部脉冲信号。
每当接收到计数脉冲时,使计数器递增1,且当计数值全部累计为1时(8位255、13位8191和16位65535 ),当输入计数脉冲时,计数器溢出为零计时器/计数器以计时器模式运行时,表示经过了计时器时间,动作和计数模式时,表示计数值已满。
假设单片机的外部晶体振荡为12MHz,12分钟后输入计数器的计数脉冲为1MHz,即每脉冲周期为1us。 因此,计时器t016位操作模式的最大定时时间为65535us和65.5ms。 经过10ms的定时器后,计数器不能从0开始计数,必须提供计数初始值。 怎么计算这个初始值?
要计时10ms,计数10000脉冲,相当于计数器的值达到65535。 那么,开始计数的地方就是计数初始值。
65535 - 10000=55535=0xd8ef
将通过该计算得到的初始值写入TH0和TL0寄存器即可:
TH0=0xd8; 或th0=(65535-10000 )/256;
TL0=0xef; 或TL0=(65535-10000 ) 256;
计时器中断的想法
1设定动作模式,即对TMOD寄存器进行编程。
2给计算技术的初始值,即THx和TLx寄存器赋值。
3使能定时器/计数器中断,即ET0或ET1集1。
4打开总中断,即EA=1。
5计时器,即启动TR0或TR1集1。
中断服务函数一般需要以下编程。
1如果不是自动重新安装模式,则必须重新代入THx和TLx。
2定时到达间隔进行逻辑处理。