来源:中国一卡通网 作者:中国一卡通收录 发布时间:2012-03-21 09:07:51 字体:[大 中 小]
摘 要: 监控程序负责系统中全部硬件和软件资源的分配、调度工作,是系统设计中的一个重要组成部分。它提供用户接口, 使用户获得友好的工作环境, 使计算机获得很高的效率和高度的自动化。
表1 键语状态表
对于每个按键, 可以用2个变量描述其特征:FNKYC = 功能性键码(functional keycode),用来代替每一按键的实际键码编码。功能相同的按键可以赋予相同的FNKYC 值, 例如一切数字键的FNKYC值为1。各按键的FNKYC值如表2所列。
表2中,各按键的FNKYC 值NUMB=数。
表2 按键的FNKYC值对照表
数字键所对应的NUMB值就是该键所规定的数字, 例如, [3] 的NUMB为3;[GHz] [MHz] [kHz] [Hz] 规定为10、11、12、13;其他键的NUMB值统一规定为0。
2.2.4 建立状态索引表
根据状态表可以建立状态索引表,状态索引表为两级表。其中,第一级状态索引表中为每一状态的转移命令;第二级状态索引表中,为该状态下按下某一键后进入的次态和执行的子程序号。
如图3所示, 系统共有7 种不同的状态,可以在内存的一块连续空间中存储这7 种状态的特征,这就是第一级状态索引表。而对应于每一状态的相关参数可以用下面几个变量来描述。
① ACTN: 行动子程序号码。它指出当系统处于某一状态时所应执行的行动。 ② NEXST: 下一个状态(NEXT STATE)。它指出当某一FNKYC 与FNKYT 相符时, 系统应进入哪一个状态。
③ FNKYT: 状态表中所列的功能性键码。将根据实际按下的键的FNKYC 值, 查找状态表中是否有一个与之相符的FNKYT值。
这3个参量就建立了第二级状态索引表。该系统的状态索引表如图4所示。
图4 状态索引表
2.2.5 程序设计流程
现在可以设计键语分析程序。首先,要有一个识键程序来识别所按下的按键,从所获得的实际键码中求出其对应的FNKYC 和NUMB 值, 这可以利用查表法或适当的算法得到;然后,根据当前的状态PREST在第一级状态索引表中得到对应当前状态的第二级索引表的入口地址,在第二级状态索引表中将FNKYC与表中的FNKYT逐项比较,当二者相同时得到对应该按键的下一个状态NEXST, 以及所对应的行动ACTN; 随后, 把这个NEXST 值替换为当前状态PREST。
如果FNKYT为0时始终没有与FNKYC对应的FNKYT,就意味着该FNKYT是一个非法键, 应该不予理睬; 反之, 则是有效键, 程序就转移到相应的子程序去执行。具体设计流程如图5所示。
图5 程序设计流程
3 结论
用状态法进行多义键的设计,有以下几方面的优点:
①当系统的功能发生改变时, 主控程序的结构不变, 只需对状态表进行修改。
② 翻译、解释按键程序和执行子程序完全分离,避免了两者之间的相互交叉和混淆。
③ 应用一张状态表, 统一处理任何一组按键和状态的组合, 化繁为简, 降低了程序设计的难度, 增强了程序的可读性。