发表于:2008-04-26 11:07:09
楼主
硬件这样连的:
8个并行输入上拉10K到电源,并联按键到地;1(LOAD)、2(CLK)、9(Qh)分别接单片机P2.0、2.1、2.2;165的7脚空,10(串行输入)、15(时钟抑制)接地。
程序:
KDAT = 1 ;
KEY = 0 ; /* 变量赋 0 */
KLOAD = 0 ;/*锁存按键状态*/
KLOAD = 1 ;
DO N = 0 TO 7 ;
IF KDAT = 0 THEN KEY = KEY OR 01H ;;/*读口状态*/
KCLK = 1 ;/*时钟变高*/
KEY = ROL ( KEY , 1 ) ;/*字节左移*/
KCLK = 0 ;;/*时钟变低*/
END ;
现在的问题是:H、E、G有变化(对应位变低),其余均看见在最后变低,而不是在相应位置变低。
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| /* 没有键按下,8个连续的‘1’ */
|_| ̄ ̄ ̄ ̄ ̄ ̄ ̄| /* 理想状态H键按下 */
| ̄|_| ̄ ̄ ̄ ̄ ̄ ̄| /* 理想状态G键按下 */
| ̄ ̄|_| ̄ ̄ ̄ ̄ ̄| /* 理想状态F键按下 */
| ̄ ̄ ̄|_| ̄ ̄ ̄ ̄| /* 理想状态E键按下 */
| ̄ ̄ ̄ ̄|_| ̄ ̄ ̄| /* 理想状态D键按下 */
| ̄ ̄ ̄ ̄ ̄|_| ̄ ̄| /* 理想状态C键按下 */
| ̄ ̄ ̄ ̄ ̄ ̄|_| ̄| /* 理想状态B键按下 */
| ̄ ̄ ̄ ̄ ̄ ̄ ̄|_| /* 理想状态A键按下 */
现在情况:
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| /* 没有键按下 */
|_| ̄ ̄ ̄ ̄ ̄ ̄ ̄| /* H键按下 */
| ̄ ̄ ̄ ̄ ̄ ̄ ̄| /* 后几个键任一按下,‘0’被排在后边 */
哪位出出主意:什么原因、怎么解决?在此致谢。