专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

单片机控制LED按1闪1秒按2闪10秒

作者:佚名   来源:本站原创   点击数:  更新时间:2008年09月30日   【字体:

ORG 30H             ;初始化地址
START:MOV SP,#5FH   ;初始化堆栈
      MOV P2,#0ffH  ;将P2端口打开(位)
      MOV P3,#0FFH  ;将P3端口打开(位)
L1:JNB P3.2,L2      ;P3.2上接有一只按钮,它按下时,P3.2=0(字)
   JNB P3.3,L3      ;P3.3上接有一只按钮,它按下时,P3.3=0(字)
   LJMP L1          ;跳转到L1
L2:lJMP YS1MS       ;闪烁1秒
   LJMP L1          ;跳转到L1
L3:LJMP YS10MS      ;闪烁10秒
   LJMP L1          ;跳转到L1

YS1MS:MOV p0,#07FH  ;  给数码管置数“.”
      MOV p2,#0FFH  ;  打开八个数码管“.”给整个P2口打开
      LCALL DELAY   ; 调用延时子程序
      mov p2,#00H   ;  关闭八个数码管“.”
      LCALL DELAY   ;  调用延时子程序
      LJMP YS1MS    ;  返回

YS10MS:MOV P0,#07FH     ;给数码管置数“.”
       MOV P2,#0FFH     ;打开八个数码管“.”给整个P2口打开
       LCALL DELAY10MS  ;调用延时子程序
       MOV P2,#00H      ;关闭八个数码管“.”
       LCALL DELAY10MS  ;调用延时子程序
       LJMP YS10MS      ;返回

;延时1秒子程序
DELAY:MOV R7,#250  ;把250送入工作寄存器R7
   D1:MOV R6,#250  ;把250送入工作寄存器R6
   D2:DJNZ R6,D2   ;工作寄存器R6每次减1,即执行250次
      DJNZ R7,D1   ;工作寄存器R7每次减1,即执行250次
      RET          ;返回调用子程序

;延时10秒子程序
DELAY10MS:MOV R5,#10   ; 把10送入工作寄存器R5
      dd1:LCALL DELAY  ; 调用
          DJNZ R5,dd1  ; 工作寄存器R5每次减1,即执行10次
          RET          ; 返回调用子程序
END                    ; 结束
单片机网www.51hei.com 第12群 模留哥的作品,欢迎转载,保留版权。

关闭窗口