导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→HD7279的问题[meilisi]

 *第39304篇: HD7279的问题

  
楼 主:meilisi 2006年4月11日16:33
 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


  
2楼:meilisi 2006年4月16日16:43
 好希望得到高人的指点啊
好希望得到高人的指点啊

>>>>>>对该主题发表你的看法

本主题贴数2,分页: [第1页]


[上一篇主题]:W3100A+RTL8201BL 做单片机接入Internet模块

[下一篇主题]:W3100A+RTL8201BL ;;做单片机接入Internet模块