|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
LED循環(huán)亮的問(wèn)題(取表方式) |
| 作者:衷政偉 欄目:單片機(jī) |
寫(xiě)了一個(gè)讓P1口的led循環(huán)亮的代碼 順序是:p1.0 p1.2......p1.7 p1.0 p1.2 公共端接+5v led的負(fù)極接p口 注釋沒(méi)寫(xiě)大家應(yīng)該都懂的. 代碼: ORG 0000H AJMP START ORG 0030H START: MOV SP, #5FH MOV P1, #0FFH LOOP: CLR A LOOP1: MOV DPTR, #TAB MOVC A, @A+DPTR MOV P1, A INC R0 LCALL DELAY MOV A, R0 CJNE A, #8, LOOP1 MOV R0, #00H AJMP LOOP DELAY: MOV R7, #20 D1: MOV R6, #20 D2: MOV R5, #248 DJNZ R5, $ DJNZ R6, D2 DJNZ R7, D1 RET TAB: DB 0FEH, 0FDH, 0FBH, 0F7H, 0EFH DB 0DFH, 0BFH, 7FH END 這段運(yùn)行后卻有問(wèn)題. 如果把代碼中的所有R0改為R1代碼運(yùn)行正常.怎么回事? 還有如果原代碼不變,在LOOP: CLR A前加一條MOV R0, #00H也運(yùn)行正常,怎么回事。 |
| 2樓: | >>參與討論 |
| 作者: maychang 于 2006/7/28 1:52:00 發(fā)布:
考慮一下:第一次運(yùn)行LOOP時(shí),R0的值如果是8或大于8 第二次執(zhí)行LOOP1,執(zhí)行結(jié)果是什么? |
|
| 3樓: | >>參與討論 |
| 作者: 衷政偉 于 2006/7/28 9:07:00 發(fā)布:
R0---R7初始狀態(tài)的值可都是#00H啊 用R1為什么可以呢? |
|
| 4樓: | >>參與討論 |
| 作者: 層層天 于 2006/7/28 9:54:00 發(fā)布:
運(yùn)行后是什么問(wèn)題? 能講講嗎? |
|
| 5樓: | >>參與討論 |
| 作者: kfawj 于 2006/7/28 10:45:00 發(fā)布:
明顯的變量問(wèn)題 r0為常用寄存器。 這屬于你還沒(méi)有建立好良好的編程習(xí)慣,導(dǎo)致的一種沒(méi)有問(wèn)題的問(wèn)題。 你應(yīng)該做好及時(shí)保存原有變量(PUSH),并對(duì)其進(jìn)行初始化。 這樣,才不會(huì)導(dǎo)致今后更讓你頭痛的多步錯(cuò)誤。不然到時(shí)有查不程序表的時(shí)候。 |
|
| 6樓: | >>參與討論 |
| 作者: 衷政偉 于 2006/7/28 11:17:00 發(fā)布:
R0---R7的初始值可都是#00H啊 R0---R7的初始值可都是#00H啊 難道在用R0時(shí)還要多加一句: MOV R0, #00H 用R1的話如果不加 MOV R1, #00H 程序也運(yùn)行正常啊 怎回事? |
|
| 7樓: | >>參與討論 |
| 作者: conwh 于 2006/7/28 12:13:00 發(fā)布:
做這個(gè)流水用移位是最簡(jiǎn)單的 |
|
| 8樓: | >>參與討論 |
| 作者: 衷政偉 于 2006/7/28 12:19:00 發(fā)布:
用什么方法我肯定知道 用什么方法我肯定知道 既然問(wèn)題出來(lái)了希望以此論題 |
|
| 9樓: | >>參與討論 |
| 作者: twz8858877 于 2006/7/28 16:25:00 發(fā)布:
R0---R7的初始值可都是#00H啊 誰(shuí)說(shuō)的?上電時(shí)ram狀態(tài)應(yīng)為不確定值。復(fù)位時(shí)ram狀態(tài)保持復(fù)位前狀態(tài)不變。 |
|
| 10樓: | >>參與討論 |
| 作者: 衷政偉 于 2006/7/28 20:19:00 發(fā)布:
有哪位高手能解釋下嗎 有哪位高手能解釋下嗎 |
|
| 11樓: | >>參與討論 |
| 作者: 衷政偉 于 2006/7/28 20:54:00 發(fā)布:
經(jīng)過(guò)編譯連接后用跟蹤功能發(fā)現(xiàn)R0確實(shí)是從0開(kāi)始的 |
|
| 12樓: | >>參與討論 |
| 作者: maychang 于 2006/7/28 21:06:00 發(fā)布:
51單片機(jī)RAM上電后是隨機(jī)數(shù),但SFR不是,看datasheet “經(jīng)過(guò)編譯連接后用跟蹤功能發(fā)現(xiàn)R0確實(shí)是從0開(kāi)始的” 那是軟仿真,與實(shí)際情況可能是不一樣的。 “如果把代碼中的所有R0改為R1代碼運(yùn)行正常.怎么回事?” 你這片51,恰好R1上電后是00H。不信,可以用R1,并且在START處加一條 MOV R1,#09H 看看結(jié)果與你用R0是不是一樣。 |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |