/*
encoding:utf-8
name:led-simple2
function:
1.上电复位后,全部LED不亮。
2.当按下S2并弹起后,按D1-D7的顺序依次从上到下点亮LED。
3.当按下S3并弹起后,按D7-D1的顺序依次从下到上点亮LED。
4.当按下S4并弹起后,全部灯熄灭;再次当按下S4并弹起后,全部灯点亮。
author : https://www.mrskye.cn
*/
#include<reg51.h>
#include<intrins.h>
sbit LE=P2^5;
unsigned char n; //全局循环次数
unsigned char flag = 0; //启动标志位
void delay(unsigned int i) //延迟函数
{
unsigned int j;
unsigned char k;
for(j=i;j>0;j--)
{
for(k=125;k>0;k--);
}
}
void service_int0(void) interrupt 0
{
flag = 1;
}
void main()
{
//中断服务初始化
IE = 0x81; //开启中断服务
TCON = 0x1; //设置中断触发方式
P1=0xff; //复位关闭全部LED
while(1)
{
if(flag)
{
switch (P2&0xf)
{
case 0xe: //S2
{
P1=0xfe; //D0
delay(2500); //D0亮时间
for(n=0;n<7;n++) //循环8-1次
{
P1=_crol_(P1,1);//循环左移
delay(2500);
}
P1=0xff; //复位关闭全部LED
break;
}
case 0xd: //S3
{
P1=0x7f; //D7
delay(2500); //D7亮时间
for(n=0;n<7;n++) //循环8-1次
{
P1=_cror_(P1,1);//循环右移
delay(2500);
}
P1=0xff; //复位关闭全部LED
break;
}
case 0xb: //S4
{
P1=~P1; //取反
break;
}
/*
case 0x7: //S5
{
while(P2&0xf==0x7f); //判断按键状态
for(P1=0x0;;P1--)
{
if(P2==0x7f)break; //再次按下退出跑马灯
delay(1000);
}
break;
}
*/
default: break;
}
flag = 0;
}
}
}
C51单片机的示例-课程实验-LED-simple2-中断-内含源码和说明书.zip
版权申诉
100 浏览量
2024-05-13
23:50:41
上传
评论
收藏 144KB ZIP 举报
![avatar](https://profile-avatar.csdnimg.cn/f62fbb2c17a9404795551a60e3b1502a_weixin_32393347.jpg!1)
小码蚁.
- 粉丝: 2670
- 资源: 4521
最新资源
- 课程大作业基于python实现的单目双目视觉三维重建源码(95分以上).zip
- 使用matplotlib库绘制简单图表的例子.rar
- 九阴真经OL资源解包工具
- python-leetcode面试题解之第307题区域和检索.zip
- python-leetcode面试题解之第305题岛屿数量II.zip
- python-leetcode面试题解之第304题二维区域和检索.zip
- python-leetcode面试题解之第303题区域和检索.zip
- python-leetcode面试题解之第299题猜数字游戏.zip
- python-leetcode面试题解之第298题二叉树最长连续序列.zip
- python-leetcode面试题解之第296题最佳的碰头地点.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)