8051組合語言問題 - PCZONE 討論區

返回   PCZONE 討論區 > ▲ -- 網 路 生 活 分 享 區 > -- 閒 話 家 常 灌 水 版


PCZONE 討論區



通知

-- 閒 話 家 常 灌 水 版 上 面 那 些 硬 梆 梆 的 專 業 話 題 插 不 上 話 ?? 那 就 來 這 邊 就 你 周 遭 網 路 上 或 生 活 上 的 話 題 來 哈 拉 一 下

會員
8051組合語言問題
編碼如下
小弟現在卡在不知道如何讓他由鍵盤輸出我要的文字
如按1的時候顯示 I LOVE
按2顯示 HAPPY
而且要想辦法清除第1次輸入的結果才能顯示第2次的
清除的部份測試的結果都是無法完全清除
不知道這兩個問題該如何解決
有大大可以幫忙解答一下嗎??
用過好多方法了~"~

MASK EQU 00001111B
DSEG AT 30H
KBDBUF: DS 1

CSEG AT 00H
ORG 00H
JMP START
ORG 13H
JMP KBD_ISR
START:
MOV SP,#5FH

CLR P1.3

CLR P1.7 ;設定4bit模式
CLR P1.6 ;
SETB P1.5 ;
CLR P1.4 ;
SETB P1.2 ;
CLR P1.2 ;
CALL DELAY ;
;游標歸位
SETB P1.2 ;設定4bit
CLR P1.2 ;
SETB P1.7 ;改變bit
SETB P1.2 ;在設定4bit
CLR P1.2
CALL DELAY
;輸入模式設定
CLR P1.7
CLR P1.6
CLR P1.5
CLR P1.4
SETB P1.2
CLR P1.2
SETB P1.6
SETB P1.5
SETB P1.2
CLR P1.2
CALL DELAY
;顯示器控制
CLR P1.7
CLR P1.6
CLR P1.5
CLR P1.4
SETB P1.2
CLR P1.2
SETB P1.7
SETB P1.6
CLR P1.5 ;游標開關
SETB P1.4
SETB P1.2
CLR P1.2
CALL DELAY

MOV P0,#11111111B ;中斷程式
MOV P0,#11110000B ;<--
SETB IT1 ;
SETB EA ;
SETB EX1 ;

SETB P1.3

LOOP:
JMP $

CLEAR_LCD:
CLR P1.3
CLR P1.7
CLR P1.6
CLR P1.5
CLR P1.4
SETB P1.2
CLR P1.2
SETB P1.4
SETB P1.2
CLR P1.2
CALL LONG_DELAY
RET

SendChar:
MOV C,ACC.7
MOV P1.7,C
MOV C,ACC.6
MOV P1.6,C
MOV C,ACC.5
MOV P1.5,C
MOV C,ACC.4
MOV P1.4,C
SETB P1.2
CLR P1.2
MOV C,ACC.3
MOV P1.7,C
MOV C,ACC.2
MOV P1.6,C
MOV C,ACC.1
MOV P1.5,C
MOV C,ACC.0
MOV P1.4,C
SETB P1.2
CLR P1.2
CALL DELAY
RET
KBD_ISR:
PUSH ACC
CLR EX1
MOV P0,#11111111B
CALL KEY_SCAN
JNB F0,RECOUNT
CALL TRANS
MOV A,KBDBUF
CALL SendChar
RECOUNT:
MOV P0,#11110000B
JNB P3.3,$
SETB EX1
POP ACC
RETI
TRANS:
MOV A,KBDBUF
MOV DPTR,#KEY_TAB
MOVC A,@A+DPTR
MOV KBDBUF,A
RET


KEY_SCAN:
CLR F0
MOV KBDBUF,#0
CLR P0.3
CALL COL_SCAN
SETB P0.3
JB F0,FINISH_SCAN


CLR P0.2
CALL COL_SCAN
SETB P0.2
JB F0,FINISH_SCAN

CLR P0.1
CALL COL_SCAN
SETB P0.1
JB F0,FINISH_SCAN

CLR P0.0
CALL COL_SCAN
SETB P0.0

FINISH_SCAN:
RET
COL_SCAN:
JNB P0.6,GET_KEY
INC KBDBUF
JNB P0.5,GET_KEY
INC KBDBUF
JNB P0.4,GET_KEY
INC KBDBUF
RET
GET_KEY:
SETB F0
RET
DELAY:
PUSH 0
MOV R0,#50
DJNZ R0,$
POP 0
RET
LONG_DELAY:
PUSH 0
PUSH 1
MOV R0,#100
L0:
MOV R0,#200
DJNZ R0,$
DJNZ R1,L0
POP 1
POP 0
RET
KEY_TAB:

DB '1'
DB '2'
DB '3'
DB '4'
DB '5'
DB '6'
DB '7'
DB '8'
DB '9'
DB '*'
DB '0'
DB '#'
END

回覆
www.ublink.org
回覆: 8051組合語言問題
^^

誰知道你的板子長怎樣 !!
回覆
會員
回覆: 8051組合語言問題
引用:
作者: 門神 觀看文章
^^

誰知道你的板子長怎樣 !!
我並沒有要用板子做出來
而是要用edsim51模擬出來就可以了
回覆
散人
回覆: 8051組合語言問題
液晶顯示?LED七段顯示?
看起來應該是LED七段顯示,可以到超韌派問問。
回覆
*停權中*
回覆: 8051組合語言問題
沒有縮排看起來好痛苦....

直接清掉 DD RAM不行嗎?
回覆
全宇宙最閒的人
回覆: 8051組合語言問題
程式可用 [CODE] 的對映來表示,就不會省掉起頭的空格了。
另,原PO不是用模擬器嗎?就算單步追蹤也該找得出問題所在吧...
回覆
www.ublink.org
回覆: 8051組合語言問題
edsim51

Java寫的模擬器
回覆
散人
回覆: 8051組合語言問題
模擬器確實好用,學習上是可以,不過實際上要進行電路製作時,只怕
會有很大的差距。



回覆







 XML   RSS 2.0   RSS 
本站使用 vBulletin 合法版權程式
站務信箱 : [email protected]

本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。