单片机c语言编程实例:电子表
单键可调电子表:主要学习编程方法。
外部中断应用,中断嵌
解:电子表分为工作状态和调整状态。平时为工作状态,按键不足一秒,接键为换屏‘S’。按键超过一秒移位则进入调整状态‘C’,而且调整光标在秒个位开始。调整状态时,按键不足一秒为光标移动‘M’,超过一秒则为调整读数,每0.5秒加一‘A’,直到松键;如果10秒无按键则自动回到工作状态‘W’。
如果有年、月、日、时、分、秒。四联数码管可分三屏显示,显示格式为“年月.”、“日.时.”、“分.秒”,从小数点的位置来区分显示内容。(月份的十位数也可以用“-”和“-1”表示)。
enum status = { Work, Change, Add, Move, Screen } //状态牧举
//计时和调整都是对下面时间数组Time进行修改
unsigned char Time[12]={0,4, 0,6, 1,0, 0,8, 4,5, 3,2}; //04年06月10日08时45分32秒
unsigned char cursor = 12; //指向秒个位,=0时无光标
unsigned char YmDhMs = 3; //指向“分秒”显示 ,=0时无屏显
static unsigned char sts = Work;
/*
如果cursor不为0,装入DisBuf的对应数位,按0.2秒周期闪烁,即设一个0.1秒计数器S01,S01为奇数时灭,S01为偶数时亮。
小数点显示与YmDhMs变量相关。
*/