本帖最后由 yumpie 于 2011-9-7 23:00 编辑
这是个电子钟程序,功能比较复杂。需要精确计时、数码管扫描显示、扫描键盘等操作。因此,采用计时器中断来计时,每10ms产生一个中断,为时间计数器加1。主程序循环检查时间计数器,当计数器数值大于100时,秒加1,计数器减100。这样通过中断能够严格产生10ms计数,即主循环检查计数器时数值大于100,也只会产生局部误差,不造成累计误差。以下给出了主程序流程:
void main()
{
init();
//初始化
while(1)
{
scanbtn(); //扫描键盘状态
updatetime(); //更新时间
showled(); //设置数码管显示内容
desplaynum(); //显示数码管
delay(3); //延时,保证数码管显示效果
}}
|