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

* 91498: HD7279的问题

   meilisi 
meilisi发表的帖子 

 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

  
回复该帖

本主题共有 2 帖,分页:>>>>>该主题的所有内容[2]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  91800.[详细]好希望得到高人的指点啊
摘要:好希望得到高人的指点啊......(22字)
- [meilisi][876次] 2006年4月16日

[上一篇帖子]:W3100A+RTL8201BL 做单片机接入Internet模块不好意思,电路在这里[u
[下一篇帖子]:W3100A+RTL8201BL ;;做单片机接入Internet模块我正在做毕业设计,是菜