EDN首页   博客首页

日志档案

发表于 2007-10-31 21:48:39

1

标签: 无标签

4位八段数码管显示1234的汇编程序

用EDN的51实验板,做了个4位八段数码管显示1234的数字,程序用汇编语言编写,通电后按实验田板上第一个按键开关启动程序执行。此程序的原意是学会动态扫描显示,程序如下:

ORG 0000H                        ;地址 0000H
               LJMP STAR0              ;转 STAR
ORG 0200H                      ;地址 0100H
STAR0:  CLR 00            ;位 00 清 0
              MOV P1,#0FFH      ;#0FFH-->P1
              MOV P2,#0FH       ;#0FH-->P2
              MOV P0,#0FFH      ;#0FFH-->P0
              MOV 30H,#0FFH  ;#0FFH-->30H
              MOV 31H,#0FFH  ;#0FFH-->31H
              MOV 32H,#0FFH  ;#0FFH-->32H
              MOV 33H,#0FFH  ;#0FFH-->33H
STAR1: MOV P1,#0FFH      ;#0FFH-->P1
              MOV P1,#0FEH   ;#0FEH-->P1
              MOV P0,30H   ;30H-->P0
              MOV R0,#00H   ;#00H-->R0
              LCALL STS1   ;调延时子程序 STS1
              MOV P1,#0FFH      ;#0FFH-->P1
              MOV P1,#0FDH   ;#0FDH-->P1
              MOV P0,31H   ;31H-->P0
              MOV R0,#00H   ;#00H-->R0
              LCALL STS1   ;调延时子程序 STS1
              MOV P1,#0FFH      ;#0FFH-->P1
              MOV P1,#0FBH   ;#0FBH-->P1
              MOV P0,32H   ;32H-->P0
              MOV R0,#00H   ;#00H-->R0
              LCALL STS1   ;调延时子程序 STS1
              MOV P1,#0FFH      ;#0FFH-->P1
              MOV P1,#0F7H   ;#0F7H-->P1
              MOV P0,33H   ;33H-->P0
              NOP     ;空操作
              LCALL STS1   ;调延时子程序 STS1
ST2:      JNB P2.0,ST3      ;P2.0=0 转 ST3
             CLR 00    ;位 00 清 0
             SJMP STAR1        ;转STAR1
ST3:      JNB 00,ST4        ;位 00=0 转 ST4
             SJMP STAR1        ;转 STAR1
ST4:      MOV 30H,#0F9H     ;#0F9H-->30H
             MOV 31H,#0A4H  ;#0A4H-->31H
             MOV 32H,#0B0H  ;#0B0H-->32H
             MOV 33H,#99H   ;#99H-->33H
             SETB 00           ;位 00 置 1
             SJMP STAR1        ;转 STAR1
         

ORG 0100H
STS1:   MOV R6,#03H   ;#03H-->R6  (211)
DEL1:   MOV R7,#0FFH   ;#0FFH-->R7  (255)
DEL2:   DJNZ R7,DEL2   ;R7-1=\0    DEL2
             DJNZ R6,DEL1   ;R6-1=\0  DEL1
             RET     ;子程序调用返回
             END     ;结束

 

此程序在能在EDN-51的实验板上运行正常,但在仿真上执行不正常,还没找到原因。

点击下载

 

下面的程序是能在仿真上能显示的程序。但在EDN-51的实验板上显示不正常。

 

点击下载

 

系统分类: 单片机   |   用户分类: 51单片机学习心得   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(1320)    回复(3)  

投一票您将和博主都有获奖机会!

最新评论

  • l0p0c

    2007-11-1 8:08:28

    那不正常整上来不忽悠人吗?

  • cacntop

    2007-11-1 11:14:12

    那你表述清楚点 是让一个顺序显示1234那 还是 四个分别显示1.2.3.4呢,我看你得程序有点乱 没有头绪。

  • jyfjk

    2007-12-3 10:20:54

    原因找到了,是仿真软件的问题,不能用PNP管真接驱动4位八段数码管,后改用74HC04门电路驱动,一切正常。