zhaor的笔记 https://bbs.21ic.com/?36955 [收藏] [复制] [RSS]

日志

Keil和Proteus结合实例之一 LED花样流水灯 续三

已有 3585 次阅读2005-6-28 18:30 |个人分类:单片机|系统分类:单片机


程序清单


; 定义几个变量。


UpDown        BIT           00H    ;上下行标志。


StartEnd     BIT           01H    ;起动及停止标志。


LAMPCODE EQU      21H    ;存放流动的数据代码。


; 程序开始。


ORG  0000H


AJMP MAIN


ORG  30H


;主程序。


MAIN:


MOV   SP,#5FH


MOV   P1,#0FFH


CLR         UpDown        ;启动时处于向上的状态。


CLR         StartEnd     ;启动时处于停止状态。


MOV   LAMPCODE,#0FEH     ;单灯流动的代码。


LOOP:    


ACALL    KEY         ;调用键盘程序。


JNB    F0,LNEXT    ;如果无键按下,则继续,


ACALL    KEYPROC       ;否则调用键盘处理程序。


LNEXT:ACALL  LAMP      ;调用灯显示程序。


AJMP LOOP              ;反复循环,主程序到此结束。


;延时程序,键盘处理中调用。


DELAY:MOV      R7,#100


D1:     MOV   R6,#100


DJNZ R6,$


DJNZ R7,D1


RET


;键盘处理程序。


KEYPROC:


MOV   A,B                ;B寄存器中获取键值。


JB       ACC.2,KeyStart ;分析键的代码,某,


JB       ACC.3,KeyOver  ; 位被按下,则该位为1


JB       ACC.4,KeyUp


JB       ACC.5,KeyDown


AJMP KEY_RET


KeyStart:SETB  StartEnd     ;第一个键按下后的处理。


AJMP KEY_RET


KeyOver:CLR    StartEnd     ;第二个键按下后的处理。


AJMP KEY_RET


KeyUp:SETB     UpDown        ;第三个键按下后的处理。


AJMP KEY_RET


KeyDown:CLR   UpDown        ;第四个键按下后的处理。


KEY_RET:


RET


; 按键检测程序。


KEY:  


CLR         F0              ;F0,表示无键按下。


ORL   P3,#00111100B    ;P3口的接有键的四位置1


MOV   A,P3               ;P3的值。


ORL   A,#11000011B        ;将其余4位置1


CPL    A                   ;取反。


JZ      K_RET                 ;如果为0则一定无键按下,


CALL DELAY                 ;否则延时去键抖。


ORL   P3,#00111100B    ;下面的程序目的是再次。


MOV   A,P3               ; 确认按键是否按下。


ORL   A,#11000011B


CPL    A


JZ     K_RET    ;有键按下?在此设置断点!


MOV   B,A                ;确实有键按下,将键值存入B中。


SETB F0                  ;设置有键按下的标志。


;以下的代码是可以被注释掉的,如果去掉注释,就具有判断键是否释放的功能,否则没有。


K_RET:   ;ORL  P3,#00111100B     ;此处循环等待键的释放。


      ;MOV  A,P3


      ;ORL  A,#11000011B


      ;CPL        A


      ;JZ           K_RET1                 ;读取的数据取反后为0说明键释放了。


      ;AJMP      K_RET


      ;K_RET1:CALL DELAY        ;消除后沿抖动。


RET


;

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)