基于定时器的倒计时程序设计
关于变量声明的问题
unsigned char //0~255
unsigned int //0 ~ (2^16)-1
模拟题中,关于Timer_1000ms的类型,大于了255,不能用unsigned char!! 这个问题编译不报错
倒计时功能的实现问题
Timer_1000ms的倒计时标志位的用法逻辑
if(++Timer_1000ms == 1000)//这段放在了定时器0中断服务函数中(1ms)
{
Timer_1000ms = 0;//循环进行1000ms,相当于1s减去一次倒计时
Timer_Count--;//Timer_Count为需要倒计时的时间
if(Timer_Count == 255)Timer_Count = 0;//unsigned char类型防止超出
}
数组的用法逻辑_1
针对问题:“设置参数在 15-30-60 之间切换” 模拟题要求倒计时参数的切换
unsigned char Set_Data[3] = {15,30,60};//设置界面参数数组
unsigned char Set_Data_Index = 1;//设置参数索引值 默认为 30s
整体解题思路细节总结
解题顺序
先按功能从易到难,注意“复位”功能的特殊性(后面实现),细节可先忽略(黄色框内)
题目里的坑
“设置参数以1s为周期闪烁” 注意周期的实现是0~0.5s亮 0.5~1s灭
演示效果
基于定时器的倒计时程序设计