标题: 求一汇编程序,急用 [打印本页]

作者: 别总趴着    时间: 2012-3-26 14:28
标题: 求一汇编程序,急用

有八盏灯,全亮,每隔五秒灭一盏

希望有大侠帮忙解决一下


作者: 别总趴着    时间: 2012-4-12 11:12

顶一下,希望版主能看到帮忙解决一下


作者: itmaybe    时间: 2012-4-21 19:48

          ORG      0000H
          CLR      P1.4
START:    MOV      A,#0H             ;全部点亮
          MOV      P0,A             
          LCALL    DEL_5S
          MOV      A,#00000001B      ;灭一盏灯
          MOV      P0,A
          LCALL    DEL_5S
          MOV      A,#00000011B      ;灭两盏灯
          MOV      P0,A
          LCALL    DEL_5S
          MOV      A,#00000111B      ;灭三盏灯
          MOV      P0,A
          LCALL    DEL_5S
          MOV      A,#00001111B      ;灭四盏灯
          MOV      P0,A
          LCALL    DEL_5S
          MOV      A,#00011111B      ;灭五盏灯
          MOV      P0,A
          LCALL    DEL_5S
          MOV      A,#00111111B      ;灭六盏灯
          MOV      P0,A
          LCALL    DEL_5S
          MOV      A,#01111111B      ;灭七盏灯
          MOV      P0,A
          LCALL    DEL_5S
          MOV      A,#11111111B      ;灭八盏灯
          MOV      P0,A
          LCALL    DEL_5S
          SJMP     START             ;循环
;-----------------------------------------------------------------   
          ORG    1000H         ;5秒延时程序
DEL_5S:   MOV   TMOD,#10H      ;定时器1、方式1、定时状态
          MOV   TL1,#0B0H
          MOV   TH1,#3CH       ;送50ms定时初值
          MOV   R2,#0AH        ;设置软件计数器,使10*5ms=0.5s
          MOV   R3,#0AH        ;设置软件计数器,使10*0.5s=5s
          SETB  TR1            ;启动定时器1
LOOP:     JNB   TF1,$          ;判断基时是否到
          MOV   TL1,#0B0H
          MOV   TH1,#3CH       ;再赋初值
          CLR   TF1            ;清溢出标志
          DJNZ  R2,LOOP        ;判断0.5s是否到
          MOV   R2,#0AH
          DJNZ  R3,LOOP        ;判断5s是否到
          CLR   TR1            ;关闭定时器1
          RET                  ;定时结束

 

 

 

 

此程序根据51hei电路板线路编成,仅供参考


作者: itmaybe    时间: 2012-4-21 20:09

          ORG      0000H
          CLR      P1.4
          MOV      R4,#00H
START:    MOV      A,#0H             ;全部点亮
          MOV      P0,A             
          LCALL    DEL_5S
          MOV      DPTR,#TAB
LOOP1:    MOV      A,R4
          MOVC     A,@A+DPTR
          MOV      P0,A
          LCALL    DEL_5S
          INC      R4                ;灭n盏
          CJNE     R4,#8H,LOOP1
          MOV      R4,#0H
          SJMP     START             ;循环
;-----------------------------------------------------------------   
          ORG    1000H         ;5秒延时程序
DEL_5S:   MOV   TMOD,#10H      ;定时器1、方式1、定时状态
          MOV   TL1,#0B0H
          MOV   TH1,#3CH       ;送50ms定时初值
          MOV   R2,#0AH        ;设置软件计数器,使10*5ms=0.5s
          MOV   R3,#0AH        ;设置软件计数器,使10*0.5s=5s
          SETB  TR1            ;启动定时器1
LOOP:     JNB   TF1,$          ;判断基时是否到
          MOV   TL1,#0B0H
          MOV   TH1,#3CH       ;再赋初值
          CLR   TF1            ;清溢出标志
          DJNZ  R2,LOOP        ;判断0.5s是否到
          MOV   R2,#0AH
          DJNZ  R3,LOOP        ;判断5s是否到
          CLR   TR1            ;关闭定时器1
          RET                  ;定时结束
;---------------------------------------------------------------
TAB:      DB  01H,03H,07H,0FH
          DB  1FH,3FH,7FH,0FFH  

 

 

 

 

这个看起简洁些






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1