对按键键值的确定:行线(输出)是KEY_H1 KEY_H2 KEY_H3,列线(输入)是KEY_L1 KEY_L2,KEY_L3。行线由GPE口的PE1 PE2 PE3控制,列线由PE0 PC6 PC7控制,当KEY_H3对应的PE3口输出低电平时,按键S7按下,则KEY_L1输入为0,键值为PE3位低时的值|PE0自定义的值(如PE3=0x07(00000111),PE0=0x10,则键值为0x07|0x10=0x17),PE2为低则PE2=0x0b(00001011),PE1为低PE1=0x0d(00001101).
如何扫描得到键值?
1、先在行线上输出0,检测列线是否有为0的
2、如果列线没有为0的,说明没有按键被按下;如果列线有为0的,说明有按键被按下,这时就需要判断是哪个键被按下
3、判断哪个键被按下时,要依次使行线输出0,首先行线1输出0(即输出0x0d),此时检测列线有没有0,如果有(假设是列线2输入0),说明输出0的行线与输入为0的列线的交节点的按键被按下了(根据假设列线2为0,说明行线1和列线2相交的按键被按下了,这个键值的确定参考第一段);如果没有0,说明第一行的按键没有被按下的,此时就要使行线2输出0,进而执行如上判断,行线3同理。
看门狗在使用前要进行初始化(包括 使能看门狗 设置看门狗装载值等),为了使程序可控,要适时进行喂狗操作。一些按键等操作属于中断,在处理完后,注意要清除中断(否则,容易出现当按住某个键不放手时,一直处理这个按键对应的操作。当按键放开时,输入的I/O口置1;按下时,输入的I/O口清零)
定时器装载值的确定: 定时的时间t=装载值/系统时钟频率,如定时1min时,系统时钟频率如果为16MHZ,那么装载值为960000000,t的单位为S,1min=60s