1、中断源及其中断标志
外部中断0:中断号为0;中断标志为IE0;中断服务程序入口为0003H;
定时器0:中断号为1;中断标志为TF0;中断服务程序入口为000BH;
外部中断1:中断号为2;中断标志为IE1;中断服务程序入口为0013H;
定时器1:中断号为3;中断标志为TF1;中断服务程序入口为001BH;
串行口:中断号为4;中断标志为R1或T1;中断服务程序入口为0023H;
2、中断允许控制
CPU对中断系统所有中断及其某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。IE的状态可通过程序由软件设定。某位设定为1,相应的中断源中断允许;某位设定为0,相应的中断源中断屏蔽。CPU复位时,IE各位清0,禁止所有中断。IE各位定义如下:
EX0:外部中断0中断允许位;
ETO:定时器0中断允许位;
EX1:外部中断1中断允许位;
ET1:定时器1中断允许位;
ES:串行口中断允许位;
EA:CPU中断允许位(总开关);
3、中断函数在数码管动态显示中的运用
在用延时函数或定时器进行数码管动态显示时,数码管的显示即便消影后任然可能会闪烁,而利用中断函数,可以解决这个问题。下面做个让数码管从0000~9999依次显示的程序。
程序:
#include sbit ADDR0=P1^0; sbit ADDR1=P1^1; sbit ADDR2=P1^2; sbit ADDR3=P1^3; sbit ENLED=P1^4; unsigned char code ledseg[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char ledbuf[4]= {0xff,0xff,0xff,0xff}; unsigned char flag = 0; unsigned int n = 0; unsigned char i = 0; void main() { unsigned int sec = 0; ADDR3=1; ENLED=0; TMOD = 0x01; //对定时器0及其中断进行初始化 TH0 = 0xfc; TL0 = 0x67; TR0 = 1; EA = 1; ET0 = 1; while(1) { if(flag == 1) { flag = 0; sec++; ledbuf[0] = ledseg[sec%10]; //对数码管的显示进行初始化 ledbuf[1] = ledseg[sec/10%10]; ledbuf[2] = ledseg[sec/100%10]; ledbuf[3] = ledseg[sec/1000%10]; } } } void InterruptTime0() interrupt 1 //中断源为定时器0,当TF=1时进入,响应后TF自动清0 { TH0=0xfc; TL0=0x67; n++; if(n>=1000) { n=0; flag = 1; } P0=0xff; switch(i) //数码管的显示 { case 0:ADDR0=0;ADDR1=0;ADDR2=0;i++;P0=ledbuf[0];break; case 1:ADDR0=1;ADDR1=0;ADDR2=0;i++;P0=ledbuf[1];break; case 2:ADDR0=0;ADDR1=1;ADDR2=0;i++;P0=ledbuf[2];break; case 3:ADDR0=1;ADDR1=1;ADDR2=0;i=0;P0=ledbuf[3];break; default:break; } } 在这里,利用中断函数使数码管每1ms显示一次数值,当flag=1时,时间达到1s,再改变数码管的数值。这样一来,显示数值这一步骤是在改变数值之前做的,所以数码管的显示会更加的清晰。
上一篇:51单片机——数码管动态显示
下一篇:51的单片机学习——定时器
推荐阅读最新更新时间:2024-11-17 10:17
设计资源 培训 开发板 精华推荐
- LTC3615HUF 单路低纹波 6A 输出同步降压型 DC/DC 转换器的典型应用
- 黄淮学院立创杯电子设计大赛-1001990A-陈学智
- LTC1590 的典型应用 - 双路串行 12 位乘法 DAC
- ADR425 超精密、低噪声、2.500 Vout XFET 电压基准和高压浮动电流源的典型应用
- RD-400,使用 FAN7382 100W、CCCV、多通道 LED 电源的参考设计,适用于工业照明应用
- AM1D-4805SH30-RZ 5V 1W DC/DC 转换器的典型应用
- MCP1726EV,评估板在两个电路中具有 MCP1726、1A 低静态电流 LDO 稳压器
- LTC3859IUHF 高效宽输入范围双路 5V/8.5V 转换器的典型应用电路
- 最简单的 ESP8266 烧录架
- 红外接收4路USB输出