51单片机控制,两个74ls164 十六个LED小灯,求跑马灯程序 求汇编程序

如题所述

试验成功的程序:


    ORG   0000H

    MOV   30H, #0

    MOV   31H, #0

M_LOOP:

    MOV   R2, #8

DISP1:

    CALL  DL

    CALL  SHIFT2

    DJNZ  R2, DISP1


    MOV   R2, #8

DISP2:

    CALL  DL

    CALL  SHIFT1

    DJNZ  R2, DISP2

    SJMP  M_LOOP

;-----------------------

SHIFT1:

    CLR   C

    MOV   A, 30H

    RLC   A

    MOV   30H, A

    CLR   C

    MOV   A, 31H

    RRC   A

    MOV   31H, A

    RET

;-----------------------

SHIFT2:

    SETB  C

    MOV   A, 31H

    RLC   A

    MOV   31H, A

    SETB  C

    MOV   A, 30H

    RRC   A

    MOV   30H, A

    RET

;-----------------------

DL:

    CLR   TI

    MOV   SBUF, 30H

    JNB   TI, $

    CLR   TI

    MOV   SBUF, 31H


    DJNZ  R7, $

    DJNZ  R7, $

    DJNZ  R6, $ - 4

    RET

;-----------------------

END


电路:



参考:


http://hi.baidu.com/do_sermon/item/9b69dd661196762068105b27

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-05-12
ORG 0
START :MOV SCON,#00H(设定工作方式)
LOOP:
MOV A,#10H
SETB P1.0 (P1.0和P1.1分别连接164的两个接地的引脚)
SETB P1.1
CLR P1.0
MOV SBUF,A
JNB T1,$
CLR T1
SETBP1.0
CLR P1.1
MOV SBUF,A
JNB T1,$
CLR T1
JMP LOOP
END追问

164不是只有一个接地的引脚吗?我用P1.1接的164的9号管脚  用p1.0接的8号脚

追答

你的EA那个引脚应该接高电平,两个164,用接地的引脚来进行片选,我写的是两个164分别并行输出不是同时输出的,是第一个转化完成后再进行第二个

追问

请告诉下我哪两个为接地脚呢?谢谢 我也是第一个164每个灯亮完后然后再一次亮第二个164 然后循环 求图 非常感谢

追答

第一个的9号引脚接接p1.0第二个的9号引脚接p1.1

追问

我就是这样接的 然后程序也是你那个 可是没有循环 只有一个灯亮着 似乎你没有给初值和使位数循环 也没有延时之类的

追答

ORG 0
START :MOV SCON,#00H(设定工作方式)
LOOP:
MOV A,#10H
SETB P1.0 (P1.0和P1.1分别连接164的两个接地的引脚)
SETB P1.1
CLR P1.0
MOV R1,#8
LOOP1:
MOV SBUF,A
JNB T1,$
CALL DELAY
CLR T1
RR A
DJNZ R1,LOOP1
SETBP1.0
CLR P1.1
MOV R0,#8
LOOP2:
MOV SBUF,A
JNB T1,$
CALL DELAY
CLR T1
RL A
DJNZ R0,LOOP2
JMP LOOP
DELAY:
MOV R7,#10
D1:MOV R6,#250
DJNZ R6,$
DJNZ R7,D1
END

追问

还是不行哦 是不是程序哪里还有问题呢?现在是完全不显示了呢

追答

为了赚你的一点儿金币真难

本回答被提问者采纳
相似回答