《匠人手记》推荐网上购书渠道:
  互动出版网(china-pub)   >>>
  当当网(dangdang)   >>>
  卓越亚马逊网    >>>
  淘宝网(taobao)   >>>
  更多购书渠道……   >>> 

设为首页加入收藏联系匠人管理入口21IC首页21IC博客21IC社区侃单片机回复的贴参与的贴

天气预报
百宝日历
载入中...

百宝专栏

载入中...
最新货色

载入中...

粉丝评论

载入中...

载入中...



百宝信息

载入中...

百宝流量

(2006-07-01开始)


匠人手记

经典按键防抖动51汇编程序(zt)
程序匠人 发表于 2006-10-12 12:41:00  阅读全文 | 回复(8) | 引用通告 | 编辑

;四独立按键控制四LED;
;四个独立按键对应四个独立的LED.
;当某一按键按下时对应的LED亮,当第二次按下时灭。
;四个LED只能有一个亮,初学者可以参考以下程式:
;当一直按下某一按键时对应的LED会闪动。

;---------------------------------------------------------
        K1      BIT  P1.4
        K2      BIT  P1.5
        K3      BIT  P1.6
        K4      BIT  P1.7

        FLAG0   BIT  20H.0     ;LED0标记
        FLAG1   BIT  20H.1     ;LED1标记
        FLAG2   BIT  20H.2     ;LDE2标记
        FLAG3   BIT  20H.3     ;LED3标记

        K_OLD   EQU  30H
        K_NEW   EQU  31H
;---------------------------------------------------------
         ORG  0000H
         JMP  MAIN
         ORG  0030H
;---------------------------------------------------------
MAIN:
         MOV  SP,#60H
         MOV  P1,#0FFH
         MOV  P0,#0FFH
         MOV  K_OLD,#00H
         MOV  20H,#0FFH
MAIN1:
         CALL  K_SCAN            ;键扫描
         MOV  A,K_NEW
         CJNE  A,K_OLD,MAIN2
         JMP  MAIN1
MAIN2:
         CALL  DELAY               ;延时示去抖动
         CALL  K_SCAN            ;再判断键是否按下
         MOV  A,K_NEW
         CJNE  A,K_OLD,MAIN3
         JMP  MAIN1
MAIN3:
         JB ACC.0,LOOP1         ;K1按下
         JB ACC.1,LOOP2         ;K2按下
         JB ACC.2,LOOP3         ;K3按下
         JB ACC.3,LOOP4         ;K4按下
         JMP  MAIN1
LOOP1:

         JNB  FLAG0,LOOP1A
         MOV  P0,#0FEH
         MOV  20H,#0EH         ;FLAG0=0
         JMP  MAIN1
LOOP1A:
         MOV  P0,#0FFH
         MOV  20H,#0FH
         JMP  MAIN1
LOOP2:
         JNB  FLAG1,LOOP1A
         MOV  P0,#0FDH
         MOV  20H,#0DH         ;FLAG1=0
         JMP  MAIN1
LOOP2A:
         MOV  P0,#0FFH
         MOV  20H,#0FH
         JMP  MAIN1
LOOP3:
         JNB  FLAG2,LOOP3A
         MOV  P0,#0FBH
         MOV  20H,#0BH         ;FLAG2=0
         JMP  MAIN1
LOOP3A:
         MOV  P0,#0FFH
         MOV  20H,#0FH
         JMP  MAIN1
LOOP4:
         JNB  FLAG3,LOOP4A
         MOV  P0,#0F7H         ;FLAG3=0
         MOV  20H,#07H
         JMP  MAIN1
LOOP4A:
         MOV  P0,#0FFH
         MOV  20H,#0FH
         JMP  MAIN1

;---------------------------------------------------------
; 键扫描子程序
;---------------------------------------------------------
K_SCAN:
        MOV  P1,#0FFH
        MOV  K_NEW,#00H
        MOV  A,#00H
        MOV  C,K4
        CPL  C
        RLC  A
        MOV  C,K3
        CPL  C
        RLC  A
        MOV  C,K2
        CPL  C
        RLC  A
        MOV  C,K1
        CPL  C
        RLC  A
        MOV  K_NEW,A
        RET
;---------------------------------------------------------
;延时子程序
;---------------------------------------------------------
DELAY:
        MOV  R6,#200
DEL:
        MOV  R7,#0FFH
        DJNZ  R7,$
        DJNZ  R6,DEL
        RET
;---------------------------------------------------------

;可以将 K_SCAN 子程序更改为:
;K_SCAN:
;        MOV  P1,#0FFH
;        MOV  K_NEW,#00H
;        MOV  A,P1
;        CPL  A
;        ANL  A,#0F0H
;        SWAP  A
;        MOV  K_NEW,A
;        RET

;---------------------------------------------------------

看《匠人手记》,与匠人同行!北航出版,正在热卖!

Re:经典按键防抖动51汇编程序(zt)
游客A(游客)发表评论于2008-11-17 21:17:00  个人主页 | 引用 | 返回 | 删除 | 回复

游客A(游客)匠人姐姐这里用DELAY来消抖的方法让我很失望,适合学校里的学生看

看《匠人手记》,与匠人同行!北航出版,正在热卖!

Re:经典按键防抖动51汇编程序(zt)
TONY(游客)发表评论于2008-11-14 16:47:00  个人主页 | 引用 | 返回 | 删除 | 回复

TONY(游客)没有理我

看《匠人手记》,与匠人同行!北航出版,正在热卖!

Re:经典按键防抖动51汇编程序(zt)
TONY(游客)发表评论于2008-11-13 17:33:00  个人主页 | 引用 | 返回 | 删除 | 回复

TONY(游客)我的线路放不上去呀!怎么办呀

看《匠人手记》,与匠人同行!北航出版,正在热卖!

Re:经典按键防抖动51汇编程序(zt)
TONY(游客)发表评论于2008-11-13 17:29:00  个人主页 | 引用 | 返回 | 删除 | 回复

TONY(游客)我有个线路不知道怎么写,有人帮我吗?我是初学的。

看《匠人手记》,与匠人同行!北航出版,正在热卖!

Re:经典按键防抖动51汇编程序(zt)
TONY(游客)发表评论于2008-11-13 17:28:00  个人主页 | 引用 | 返回 | 删除 | 回复

TONY(游客)Q

看《匠人手记》,与匠人同行!北航出版,正在热卖!

Re:经典按键防抖动51汇编程序(zt)
???(游客)发表评论于2007-2-23 15:54:00  个人主页 | 引用 | 返回 | 删除 | 回复

???(游客)看不懂!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

看《匠人手记》,与匠人同行!北航出版,正在热卖!

Re:经典按键防抖动51汇编程序(zt)
mcuweijian发表评论于2006-12-1 18:09:00  个人主页 | 引用 | 返回 | 删除 | 回复

mcuweijian请问软件EMC测试是怎样的呀?
都有些怎样的要求?
谢谢!

看《匠人手记》,与匠人同行!北航出版,正在热卖!

回复:经典按键防抖动51汇编程序(zt)
fun(游客)发表评论于2006-10-14 11:17:00  个人主页 | 引用 | 返回 | 删除 | 回复

fun(游客)

能通过EMC测试吗?不稳定吧!!

垃圾程序,还说经典,按键只采样两次也叫可靠吗?

看《匠人手记》,与匠人同行!北航出版,正在热卖!

发表评论:
载入中...

芯片专题

器件专题

软件专题

硬件专题

综合专题

项目专题

原创专题

器件检测
LCD LED
按键 触摸键
E2PROM
电池 电机
电阻 电容 电感

指令系统
软件算法
编程规范
滤波算法
串行通讯

PCB设计
I2C PWM
红外遥控
充电技术
中断 ADC 

匠人手记
匠人夜话
网络心路
一周热点串烧
从零开始玩PIC
DIY旋转时钟

广告5号位 [投放]


学习板、开发板、编程器、下载器、仿真器(查看详情……)

广告3号位 [投放]

站内搜索


站外搜索


百度  google
mp3  歌词 
图片  FLASH 
知道  文档
新闻  词典 
地图  mp3 
软件  天网 
雅虎  爱问 
搜狗  讯雷 
网讯  华军 
天空 

21IC器件搜索
百宝箱分站
  • 《匠人的百宝箱》21IC站
  • 《匠人的百宝箱》21IC笔记团队
  • 《匠人手记》21IC书友会
  • 《匠人的百宝箱》MCUBLOG站
  • 《匠人的百宝箱》MCUBLOG笔记团队
  • 《匠人的百宝箱》EDN站
  • 《匠人手记》EDN书友会
  • 《匠人的百宝箱》与非网站
  • 《匠人的百宝箱》新浪站
  • 《匠人的百宝箱》百度站
  • 《匠人的百宝箱》网易126站
  • 《匠人的百宝箱》网易163站
  • 《匠人的百宝箱》互动出版网站
  • 广告4号位 [投放]

     
     

    匠人原创

    推荐阅读

    往日酷贴

     

    友情连接

     [更多酷站连接]

     

     

     

     

    [欢迎交换连接]

    [百宝箱之与非门分舵]

    [电脑圈圈的家当]

    [IC921的博客]

    [hotpower 的水潭]

    [八楼的呼吸]

    [柔月阁]

    [PIC论坛]

    [SMARTCODE电子书斋]

    [阿摆手记]

    [电子伙伴]

    [xwj的文君阁]

    [所长的BLOG]

    [海边淘沙]

    [单片机开发联盟]

    [数字电视之家]

    [软件开发之窗]

    [unaided的笔记]

    [小飞的笔记]

    [ICC AVR开发网]

    [我爱研发网]

    [infernal的笔记]

    [网址之家]

    [好东西网址大全]