读入独立键,并点亮相应的LED灯

发布者:w2628203123最新更新时间:2012-09-04 来源: 51hei关键字:定时器  LED灯  中断方式 手机看文章 扫描二维码
随时随地手机看文章

***************************************************************************
006.asm
读入独立键盘上的按键,并把相应的LED灯点亮,若一段时间无按键,刚循环点亮LED
接线:P0口接八位LED
P2口接八位独立按键
定时器T0计时,中断方式
***************************************************************************/
   ORG 0000H
      LJMP MAIN
   ORG 000BH
      LJMP INT_T0
   ORG 0100H
MAIN:     ;主程序入口
    MOV SP,#50H    ;设置堆栈
MOV TMOD,#01H     ;设置定时模式
MOV TH0,#15H   ;赋定时初值
MOV TL0,#9FH
CLR 20H.0    ;初始化按键标志
MOV R2,#0FFH   ;初始化键值
MOV R3,#01H    ;初始化循环闪铄初值
MOV R4,#00H    ;初始化定时初值
SETB TR0    ;启动定时器
MOV IE,#82H    ;开中断
LOOP:
    LCALL KEY_READ    ;扫描键盘
L1: JB 20H.0,LIGH  ;有键输入,则去点亮相应LED
    JBC 20H.0,LOOP 
MOV A,R4
CJNE A,#0C8H,LOOP   ;否则去判断定时是否到,定时到,循环点亮八位LED
LCALL LEED
LJMP L1

/*点亮相应LED*/
LIGH:
    MOV A,R2     ;取键值
MOV P0,A     ;输出
RET

/*循环点亮LED*/
LEED:
    MOV A,R3
LOOP1:
CPL A
MOV P0,A
LCALL KEY_READ
JB 20H.0,RETUN0
MOV R0,#0FFH
LCALL DELAY
MOV A,R3
RL A
MOV R3,A
CJNE A,#80H,LOOP1
LOOP2:
CPL A
MOV P0,A
LCALL KEY_READ
JB 20H.0,RETUN0
MOV R0,#0FFH
LCALL DELAY
MOV A,R3
RR A
MOV R3,A
CJNE A,#01H,LOOP2
SJMP LOOP1
RETUN0:
    RET

/*键盘扫描程序*/

KEY_READ:
    CLR EA     ;扫描键盘时关定时中断
    MOV A,P2
CJNE A,#0FFH,DE
LJMP RETUN
DE: MOV R0,#8AH
    LCALL DELAY
MOV A,P2
CJNE A,#0FFH,DE0
LJMP RETUN
DE0:MOV R2,A
    SETB 20H.0
MOV R4,#00H
DE1:MOV A,P2
CJNE A,#0FFH,DE1
RETUN:
    SETB EA
    RET

/*中断子程序*/

INT_T0:
      CLR EA
      PUSH ACC
   MOV TH0,#15H      ;重赋定时初值
      MOV TL0,#9FH
   INC R4
   POP ACC
   SETB EA
   RETI

/*延时子程序 */

DELAY:
D1:   MOV R1,#0FFH
D0:   DJNZ R1,D0
      DJNZ R0,D1
   RET 


   END

关键字:定时器  LED灯  中断方式 引用地址:读入独立键,并点亮相应的LED灯

上一篇:直流电机调速程序
下一篇:基于单片机编程的遥控LED广告牌设计

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved