中断:停下来正在做的事,去做别的事。CPU终止正在执行的程序,转而去做中断信号发生的程序,执行完此处程序,回到原位置。
中断源:MCS-51单片机共有五个位置可以产生中断信号:外部中断INT0和INT1,定时器/计数器T0和T1,串行中断。
中断优先级:当有多个中断源向CPU发生信号时,处理中断需要优先级的设置。外部中断INT0优先级最高,串行中断优先级最低。需要设置IP寄存器。
中断源寄存器:TCON和SCON。TCON主要包含了外部中断触发方式和外部中断请求标志。当IT0、IT1为0,则是电平触发方式(低电平有效);为1时,负跳变触发方式。IE0、IE1在中断发出请求后,置为1.中断完成后,自动清零。
中断允许寄存器:IE,IE寄存器包含了总开关、外部中断、串行口中断、定时器中断等内容。
中断优先级控制寄存器:IP。对应位置为1的话,高优先级;为0,低优先级。
-----之前实现跑马灯都需要设定一个延时函数,现在有了定时器、中断,不需要设定延时函数
- 用定时器T0的中断方式实现跑马灯控制
- #include<reg52.h>
- sbit D1=P2^0;
- void main()
- {
- char A;
- EA=1;
- ET0=1;
- TMOD=0x01;
- TH0=(65536-46083)/256;
- TL0=(65536-46083)%256;
- TR0=1;
- A=0xfe;
- D1=A;
- while(1);
- }
- void Time(void) interrupt 1 using 0
- {
- char A;
- A=A<<1;
- if (A !=0xff)
- {
- A=A|1;
- }
- else
- A=0xfe;
- D1=A;
- TH0=(65536-46083)/256;
- TL0=(65536-46083)%256;
- }
复制代码
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|