找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9247|回复: 0
打印 上一主题 下一主题
收起左侧

按键控制多种流水灯_汇编

[复制链接]
跳转到指定楼层
楼主
ID:1 发表于 2010-6-1 00:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

源代码和hex文件下载地址:
http://www.51hei.com/ziliao/51hei-5/流水灯_键控_asm.rar

;---------------------------------------------------------------
;程序名称:按键控制几种流水灯程序
;晶振:11.0592
;跳线设置:默认
;实验对象:51hei-5型单片机学习板 
;按板子上的4个独立键盘就可看到现象
;---------------------------------------------------------------
;中断入口程序;
;************;
;

ORG     0000H    ;程序执行开始地址
LJMP    START    ;跳至START执行
ORG     0003H    ;外中断0中断入口地址
RETI             ;中断返回(不开中断)
ORG     000BH    ;定时器T0中断入口地址
RETI             ;中断返回(不开中断)
ORG     0013H    ;外中断1中断入口地址
RETI             ;中断返回(不开中断)
ORG     001BH    ;定时器T1中断入口地址
RETI             ;中断返回(不开中断)
ORG     0023H    ;串行口中断入口地址
RETI             ;中断返回(不开中断)
;
; 初始化程序 
;************
;
CLEAR:  clr     P2.7      ;锁存74hc573 防止数码管干扰led灯
        clr     P1.4       ;打开led总开关
        MOV     20H,#00H    ;20H单元内存清0(闪烁标志清0)
        SETB    00H         ;20H.0位置1(上电时自动执行闪烁功能1)
        RET                 ;子程序返回
;
;  主 程 序  
;************
;
START:ACALL     CLEAR       ;调用初始化子程序
MAIN: LCALL     KEYWORK     ;调用键扫描子程序
      JB        00H,FUN0    ;20H.0位为1时执行FUN0
      JB        01H,FUN1    ;20H.1位为1时执行FUN1
      JB        02H,FUN8    ;20H.2位为1时执行FUN2
      JB        03H,FUN2    ;备用
      AJMP      MAIN        ;返回主程序MAIN
;
;  功能程序  
;************;
;第1种闪烁功能程序
FUN0: MOV       A,#0FEH       ;累加器赋初值
FUN00:MOV       P0,A          ;累加器值送至P0口
      LCALL     DL05S         ;延时
      JNB       ACC.7,MAIN    ;累加器最高位为0时转MAIN
      RL        A             ;累加器A中数据循环左移1位
      AJMP      FUN00         ;转FUN00循环
;
;第2种闪烁功能程序
FUN1:MOV        A,#7fH    ;累加器赋初值
FUN11:MOV       P0,A       ;累加器值送至P0口
      LCALL     DL05S      ;延时
      JZ        MAIN       ;A为0转MAIN
      RR        A          ;累加器A中数据循环左移1位
      ANL       A,P0       ;A同P1口值相与
      AJMP      FUN11      ;转FUN11循环
;
;第2种闪烁功能程序
FUN8:MOV        A,#0feH    ;累加器赋初值
FUN88:MOV       P0,A       ;累加器值送至P0口
      LCALL     DL05S      ;延时
      JZ        MAIN       ;A为0转MAIN
      Rl        A          ;累加器A中数据循环左移1位
      ANL       A,P0       ;A同P1口值相与
      AJMP      FUN88      ;转FUN11循环
; 第4种闪烁功能程序
FUN2:MOV        A,#0AAH     ;累加器赋初值
      MOV       P0,A        ;累加器值送至P0口
      LCALL     DL05S       ;延时
      CPL       A           ;A中各位取反
      MOV       P0,A        ;累加器值送至P0口
      LCALL     DL05S       ;延时
      AJMP      MAIN        ;转MAIN

;  扫键程序  
;************;
;
KEYWORK:MOV     P3,#0FFH    ;置P3口为输入状态
      JNB       P3.2,KEY0   ;读P3.2口,若为0转KEY0
      JNB       P3.4,KEY1   ;读P3.3口,若为0转KEY1
      JNB       P3.6,KEY2   ;读P3.4口,若为0转KEY2
      JNB       P3.7,KEY3   ;读P3.5口,若为0转KEY3
      RET                   ;子程序返回
;
;闪烁功能0键处理程序
KEY0:LCALL      DL10MS      ;延时10毫秒消抖
     JB         P3.2,OUT0   ;P3.2为1,子程序返回(干扰)
     SETB       00H         ;20H.0位置1(执行闪烁功能1标志)
     CLR        01H         ;20H.1位清0
     CLR        02H         ;20H.2位清0
     CLR        03H         ;20H.3位清0
OUT0:RET                    ;子程序返回
;
; 闪烁功能1键处理程序
KEY1:LCALL      DL10MS
     JB         P3.4,OUT1
     SETB       01H         ;20H.1位置1(执行闪烁功能2标志)
     CLR        00H
     CLR        02H
     CLR        03H
OUT1:RET
;
;闪烁功能2键处理程序
KEY2:LCALL      DL10MS
     JB         P3.6,OUT2
     SETB       02H         ;20H.2位置1(执行闪烁功能3标志)
     CLR        01H
     CLR        00H
     CLR        03H
OUT2:RET
;
;闪烁功能(备用)键处理程序
KEY3:LCALL      DL10MS
     JB         P3.7,OUT3
     SETB       03H         ;20H.3位置1(执行备用闪烁功能标志)
     CLR        01H
     CLR        02H
     CLR        00H
OUT3:RET
;
;  延时程序  
;************;
;0.5毫秒延时子程序,执行一次时间为513微秒
DL512:MOV       R2,#0FFH
LOOP1: DJNZ     R2,LOOP1
       RET
;
;10毫秒延时子程序(调用20次0.5毫秒延时子程序)
DL10MS:MOV      R3,#14H
LOOP2: LCALL    DL512
       DJNZ     R3,LOOP2
       RET
;
;延时子程序,改变R4寄存器初值可改变闪烁的快慢(时间为15×25毫秒)
DL05S:MOV       R4,#0FH
LOOP3: LCALL    DL25MS
       DJNZ     R4,LOOP3
       RET
;
;25毫秒延时子程序,用调用扫键子程序延时,可快速读出功能按键值
DL25MS:MOV      R5,#0FFH
LOOP4:LCALL     KEYWORK
      DJNZ      R5,LOOP4
      RET
END                       ;程序结束
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表