当前位置:编程学习 > 汇编语言 >>

用51单片机汇编语言,数码管静态轮流显示1~F

请问这个程序有什么问题?数码管显示代码没问题,我用的数码管是这么编码的 ORG 0000H TT: MOV R4,#0FH ;循环16次 MOV A,#0H KK: MOV DPTR,#TABLE ;存入表的起始地址 MOVC A,@A+DPTR ;按地址取代码并存入A MOV P0,A ;将代码送P0转变为数字显示 INC A LCALL DELAY DJNZ R4,KK AJMP TT TABLE: DB 0FCH,60H,0DAH,0F2H ;代码表 DB 66H,0B6H,0BEH,0E0H DB 0FEH,0F6H,0AAH,3EH DB 9CH,7AH,9EH,8EH DELAY: MOV R1,#25 ;延时 L1: MOV R2,#50 L2: MOV R3,#250 L3: DJNZ R3,L3 DJNZ R2,L2 DJNZ R1,L1 RET END
答案:错误给你找到了,由于在查显示编码表时 要不断地使用累加器A, 累加器A不能用来保存要轮流要显示的数据,可以改用R4.
         ORG 0000H
TT:   MOV R4,#0     ;循环16次
           
KK:    MOV   A,R4
         MOV DPTR,#TABLE   ;存入表的起始地址
         MOVC A,@A+DPTR  ;按地址取代码并存入A
          MOV P0,A   ;将代码送P0转变为数字显示
                
       INC  R4       
       LCALL DELAY
       CJNE R4,#16,KK
       AJMP TT
TABLE:  DB 0FCH,60H,0DAH,0F2H ;代码表
              DB 66H,0B6H,0BEH,0E0H
              DB 0FEH,0F6H,0AAH,3EH
              DB 9CH,7AH,9EH,8EH
DELAY:   MOV R1,#25 ;延时
L1:          MOV R2,#50
L2:          MOV R3,#250
L3:          DJNZ R3,L3
               DJNZ R2,L2
               DJNZ R1,L1
  RET
其他:编写相应程序,对应数码管顺序,点亮时间等效果要求,最后执行程序段循环命令即可 改成下面这样就可以了


ORG 0000H
TT:   MOV     R4,#16     ;循环16次
        MOV     DPTR,#TABLE   ;存入表的起始地址
KK:   MOV     A,#0H

        MOVC   A,@A+DPTR  ;按地址取代码并存入A
        MOV     P0,A   ;将代码送P0转变为数字显示
        INC       DPTR

        LCALL  DELAY
        DJNZ     R4,KK
        AJMP TT


TABLE:  DB 0FCH,60H,0DAH,0F2H ;代码表
DB 66H,0B6H,0BEH,0E0H
DB 0FEH,0F6H,0AAH,3EH
DB 9CH,7AH,9EH,8EH


DELAY:   MOV R1,#25 ;延时
L1:          MOV R2,#50
L2:          MOV R3,#250
L3:          DJNZ R3,L3
DJNZ R2,L2
DJNZ R1,L1
RET


END 

上一个:汇编语言中把字节型内存写入寄存器,可以 mov cl,[bx] mov ch,0 那这样写可以吗:mov byte ptr cx,[bx]
下一个:VB时钟计数

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,