關於LED時鐘電路的問題 |
答題得分者是:暗黑破壞神
|
chenman
一般會員 發表:5 回覆:12 積分:3 註冊:2004-10-24 發送簡訊給我 |
displaybuffer equ 30h scancounter equ 38h onesecondcounter equ 39h hourse equ 3ah minuite equ 3bh second equ 3ch ;------------------------------ org 0h jmp reset1 org 0bh jmp timerint reset1: mov sp,#70h mov scancounter,#0 mov hourse,#12h mov minuite,#00h mov second,#00h ;------------------------------ mov tmod,#00000001b mov TL0,#(8192-4000).mod.32 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~↑此處有錯 mov TH0,#(8192-4000)/32 mov ie,#10000010b setb tr0 ;------------------------------ mainloop: jb p3.0,checkminuitekey mov second,#0 mov r5,#2 call delay jnb p3.0,$ checkminuitekey: jb p3.1,hoursekey mov a,minuite add a,#1 da a mov minuite,a cjne a,#60h,notover1 mov minuite,#0 notover1: mov r5,#2 call delay jnb p3.1,$ hoursekey: jb p3.2,mainloop mov a,hourse add a,#1 da a mov hourse,a cjne a,#24h,notover2 mov hourse,#0 notover2: mov r5,#2 call delay jnb p3.2,$ jmp mainloop ;------------------------------ timerint: mov TL0,#(8192-4000).mod.32 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~↑此處有錯 mov TH0,#(8192-4000)/32 push A ~~~~~~~~~~~~~~~~~~↑此處有錯 push psw setb rs0 clr rs1 djnz onesecondcounter,notonesecond mov onesecondcounter,#(1000/4) call clock call displayclockintodisplaybuffer notonesecond: call scandisplay pop psw pop a ~~~~~~~~~~~~~~~~~~↑此處有錯 reti ;------------------------------ scandisplay: mov r0,#scancounter inc @r0 cjne @r0,#8,notover mov @r0,#0 notover: mov a,@r0 add a,#displaybuffer mov r1,a mov a,@r0 swap a orl a,@r1 mov p1,a ret ;------------------------------ clock: mov a,second add a,#1 da a mov second,a cjne a,#60h,notoverflow mov second,#0 mov a,minuite add a,#1 da a mov minuite,a cjne a,#60h,notoverflow mov minuite,#0 mov a,hourse add a,#1 da a mov hourse,a cjne a,#60h,notoverflow mov hourse,#0 notoverflow: ret ;------------------------------ displayclockintodisplaybuffer: mov r3,#3 mov r1,#displaybuffer loop: mov a,second mov b,#10h div ab mov @r1,b inc r1 mov a,minuite mov b,#10h div ab mov @r1,b inc r1 mov @r1,a inc r1 mov a,hourse mov b,#10h div ab mov @r1,b inc r1 mov @r1,a ret ;------------------------------ delay: mov r6,#40 del: mov r7,#249 d1: djnz r7,d1 djnz r6,del djnz r5,delay ret end此電路是LED時鐘電路~~~ 我是照著課本範例做的~~可是在編碼的時後有錯誤~~ 怎麼改都無法正確~~不知是何原因!有人可以為我解答的一下嗎= = |
pdcmg
一般會員 發表:3 回覆:22 積分:20 註冊:2004-11-09 發送簡訊給我 |
|
chenman
一般會員 發表:5 回覆:12 積分:3 註冊:2004-10-24 發送簡訊給我 |
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
首先,你要知道.mod.這是一個虛擬指令。
所以它不是51的指令。
如果不是 51 的指令。那就是由你的組譯器來做到這個功能。
所以。只能跟你說。很可惜,你的組譯器沒有這個指令。
一個是你換一個組譯器。(不要找我要。你可以去買一本旗標的書,林X茂寫的。那個就有附了,那一個有這個指令)
當然啦。對於窮學生來說,一本書可能可以吃一週了。
那就要去了解這個虛擬指令做了什麼事????
mov TL0,#(8192-4000).mod.32.mod.是取餘數。什麼的餘數?8192-4000 之後的值。再除以32後餘數。 所以應該是。。。。。0. 所以把這行改成 mov TL0, #00H這樣就可以了。^_^ |
chenman
一般會員 發表:5 回覆:12 積分:3 註冊:2004-10-24 發送簡訊給我 |
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
嗯,好吧。既然我上一篇你看不懂。
那我用白一點的來說好了。
你用的工具太爛了。
去買一本書。那本書是旗標出的。
林伸茂寫的。
叫 8051 徹底研究。
不管什麼篇都可以。
你用它書上附的工具來組譯你的程式碼就一切OK了。
至少我用你的程式碼,試過可以組譯,沒有錯誤了。
Assembler for 8051 (EDUCATION) Copyright(C) 1996 by EVERPRECISION TECH CORP. This software was written by C.Y.L Date:88/06/18 -------------------------------------------------------------------- Current Address:f5 Output OBJ file name |
chenman
一般會員 發表:5 回覆:12 積分:3 註冊:2004-10-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |