找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2164|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

請(qǐng)各位大神幫分析一下程序的的各個(gè)意思功能

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:204609 發(fā)表于 2017-6-27 14:25 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
《單片機(jī)矩陣式鍵盤接口技術(shù)及編程》
鍵盤掃描程序:
從以上分析得到單片機(jī)鍵盤掃描程序的流程圖如圖2所示。程序如下
SCAN: MOV P1,#0FH
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,NEXT1
SJMP NEXT3
NEXT1: ACALL D20MS
MOV A,#0EFH
NEXT2: MOV R1,A
MOV P1,A
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,KCODE;
MOV A,R1
SETB C
RLC A
JC NEXT2
NEXT3: MOV R0,#00H
RET
KCODE: MOV B,#0FBH
NEXT4: RRC A
INC B
JC NEXT4
MOV A,R1
SWAP A
NEXT5: RRC A
INC B
INC B
INC B
INC B
JC NEXT5
NEXT6: MOV A,P1
ANL A,#0FH
CJNE A,#0FH,NEXT6
MOV R0,#0FFH
RET
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

地板
ID:155507 發(fā)表于 2017-6-28 18:51 | 只看該作者
  1. ;《單片機(jī)矩陣式鍵盤接口技術(shù)及編程》
  2. ;鍵盤掃描程序:
  3. ;從以上分析得到單片機(jī)鍵盤掃描程序的流程圖如圖2所示。程序如下

  4. SCAN:         MOV P1,#0FH ;一個(gè)端口(如P1口)就能組成4*4=16個(gè)按鈕 P1.0-P1.3設(shè)置為輸入線,行線P1.4-P.17設(shè)置為輸出線
  5.                 MOV A,P1 ; 檢測(cè)當(dāng)前是否有鍵被按下。檢測(cè)的辦法是P1.4-P1.7輸出全“0”,讀取P1.0-P1.3的狀態(tài),
  6.                 ANL A,#0FH ; 若P1.0-P1.3為全“1”,則無鍵閉合,不然有鍵閉合。
  7.                 CJNE A,#0FH,NEXT1 ; 有鍵閉合,轉(zhuǎn)移去除鍵抖動(dòng)延時(shí)
  8.                 SJMP NEXT3  ; 無鍵閉合,轉(zhuǎn)移
  9. NEXT1:         ACALL D20MS ; 延時(shí)20毫秒去除鍵抖動(dòng)
  10.                 MOV A,#0EFH ; 若有鍵被按下,應(yīng)識(shí)別出是哪一個(gè)鍵閉合
  11. NEXT2:         MOV R1,A
  12.                 MOV P1,A
  13.                 MOV A,P1
  14.                 ANL A,#0FH ; A里面的值和0F按位進(jìn)行與運(yùn)算!結(jié)果保存到A
  15.                 CJNE A,#0FH,KCODE ; 意思就是 2個(gè)數(shù)相比較 不 相等 則跳轉(zhuǎn)
  16.                 MOV A,R1
  17.                 SETB C ; 使CY=1 (進(jìn)位標(biāo)志置位指令) 把寄存器C置為1
  18.                 RLC A  ; 即將A的內(nèi)容左移一位,將進(jìn)位位C中的值移到累加器A的最低位,A的最高位移到C里。 #0DFH #0BFH #07FH
  19.                 JC NEXT2 ; 如果進(jìn)位C位為1 ,轉(zhuǎn)移
  20. NEXT3:         MOV R0,#00H ; 無效標(biāo)志值
  21.                 RET         ; 返回
  22. KCODE:         MOV B,#0FBH ;,然后可采用計(jì)算法將閉合鍵的行值和列值轉(zhuǎn)換成所定義的鍵值
  23. NEXT4:         RRC A ;指令就是帶進(jìn)位累加器循環(huán)右移 A的最低位移給C,并且C原來的值移給A的最高位。
  24.                 INC B
  25.                 JC NEXT4
  26.                 MOV A,R1
  27.                 SWAP A ;這條指令,將累加器A的高、低4位數(shù)據(jù)交換,也就是低4位數(shù)據(jù)進(jìn)入高4位,高4位數(shù)據(jù)進(jìn)入低4位。
  28. NEXT5:         RRC A
  29.                 INC B
  30.                 INC B
  31.                 INC B
  32.                 INC B
  33.                 JC NEXT5
  34. NEXT6:         MOV A,P1 ; 為了保證鍵每閉合一次CPU 僅作一次處理,必須卻除鍵釋放時(shí)的抖動(dòng)。
  35.                 ANL A,#0FH
  36.                 CJNE A,#0FH,NEXT6
  37.                 MOV R0,#0FFH ;有效標(biāo)志值
  38.                 RET         ;返回


復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

板凳
ID:215287 發(fā)表于 2017-6-27 23:41 | 只看該作者
有圖嗎?圖在哪
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 2017-6-27 20:18 | 只看該作者
匯編看不懂
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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