您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>源码下载>汇编编程>

LED灯与汇编语言

大小:0.1 MB 人气: 2017-09-06 需要积分:0

1、如何点亮一个LED发光管

LOOP:
CLR P1.0;用CLR命令使P1.1输出低电平,点亮LED
CLR P1.2;用CLR命令使P1.1输出低电平,点亮LED
LCALL DELAY;调用延时子程序DELAY
AJMP LOOP;通过AJMP执行LOOP,从最开始循环执行,无限循环下去
DELAY: MOV R7,#250
D1: MOV R6,#250
D2: DJNZ R6,D2
DJNZ R7,D1
RET
END
 

2、让点亮后的LED发光管可以闪动

LOOP:
SETB P1.0 ;用SETB命令使P1.0输出高电平,熄灭LED
SETB P1.2 ;用SETB命令使P1.2输出高电平,熄灭LED
LCALL DELAY;调用延时子程序DELA
CLR P1.0;用CLR命令使P1.1输出低电平,点亮LED
CLR P1.2;用CLR命令使P1.1输出低电平,点亮LED
LCALL DELAY;调用延时子程序DELAY
AJMP LOOP;通过AJMP执行LOOP,从最开始循环执行,无限循环下去
DELAY: MOV R7,#250
D1: MOV R6,#250
D2: DJNZ R6,D2
DJNZ R7,D1
RET
END
 

 

 

3、LED流水灯

 ORG 0000H
 LJMP MAIN
MAIN:
 MOV P0,#0FEH  ; 初始点亮LED1 
 MOV R7,#0FEH  ; 保存P0
MAIN_LP:
 LCALL DELAY   ; 延时
 MOV A,R7   ; 
 RL A   ; 循环移位
 MOV R7,A   ; 保存到R7
 MOV P0,A   ; 点亮下一个LED
 JMP MAIN_LP   ; 不停循环
;===========================================================
DELAY:     ; 延时子程序
 MOV R0,#0FFH
 MOV R1,#0FFH
DLY_LP:
 NOP
 NOP
 DJNZ R0,DLY_LP
 MOV R0,#0FFH
 DJNZ R1,DLY_LP 
 RET
 
 END

 

4、LED流水灯(移位方式)

;用移位方式实现流水灯
;///////////////////////////////////////////     
org 00h    ;程序上电从00h开始
ajmp main  ;跳转到主程序
org 0030h   ;主程序起始地址
main:
; mov p2,#0f0h
 mov a,#0feh  ;给A赋值成11111110
loop: 
 mov p0,a  ;将A送到P1口,发光二极管低电平点亮
 lcall delay  ;调用延时子程序
 rl a   ;累加器A循环左移一位
 ajmp loop ;重新送P1显示
delay:
 mov r3,#20  ;最外层循环二十次
d1:
 mov r4,#80  ;次外层循环八十次
d2:
 mov r5,#250  ;最内层循环250次
 djnz r5,$  ;总共延时2us*250*80*20=0.8S
 djnz r4,d2
 djnz r3,d1
 ret
 end
 

5、正反流水灯

       ;左移
  star: mov r3,#8         ;设置流水位数
        mov p0,#11111110b ;从p0.0开始
  loop: acall d01s
        mov a,p0          ;读取p0当前数据到acc
        rl a              ;左移一位
        mov p0,a          ;将左移的数据再送到p1
        djnz r3,loop      ;没有完成8位继续
        ;******************
        mov p0,#0ffh      ;熄灭所有灯
        ;******************
        ;右移
        mov r3,#8         ;设置流水位数
        mov p0,#01111111b ;从p0.7开始
  loop1: acall d01s
        mov a,p0          ;读取p0当前数据到acc
        rr a              ;右移一位
        mov p0,a          ;将左移的数据再送到p1
        djnz r3,loop1     ;没有完成8位继续
        ljmp star         ;完成后返回到开始再来
  ;延时子程序
   d01s: mov r0,#255
  d01l1: mov r1,#198
         djnz r1,$
         djnz r0,d01l1
         ret
         end

1、如何点亮一个LED发光管

LOOP:
CLR P1.0;用CLR命令使P1.1输出低电平,点亮LED
CLR P1.2;用CLR命令使P1.1输出低电平,点亮LED
LCALL DELAY;调用延时子程序DELAY
AJMP LOOP;通过AJMP执行LOOP,从最开始循环执行,无限循环下去
DELAY: MOV R7,#250
D1: MOV R6,#250
D2: DJNZ R6,D2
DJNZ R7,D1
RET
END
 

2、让点亮后的LED发光管可以闪动

LOOP:
SETB P1.0 ;用SETB命令使P1.0输出高电平,熄灭LED
SETB P1.2 ;用SETB命令使P1.2输出高电平,熄灭LED
LCALL DELAY;调用延时子程序DELA
CLR P1.0;用CLR命令使P1.1输出低电平,点亮LED
CLR P1.2;用CLR命令使P1.1输出低电平,点亮LED
LCALL DELAY;调用延时子程序DELAY
AJMP LOOP;通过AJMP执行LOOP,从最开始循环执行,无限循环下去
DELAY: MOV R7,#250
D1: MOV R6,#250
D2: DJNZ R6,D2
DJNZ R7,D1
RET
END
 

 

 

3、LED流水灯

 ORG 0000H
 LJMP MAIN
MAIN:
 MOV P0,#0FEH  ; 初始点亮LED1 
 MOV R7,#0FEH  ; 保存P0
MAIN_LP:
 LCALL DELAY   ; 延时
 MOV A,R7   ; 
 RL A   ; 循环移位
 MOV R7,A   ; 保存到R7
 MOV P0,A   ; 点亮下一个LED
 JMP MAIN_LP   ; 不停循环
;===========================================================
DELAY:     ; 延时子程序
 MOV R0,#0FFH
 MOV R1,#0FFH
DLY_LP:
 NOP
 NOP
 DJNZ R0,DLY_LP
 MOV R0,#0FFH
 DJNZ R1,DLY_LP 
 RET
 
 END

 

4、LED流水灯(移位方式)

;用移位方式实现流水灯
;///////////////////////////////////////////     
org 00h    ;程序上电从00h开始
ajmp main  ;跳转到主程序
org 0030h   ;主程序起始地址
main:
; mov p2,#0f0h
 mov a,#0feh  ;给A赋值成11111110
loop: 
 mov p0,a  ;将A送到P1口,发光二极管低电平点亮
 lcall delay  ;调用延时子程序
 rl a   ;累加器A循环左移一位
 ajmp loop ;重新送P1显示
delay:
 mov r3,#20  ;最外层循环二十次
d1:
 mov r4,#80  ;次外层循环八十次
d2:
 mov r5,#250  ;最内层循环250次
 djnz r5,$  ;总共延时2us*250*80*20=0.8S
 djnz r4,d2
 djnz r3,d1
 ret
 end
 

5、正反流水灯

       ;左移
  star: mov r3,#8         ;设置流水位数
        mov p0,#11111110b ;从p0.0开始
  loop: acall d01s
        mov a,p0          ;读取p0当前数据到acc
        rl a              ;左移一位
        mov p0,a          ;将左移的数据再送到p1
        djnz r3,loop      ;没有完成8位继续
        ;******************
        mov p0,#0ffh      ;熄灭所有灯
        ;******************
        ;右移
        mov r3,#8         ;设置流水位数
        mov p0,#01111111b ;从p0.7开始
  loop1: acall d01s
        mov a,p0          ;读取p0当前数据到acc
        rr a              ;右移一位
        mov p0,a          ;将左移的数据再送到p1
        djnz r3,loop1     ;没有完成8位继续
        ljmp star         ;完成后返回到开始再来
  ;延时子程序
   d01s: mov r0,#255
  d01l1: mov r1,#198
         djnz r1,$
         djnz r0,d01l1
         ret
         end

非常好我支持^.^

(2) 100%

不好我反对

(0) 0%

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!