本帖最后由 n805 于 2015-12-19 22:36 编辑
# j% A' [3 e1 X. s2 z8 j+ b5 D2 }; X3 q/ j6 w6 f* g* s3 X
手柄的CLK信号没加上。以下是原理介绍,后来人员可以补考了。。。。。
6 p x! X% C& S0 q# z" ?8 [FC手柄是5根线 1电源,2地线,3数据线DATE、,4读取线LOAD、5时钟线CLK。
3 V( F2 B/ B3 N: Z. ?而手柄的电路是个8位串行移位寄存器,当主机发出LD信号后,在时钟CLK的作用下,9 F$ u5 H) R) }* j2 u, r$ {
8个数据被逐个传到主机,如果没有了CLK信号,主机发出LD后,数据是不会移动改变的/ m! s8 c9 Q' F6 s5 R" @1 C3 a5 x
由于A键是8个数据的首位,所以按下A键就会导致数据线位变低,由于没有CLK不会改变数据位7 ?9 x) f% p4 r* O' f* _
所CPU在8次读取当中都是读取的A键信号,也就是说按下A键就等于按下所有按键了,你可以5 }3 U' ]0 ^. g2 B5 U9 @/ y
想办法进入游戏,比如魂斗罗,游戏中按连发A,你可以看见人物是不断跳跃和开枪,上下左右" o8 d9 y9 D1 W7 I& Q5 i# u
不定,而游戏也不断暂停和解锁。。。。。。。。。5 ^: {3 N& x5 w( V; j3 S% i
解决方法就是检测电路,CPU的31脚就是CLK时钟脚,这个信号通过74368反向后分别送入1P
" G( f" s1 e% Y( P4 M: |8 i和2P的CLK端。附上图片,自己查看。。。。3 A- i4 {% ^, E
: r" i$ N( f1 ]3 ^% w& q# K[url] е е |