用C 语言编写程序实现通过按键使LED 灯周期闪烁(2010-02-24 21:12:44) 标签:循环闪烁周期led 灯按键杂谈 一、设计题目 二、程序功能: 开机复位后,LED0 到 LED7 全部点亮,所有 LEDPort 持续 2S 后熄灭,然后等待按键,按0 键LED7 以 0
8S 周期闪烁,按1 键LEDPort 以 1S 周期闪烁
三、总体设计思想 用中断方式实现定时器的定时,然后通过键盘中断程序实现通过对按键的操作来实现相应的周期闪烁
在我编写的实验程序中我用到了定时器中断和外部中断
程序共分为两个模块,一个为定时器模块,一个为键盘中断程序模块,在主函数中,首先实现所有 LEDPort 点亮,然后通过中断方式实现定时 2S,在定时器 num==20 时,设定全局变量为标志位 flag=1,然后再主函数中设定条件,通过标志位的变化实现所有 LEDPort 持续 2S 后熄灭
然后进入循环,等待按键,在按键中断服务程序中使用switch 语句实现通过改变 num1 的值来实现LED7的闪烁周期
设定标志位 b=0,在主函数中使用if 语句通过判断 b 的值来改变 LED7 的亮灭情况,同时相应的 b 值会取反
四、程序具体实现 实验要求开机复位后,LED0到LED7全部点亮2S后熄灭
在主函数中使用LEDPort=0x00;这条语句实现所有灯都亮,使用中断方式实现定时器定时 2S,因为实验要求 20ms 溢出,所以设定 num=100,在定时器中断服务程序中使用if 语句判断条件,当 num 加到 100,也就是说 2S 时间到时,执行 flag=1;语句(先设定全局变量 flag=0)
然后在主函数中使用while 语句规定只有在 flag=0 时才执行所有 LEDPort 点亮的操作
2S 时间到后,所有灯熄灭
然后进入 while 循环,等待用户按