中断系统的应用
0911020209 张广磊
中断系统的应用
设计要求:
主程序要将P0口进行花样显示,显示规律为 (1)8个LED依次正向依次点亮;
(2)中断(INT0)时使8个LED闪烁5次; (3)中断(INT1)时使8个LED反向依次点亮;
一、系统分析与设计原理:
本次课程设计是利用中断的基本原理,通过外部中断控制8个LED灯闪烁。其中中断的概念是在单片机中,当CPU在执行程序时,由于单片机内部或外部的原因引起的随机事件要求CPU暂停正在进行的程序,而转向执行一个用于处理该随机事件的程序,处理完后又返回被中断的程序断点处继续执行的过程。我在本次设计中主要使用了外部中断,外部中断是由外部原因(如打印机、键盘、控制开关、外部故障等)引起;由两个固定引脚输入到单片机内。 INT0——外部中断0请求中断信号输入端,P3.2的 第二功能。
INT1——外部中断1请求中断信号输入端,P3.3的 第二功能。 在使用时具有以下特点: Ⅰ.可以提高CPU的工作效率 Ⅱ.实现实时处理 Ⅲ.处理故障
二、硬件设计
将P0口进行花样显示,显示规律为 (1)8个LED依次正向依次点亮;
(2)中断(INT0)时使8个LED闪烁5次;
(3)中断(INT1)时使8个LED反向依次点亮;
1、 中断系统的应用所用的元件 单片机AT89CC51 瓷片电容CAP 30pF 晶振CRYSTAL 12MHz 电解电容CAP-ELEC 排阻RESPACK-8 发光二级管LED-GREEN 发光二级管LED-BLUE 电阻RES 按钮BUTTON 发光二级管LED-RED 发光二级管LED-YELLOW
2、硬件原理图
三、程序流程图
开始 中断设置 开中断 发生中断 N Y INT0接地 N Y 调用中断子程序1 调用中断子程序2 LED正向闪烁 结束 (图一)
中断子程序1开始 保护现场 LED闪烁五次 恢复现场 中断返回 (图二) 中断子程序2开始 保护现场 LED反向闪烁 恢复现场 中断返回 (图三)
四、程序设计
#include\
#define uint unsigned int #define uchar unsigned char
const tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,}; const tab1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,};
const tab2[]={0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00}; void delay() {
uint i,j;
for(i=0;i<256;i++) for(j=0;j<256;j++) {;} }
void int0()interrupt 0 {
uchar i;
for(i=0;i<10;i++) { P0=tab2[i]; delay();} }
void int1()interrupt 2 {
uchar i;
for(i=0;i<8;i++) { P0=tab1[i]; delay();} }
void main(void) {
EX0=1; IT0=1; EX1=1; IT1=1; EA=1; while(1)
{ uchar x;
for(x=0;x<8;x++) {P0=tab[x]; delay();} } }