×

LED灯与汇编语言

消耗积分:0 | 格式:rar | 大小:0.1 MB | 2017-09-06

分享资料个

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !