8个LED灯组成流水灯,两个中断优先级,一个小程序
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include<reg52.h>
- #include<intrins.h>
- #define uint unsigned int //对数据类型进行声明定义
- #define uchar unsigned char
- sbit k3=P3^2;//定义按键K3
- #define led P1//定义P2口是led
- sbit k4=P3^3;//定义按键K4
- void delay(uint z)//延时函数
- {
- uint x,y;
- for(x=5;x>0;x--)
- for(y=z;y>0;y--);
- }
- void Int0Init()//设置INT0
- {
- IT0=1;//跳变沿出发方式(下降沿)
- EX0=1;//打开INT0的中断允许。
- EA=1;//打开总中断
- }
- void Int1Init()//设置INT1
- {
- IT1=1;//跳变沿出发方式(下降沿)
- EX1=1;//打开INT1的中断允许。
- EA=1;//打开总中断
- }
- void main()//主函数
- { PX0=1;PX1=0;
- Int1Init();//设置外部中断1
- Int0Init();//设置外部中断0
- }
- void Int0() interrupt 0//外部中断0的中断函数
- { int i,u;
- led=0x01;
- for(u=5;u>0;u--)
- {
- for(i=0;i<7;i++)
- {
- led=_crol_(led,1);
- delay(5000);//延时消抖
- }
- }
- }
- void Int1() interrupt 2//外部中断1的中断函数
- { int i,u;
- led=0x80;
- for(u=5;u>0;u--)
- {
- for(i=0;i<7;i++)
- {
- led=_cror_(led,1);
- delay(5000);//延时消抖
- }
- }
- }
复制代码
所有资料51hei提供下载:
中断.zip
(44.19 KB, 下载次数: 7)
|