51单片机流水灯中断.doc
- 152****6621个人认证 |
- 2020-10-29 发布|
- 19.51 KB|
- 2页
// 51 单片机控制 8 个 LED灯,左右循环移动, 当外部中断 0 引脚的按键,第一次按下时, 停在当前位置;第二次按下时,继续向下执行
//***************************************************************************** *****************************************
注释:当主函数中在执行左右流水点亮 LED灯的时候,按键按下(这是第一次按下,即奇数次), CPU 暂时
中断当前点亮灯的工作,转去处理中断程序( c=1),处理完后,再返回原来中断的地方继续原来的工作,
// 因为这时候 C 为 1, while(c); 为真,为死循环状态,即是 LED 亮的状态停在当前位置;当按键按下(这是第二次按下,即偶数次)
//CPU 中断当前状态,转去处理中断程序( c=0),处理完后,再返回原来中断的地方继续原
来的工作,
这时候 C 为 0, while(c); 为假,则程序继续向下执行。
//***************************************************************************** ******************************************
#include<>
#include<>// 控制左右移的头文件
void delay(int);// 声明延时函数
unsigned char i=0,a=0,b=0,c=0;//a 为判断按键按下时奇数次还是偶数次 void main()
{
P2=0xfe;
IT0=0;// 低电平有效
EX0=1;// 开外部中断 0
EA=1; // 开总中断
while(1)
{
for(i=0;i<7;