HD7279的问题
我是一个单片机初学者,最近在学习HD7279,程序运行后,数码管乱闪,我想问问各位有经验的朋友,是不是说明HD7279坏掉了呀?
汇编程序如下,功能为按下键则显示键值
;*******************************************************
; 定义RAM
;*******************************************************
BIT_COUNT DATA 07FH
TIMER DATA 07EH
TIMER1 DATA 07DH
TEN DATA 07CH
DATA_IN DATA 020H
DATA_OUT DATA 021H
;**************主程序****************************
KEY Bit P1.0 ;7279的KEY按键输出
DAT Bit P1.1 ;7279的DATA串行数据引脚
CLK Bit P1.2 ;7279的CLK同步时钟引脚
CS Bit P1.3 ;7279的CS片选输入端
ORG 000H
AJMP START
ORG 100H
START: MOV SP,#2FH
MOV P1,#11111001B;I/O口初始化
MOV TIMER,#50 ;延时约25ms
START_DELAY:MOV TIMER1,#255
START_DELAY1:DJNZ TIMER1,START_DELAY1
DJNZ TIMER,START_DELAY
MOV DATA_OUT,#0A4H;发复位(清除)指令
CALL SEND
SETB CS
MAIN: JB KEY,MAIN ;若有按键,则执行键盘程序
MOV DATA_OUT,#00010101B ;读键值指令
CALL SEND
CALL RECEIVE
SETB CS
MOV A,DATA_IN
MOV B,#10
DIV AB
MOV TEN,A
MOV DATA_OUT,#10000001B
CALL SEND
MOV DATA_OUT,TEN
CALL SEND
MOV DATA_OUT,#10000000B
CALL SEND
MOV DATA_OUT,B
CALL SEND
SETB CS
WAIT: JNB KEY,WAIT
AJMP MAIN
;*******************************************************
;发送1个字节到HD7279,高位在前
;*******************************************************
SEND: MOV BIT_COUNT,#8
CLR CS
CALL LONG_DELAY
SEND_LOOP: MOV C,DATA_OUT.7
MOV DAT,C
SETB CLK
MOV A,DATA_OUT
RL A
MOV DATA_OUT,A
CALL SHORT_DELAY
CLR CLK
DJNZ BIT_COUNT,SEND_LOOP
CLR DAT
RET
;*******************************************************
;从HD7279接受一个字节,高位在前
;*******************************************************
RECEIVE: MOV BIT_COUNT,#8
SETB DAT
CALL LONG_DELAY
RECEIVE_LOOP:SETB CLK
CALL SHORT_DELAY
MOV A,DATA_IN
RL A
MOV DATA_IN,A
MOV C,DAT
MOV DATA_IN.0,C
CLR CLK
CALL SHORT_DELAY
DJNZ BIT_COUNT,RECEIVE_LOOP
CLR DAT
RET
;*******************************************************
;延时子程序
;*******************************************************
LONG_DELAY: MOV TIMER,#25
DELAY_LOOP: DJNZ TIMER,DELAY_LOOP
RET
SHORT_DELAY:MOV TIMER,#4
SHORT_LP: DJNZ TIMER,SHORT_LP
RET
发表时间:2006年4月11日16:33:35