如果让我我写这个程序我会这么处理:
首先定义好一批数据寄存器如DMn-DM(n+m)用来存取按键信息(相当如缓冲),再定义一个DM寄存器如DM100(相当如指针),而DM100作用是用来存放按键的解码值在DMn-DM(n+m)中存放位置。如3号键按下将其解为00000011,将其放入DM100指示的位置中,DM100的值是这样变化的按一个键加1,执行(响应)一个输出后减1。
当开机后DM100,和DMn-DM(n+m)清零。DM100为0表示没键按下,输出不做响应。当有一个4号键按下时,解码值(00000100)存放在DM100+1的位置,当前值DM100=0,加1后等于1则自然放于DMn中,如是DMn=00000100,这时又进来一系列按键,如5号键,6号键,2号键,10键……。进来一个键DM100加一次1。依次类推。
这时解码值的存放顺序为:
DMn为00000100,此时DM100=1
DM(n+1)为00000101,此时DM100=2
DM(n+2)为00000110,此时DM100=3
DM(n+3)为00000010,此时DM100=4
DM(n+4)为00001010,此时DM100=5
……
当你执行(响应)一次输出的话就要读DMn的值如现在DMn是00000100则译码为4号键。执行4号按键下的程序并要交换数据:
DMn= DM(n+1)
DM(n+1)= DM(n+2)
DM(n+2)= DM(n+3)
……
其DM100的值是这样变化的,接受一次按键加1表示下一次的按键解码值存在DM100+1的寄存器中对应DMn-DM(n+m)。执行一次输出减1
手都写累了还不知表述得大家明白否?
最后修改:2004-11-19 11:03:59