找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12926|回復(fù): 2
收起左側(cè)

簡單單片機(jī)記錄按鍵次數(shù),匯編語言

[復(fù)制鏈接]
ID:28497 發(fā)表于 2011-3-12 19:26 | 顯示全部樓層 |閱讀模式

最近剛學(xué)單片機(jī),為了方便,用了proteus和keil 電腦仿真,剛調(diào)試成功,用兩個數(shù)碼管顯示按鍵次數(shù),經(jīng)測試正確。

代碼可能不是很有效,也希望有朋友幫忙改進(jìn).

以此而推可以顯示更多位.現(xiàn)傳上proteus 設(shè)計圖和源碼,帶注解,因為看了論壇上那位肺腑之言的貼,要養(yǎng)好寫注解的習(xí)慣。

KEYCARD     BIT    00H             ;用于標(biāo)志是否有鍵按下
KEYCOU  EQU    5AH        ;用于記錄按下鍵的次數(shù)

ORG     0000H             ;程序開始
AJMP    START
ORG     30H               ;為避免占用中斷向量區(qū),主程序從30H開始

START:
    MOV    SP,#5FH        ;設(shè)置堆棧的初始地址
    MOV    P2,#0H         ;P2,P3的初始化
    MOV    P3,#0FFH
    CLR    KEYCARD         ;有按鍵標(biāo)志清0
    MOV    KEYCOU,#0       ;計數(shù)初值賦0

LOOP:                      ;循環(huán)掃描鍵盤

    ACALL  KEY_CHECK
    JNB    KEYCARD,DISPLAY
    INC    KEYCOU
      

DISPLAY:                    ;顯示程序

MOV    DPTR,#ASCII          ;獲得對應(yīng)的顯示碼
PUSH B

MOV A,KEYCOU
MOV B,#0AH
DIV AB                       ;選顯示第一位高位

 MOVC   A,@A+DPTR
 MOV    P0,A                 ;把顯示碼傳至A口
 SETB P2.1                   ;選通P2.0,顯示
ACALL  DELAY1S
CLR P2.1

MOV A, B
POP B
 MOVC   A,@A+DPTR
 MOV    P0,A                 ;把顯示碼傳至A口
 SETB P2.0                   ;選通P2.0,顯示
 ACALL  DELAY1S
 CLR P2.0
  AJMP    LOOP

 

KEY_CHECK:                   ;看有沒有鍵按下
    MOV    A,P3
    ANL    A,#0fFH ;邏輯與
    CJNE    A,#0FFH,KEY_CER   ;如果讀入的與寫出的不相等,延時消抖
    CLR    KEYCARD
    RET

KEY_CER:       ;延時,再讀入,看是否真的有鍵按下
    ACALL    DELAY1S
    MOV    A,P3
    ANL    A,#0FFH
    CJNE    A,#0FFH,KEY_CE
    CLR    KEYCARD
    RET

KEY_CE:
 MOV     A,P3     ;直等到按鍵放下,則算作一次
 ANL     A,#0FFH
 CJNE    A,#0FFH,KEY_CE
    SETB    KEYCARD        ;真的有鍵按下,則置標(biāo)志位
    RET
DELAY1S:       ;延時函數(shù)
    MOV    R7,#10
D1:
    MOV    R6,#50
    DJNZ    R6,$
    DJNZ    R7,D1
    RET


ASCII: DB  0C0H,0F9H,0A4H,0B0H,099H
       DB  092H,082H,0F8H,080H,090H
       DB  088H,083H,0C6H,0A1H,086H
       DB  08EH,08CH,0BFH,0FFH


END

 

 

jishu.jpg
回復(fù)

使用道具 舉報

ID:1 發(fā)表于 2011-3-12 21:28 | 顯示全部樓層

不錯 很牛啊

回復(fù)

使用道具 舉報

ID:28527 發(fā)表于 2011-3-14 00:21 | 顯示全部樓層
 學(xué)習(xí)了,很不錯,頂一個
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表