作者wade0222 (熱火一哥)
看板ASM
標題[請益] 8051的程式請教
時間Sat May 28 04:21:39 2011
小弟是組合語言的新手
我想問雖然是作業
但絕對不是叫各位前輩幫我寫
是想請各位幫我看看我寫的程式碼出錯在哪
我真的DEBUG好久了
我覺得有可能是我一開始定義的空間錯了
但是我看教授的上課講義,也找不到哪裡有問題
燒錄程式也沒有顯示ERROR
拜託各位幫個忙看一下了
http://ppt.cc/gQNU <==這是程式流程
以下是我寫的程式碼
ORG 00H
NUMBER: DB 58H ;學號末兩碼
DATE: DB 22H ;生日日期
NUMBER2: DB 06H
NUMBER3: DB 08H
NUMBER4: DB 03H
NUMBER5: DB 05H
RESULTC: DS 1
RESULTD: DS 1
COMPARE: MOV A,NUMBER
MOV B,DATE
DIV AB
JNZ START1
LJMP START2
START1: MOV A,NUMBER ;A減B
SUBB A,DATE
ADD A,NUMBER2 ;A減B加6
MOV B,NUMBER3 ;(A減B加6)除8
DIV AB
MOV RESULTC,A
MOV RESULTD,B
MOV R2,RESULTD
LJMP DISPLAY
START2: MOV A,DATE ;B減A
SUBB A,NUMBER
ADD A,NUMBER4 ;B減A加3
MOV B,NUMBER5 ;(B減A加3)除5
DIV AB
MOV RESULTC,A
MOV RESULTD,B
MOV R2,RESULTD
DISPLAY: MOV DPTR,#TABLE
MOV A,RESULTC ;丟入商數
MOVC A,@A+DPTR
MOV P1,A ;使七段顯示器顯示數字
ACALL DELAY
MOV R1,#FFH
MOV P1,R1 ;熄滅
ACALL DELAY
DJNZ R2,DISPLAY ;餘數-1不為零的話跳回DISPLAY
MOV R1,#00H ;結束後全亮
MOV P1,R1
ACALL DELAY
LJMP END
DELAY: MOV R5,#200
S1: MOV R6,#100
S2: MOV R7,#50
DJNZ R7,$ ;R7減1,若非0則跳回自己
DJNZ R6,S2 ;R6減1,若非0則跳回S1
DJNZ R5,S1 ;R5減1,若非0則跳回S2
TABLE: DB 01H ; 0
DB 4FH ; 1
DB 12H ; 2
DB 06H ; 3
DB 4CH ; 4
DB 24H ; 5
DB 60H ; 6
DB 0FH ; 7
DB 00H ; 8
DB 04H ; 9
RET
END: END
請各位幫幫忙了,感謝!!!!
--
█◣ by jimmy508 █▇▅▃▁ ◢██◣ ▌
▇▇▇▇▇▇▇▇▇▋
██◣ ◢▋ █ ◥◣◢◤ ▅SNSD▅ █ █ █ ▍
═╗═╗
██◥◣◢◤▋▋▍ ▌◢█ ◢◤◥◣ ████ ◢ █ █ █ ▏
║ ║
██ ◥◤ ▋█ ● ▎▊ █ ║ ═╗║ ◢▁▁▁▁▁▁▁▁▁▎
╔╝╔╝
██ ▋ ◥◤ ▎ 人║ ═╣╠ ╚═╚═
歡迎搭乘少時車隊,您好,我是 ║ / ║ ,很高興為您服務。 車隊編號
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.43.238.191
1F:推 WolfLord:檢查A>=B 把A-B,C沒有設定就是A>=B C設定就是A<B 不是用 05/28 04:42
2F:→ WolfLord:DIV ,另外,一般DB大多寫在後面,而且應該要宣告區段 05/28 04:44
3F:→ WolfLord:比較不會不小心被編譯器當成CODE 05/28 04:45
4F:→ WolfLord:另外,7BAR的資料這樣寫會被當CODE,CPU會當掉,還有,程 05/28 04:47
5F:→ WolfLord:式結束要寫一個死迴圈避免CPU亂跑EX: SJMP $ 05/28 04:47
6F:→ WolfLord:(你的DELAY跟TABLE混在一起,END後面沒定義) 05/28 04:49
7F:→ markov:高手 高手 高高手XD 厲害 一下就挑很多問題出來 07/01 01:59