对于按键需要连续扫描3次得到状态序列011时,keydown才置1,如果采用数字电路中的同步时序逻辑电路的设计思想,可以假设为串行数据检测器,只有出现011才置1。
首先进行逻辑抽象,假设键盘按键输入scankey为X,输出结果keydown为Y。
设没有1输入以前的状态为a,输入一个1后为b,连续输入2个1时为c。
所以得:Q1*=X &(Q0 | Q1)
Q0*=X & Q0ˊ & Q1ˊ
Y =X & Q0
又因为D触发器的驱动方程为Q*=D,所以有,
Q0* =D0
Q1* =D1
得相应代码:
D1=Curr_Scankey & (Q0 | Q1);
D0=Curr_Scankey & (~Q0) & (~Q1);
keydown=Curr_Scankey & Q0;
Q0=D0;
Q1=D1;