|
|||||||||||
| 技術(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 |
求助:簡(jiǎn)單de中斷程序被我都看傻了! |
| 作者:tc9148 欄目:單片機(jī) |
;定時(shí)器0工作方式1,定時(shí)1秒,產(chǎn)生中斷,p2.0接一個(gè)發(fā)光led ORG 0000H LJMP MAIN ORG 000BH LJMP TIME0 ORG 0100H MAIN: MOV A,#0FFH MOV R2,#0 MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB ET0 SETB EA SETB TR0 L0:MOV P2,A SJMP L0 ;--------中斷服務(wù)程序 TIME0: MOV TH0,#3CH MOV TL0,#0B0H INC R2 CJNE R2,#20,L1 CPL A MOV R2,#0 L1:RETI END 受不了了!我都調(diào)試1個(gè)星期了,準(zhǔn)確的說(shuō),是思考了一個(gè)星期,快瘋了! |
| 2樓: | >>參與討論 |
| 作者: happytang 于 2005/10/14 20:18:00 發(fā)布:
怎么啦? 基本程序書上都有,你怎么啦 |
|
| 3樓: | >>參與討論 |
| 作者: tc9148 于 2005/10/14 20:22:00 發(fā)布:
我也相信書上說(shuō)的,我也相信你們也都是成功過(guò)。 但是具體到我做的,就有問(wèn)題了, 我反復(fù)檢查了 硬件沒有問(wèn)題 這個(gè)程序也是好像沒有問(wèn)題 用下載線對(duì)s51燒寫的, |
|
| 4樓: | >>參與討論 |
| 作者: taoest 于 2005/10/14 23:34:00 發(fā)布:
什么樣的現(xiàn)象呢? 什么樣的現(xiàn)象呢? |
|
| 5樓: | >>參與討論 |
| 作者: 南方的老樹 于 2005/10/15 0:10:00 發(fā)布:
RE: L1: SETB ET0 ;允許定時(shí)器0中斷 SETB TR0 ;啟動(dòng)定時(shí)器0 RETI END 試試看! |
|
| 6樓: | >>參與討論 |
| 作者: yuansuini 于 2005/10/15 10:12:00 發(fā)布:
中斷標(biāo)志是硬件清的嗎? |
|
| 7樓: | >>參與討論 |
| 作者: joy1zhou 于 2005/10/15 10:52:00 發(fā)布:
是你傻了還是中斷程序傻了 |
|
| 8樓: | >>參與討論 |
| 作者: joy1zhou 于 2005/10/15 11:03:00 發(fā)布:
注意你用了P2.0 不知道你用的什么芯片,P2.0是否可用? 另外,也不知道你增強(qiáng)了LED的驅(qū)動(dòng)沒有。 |
|
| 9樓: | >>參與討論 |
| 作者: 南方的老樹 于 2005/10/15 11:20:00 發(fā)布:
原來(lái)的程序沒有問(wèn)題,應(yīng)該是單片機(jī)沒有工作 在學(xué)習(xí)板上已經(jīng)編譯并運(yùn)行驗(yàn)證為正確了 查晶振、瓷片電容,或者上電復(fù)位和看門狗是否工作 還有就是正如樓上所說(shuō)的,改成mov P1,A試試看 * - 本貼最后修改時(shí)間:2005-10-18 4:30:09 修改者:南方的老樹 |
|
| 10樓: | >>參與討論 |
| 作者: 阿西西里 于 2005/10/15 11:28:00 發(fā)布:
回復(fù) 1,普通的51單片機(jī)的P2口是沒有輸出鎖存的你可以把P2口換成P1口 2,不要把 L0:MOV P2,A SJMP L0 放在主程序中,沒有必要在主程序中不斷的跳轉(zhuǎn),耗資源 把這些放在中斷里執(zhí)行比較優(yōu)化 3,進(jìn)中斷最好堆棧,養(yǎng)成好的風(fēng)格 還有就是“南方的老樹 ”的 在中斷里開中斷沒有必要的 樓主的程序進(jìn)中斷的時(shí)候并 沒有關(guān)中斷 |
|
| 11樓: | >>參與討論 |
| 作者: yanfengzhu 于 2005/10/15 11:35:00 發(fā)布:
理論上程序沒問(wèn)題,應(yīng)該是硬件問(wèn)題 |
|
| 12樓: | >>參與討論 |
| 作者: qjy_dali 于 2005/10/15 11:54:00 發(fā)布:
樓主先說(shuō)話:用的哪個(gè)具體型號(hào)的MCU? |
|
| 13樓: | >>參與討論 |
| 作者: tc9148 于 2005/10/15 12:30:00 發(fā)布:
用的是AT89S51,我用下載線燒寫程序 大家想想看 |
|
| 14樓: | >>參與討論 |
| 作者: tc9148 于 2005/10/15 12:32:00 發(fā)布:
關(guān)鍵關(guān)鍵是:當(dāng)我改成查詢中斷(TF0)時(shí),一點(diǎn)問(wèn)題也沒有 真是想不通 |
|
| 15樓: | >>參與討論 |
| 作者: hwlijianch 于 2005/10/15 17:17:00 發(fā)布:
程序沒有問(wèn)題 程序是沒有問(wèn)題的,方便的話把硬件電路圖貼出來(lái)。 |
|
| 16樓: | >>參與討論 |
| 作者: oldzhang 于 2005/10/16 10:05:00 發(fā)布:
試驗(yàn)一下這個(gè)程序 ORG 0000H LJMP MAIN ORG 000BH MOV TL0,#0B0H MOV TH0,#3CH DJNZ 20H,NEXT MOV 20H,#10 CPL P2.0 NEXT: RETI MAIN: MOV TMOD,#1 SETB ET0 SETB EA MOV 20H,#10 SETB TR0 SJMP $ 你試驗(yàn)一下,如果不行,把CPL P2.0 改為CPL P1.0試驗(yàn). * - 本貼最后修改時(shí)間:2005-10-16 10:08:10 修改者:oldzhang |
|
| 17樓: | >>參與討論 |
| 作者: g2004 于 2005/10/16 11:05:00 發(fā)布:
別抱著一棵死樹吊死 這么簡(jiǎn)單的程序,既然調(diào)試不能通過(guò),就應(yīng)該換一個(gè)思路,重新調(diào)試,為什么一定要抱著一棵死樹吊死呢?從側(cè)面反映出摟主的應(yīng)變能力太差了哦。 |
|
| 18樓: | >>參與討論 |
| 作者: tc9148 于 2005/10/16 14:51:00 發(fā)布:
因?yàn)槲乙〞r(shí),所以必須用中斷,如果用查詢的會(huì)有很大的誤差存在 |
|
| 19樓: | >>參與討論 |
| 作者: born 于 2005/10/16 23:52:00 發(fā)布:
你的SP 堆棧指針 怎沒有設(shè)置????? |
|
| 20樓: | >>參與討論 |
| 作者: 2shift 于 2005/10/17 16:28:00 發(fā)布:
中斷服務(wù)程序沒有保護(hù)那些應(yīng)該保護(hù)的東西。! |
|
| 21樓: | >>參與討論 |
| 作者: tc9148 于 2005/10/17 19:11:00 發(fā)布:
我也沒有多少東西值得要保護(hù)阿! |
|
| 22樓: | >>參與討論 |
| 作者: 陳雙君 于 2005/10/18 8:20:00 發(fā)布:
你那個(gè)PSW去保擴(kuò)一下呀 各個(gè)標(biāo)志位去保護(hù)一下呀。 或是再寫一個(gè)得了。 |
|
| 23樓: | >>參與討論 |
| 作者: linwei1234 于 2005/10/18 9:24:00 發(fā)布:
LED接在端口和VCC,程序是OK的! 也有可能復(fù)位不良! 在復(fù)位時(shí)多加點(diǎn)NOP |
|
| 24樓: | >>參與討論 |
| 作者: kanprin 于 2005/10/18 9:49:00 發(fā)布:
不清楚! 沒有說(shuō)電路的接法, 也沒說(shuō)現(xiàn)象和你預(yù)期的結(jié)果有何出入,難以理解.不過(guò)基本定時(shí)為50MS的,我不確定眼睛能不能分辨出你的LED是否有閃亮,因?yàn)槟阒袛喾祷睾罅⒓淳桶褵魷缌?如果LED是共陽(yáng)接法)。僅調(diào)試上面的程序是沒必要作什么保護(hù),不過(guò)習(xí)慣不是很好。有中斷最好都要在進(jìn)入時(shí)做些相應(yīng)的保護(hù)動(dòng)作。以上程序沒有其他的邏輯錯(cuò)誤,可能就是時(shí)間不夠吧。要不在等待中斷時(shí)改為AJMP $ 而不像你上面一樣一直滅燈。 |
|
| 25樓: | >>參與討論 |
| 作者: pheavecn 于 2005/10/18 10:16:00 發(fā)布:
標(biāo)志都不保護(hù),該 死. |
|
| 26樓: | >>參與討論 |
| 作者: liujj 于 2005/10/18 12:32:00 發(fā)布:
肯定有問(wèn)題,問(wèn)題還不小 1,程序開始,應(yīng)該加MOV SP,#70H 2.進(jìn)入中斷時(shí)要進(jìn)行現(xiàn)場(chǎng)保護(hù) 在中斷中,你用到寄存器A,R2,要保護(hù) PUSH PSW PUSH ACC PUSH R2 3。T0不需要每次都賦值 好好再看看書,多看幾遍 |
|
| 27樓: | >>參與討論 |
| 作者: yang886 于 2005/10/18 13:14:00 發(fā)布:
各位說(shuō)的沒錯(cuò),問(wèn)題出在那,數(shù)據(jù)沒有保護(hù),我好象在將廢話 |
|
| 28樓: | >>參與討論 |
| 作者: skybean 于 2005/10/18 14:32:00 發(fā)布:
沒有清TF0 中斷里必須要清 TF0, 否則會(huì) 重復(fù)中斷 |
|
| 29樓: | >>參與討論 |
| 作者: 2shift 于 2005/10/18 14:46:00 發(fā)布:
tf0,tf1在中斷服務(wù)程序里面,硬件會(huì)清除的 |
|
| 30樓: | >>參與討論 |
| 作者: kanprin 于 2005/10/18 14:57:00 發(fā)布:
re: liujj 你說(shuō)的有些錯(cuò)了, 有些對(duì)了, 我早上說(shuō)的也錯(cuò)了些,呵呵,都沒考慮清楚就說(shuō)了的。 A要保護(hù),R2 一定不能保護(hù),這樣應(yīng)該才對(duì)!而MOV SP #70H, 似乎沒有花去太多的RAM空間。因?yàn)楸纠杏玫降闹袛嗖欢。默認(rèn)的SP好像是從07H單元開始吧,應(yīng)該夠用。而保護(hù)了A以后,這個(gè)程序中的中斷也就沒有意義了,改為位操作吧,進(jìn)入中斷后,你的CPL A, 改為 CPL P2.0 應(yīng)該就可以看到效果了。 |
|
| 31樓: | >>參與討論 |
| 作者: hb923 于 2005/10/18 16:27:00 發(fā)布:
把中斷里面的R2改成R3.OK! |
|
| 32樓: | >>參與討論 |
| 作者: xiaoyu9632 于 2005/10/18 20:09:00 發(fā)布:
還得好好看書 你的程序還沒有入門呢, CNT EQU 30H ORG 0000H LJMP MAIN ORG 000BH LJMP TIME0 MAIN: MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB ET0 SETB EA SETB TR0 SJMP $ ;--------中斷服務(wù)程序------------------- TIME0: PUSH A PUSH PSW MOV TH0,#3CH MOV TL0,#0B0H INC CNT MOV A,CNT CJNE A,#20,$+7 MOV CNT,#0 CPL P2.0 POP PSW POP A RETI END 要讓P2.0翻轉(zhuǎn)嗎?用這個(gè)程序就可以了 |
|
| 33樓: | >>參與討論 |
| 作者: gaoz2003 于 2005/10/18 20:30:00 發(fā)布:
中斷未保護(hù) |
|
| 34樓: | >>參與討論 |
| 作者: teddeng 于 2005/10/19 2:12:00 發(fā)布:
呵呵,這里初學(xué)者還不少啊 答得牛頭不對(duì)馬嘴! 程序根本就沒問(wèn)題! 只能是硬件了! 樓主說(shuō)換查詢方式就OK,那誰(shuí)都頭大啊,呵呵! 樓主再想想,別急,你真的可以肯定你僅僅只換種寫法就OK? |
|
| 35樓: | >>參與討論 |
| 作者: liujj 于 2005/10/19 8:21:00 發(fā)布:
to kanprin 在本程序中,你這樣做是可以的,但做為一個(gè)嚴(yán)謹(jǐn)?shù)墓こ處,?yīng)該把中斷中所用的都保護(hù)起來(lái),你的程序要修改或擴(kuò)充,豈不又要出問(wèn)題 |
|
| 36樓: | >>參與討論 |
| 作者: xiaowei446 于 2005/10/19 17:57:00 發(fā)布:
別灰心 |
|
| 37樓: | >>參與討論 |
| 作者: lufeijian 于 2005/10/19 19:50:00 發(fā)布:
嚴(yán)重同意! 把發(fā)光二極管接正確了準(zhǔn)沒事! |
|
| 38樓: | >>參與討論 |
| 作者: along_yu 于 2005/10/20 13:59:00 發(fā)布:
搞定沒有? |
|
| 39樓: | >>參與討論 |
| 作者: tc9148 于 2005/10/20 18:11:00 發(fā)布:
不好意思,我好久不來(lái)了,我還以為大家不愿意回答呢? 不好意思,我好久不來(lái)了,我還以為大家覺得這個(gè)問(wèn)題很傻,不愿意回答呢? 其實(shí),我曾經(jīng)按照書上(2本書以上)的程序?qū)戇^(guò),當(dāng)燒進(jìn)51后,總是沒有反應(yīng),準(zhǔn)確地說(shuō)是沒有進(jìn)入中斷,原來(lái)的程序堆棧是有的,標(biāo)志也是保護(hù)的,但是也沒有反應(yīng),改來(lái)改去總是沒有反應(yīng),我準(zhǔn)備換個(gè)單片機(jī)再說(shuō)! |
|
| 40樓: | >>參與討論 |
| 作者: tc9148 于 2005/10/20 19:31:00 發(fā)布:
見鬼了,換了個(gè)程序和單片機(jī),還是不行, p2.0接led的負(fù)端,VCC接正端,這只是一個(gè)簡(jiǎn)單的測(cè)試程序, 這是中斷: ORG 0000H LJMP MAIN ORG 000BH LJMP INTT0 ORG 0030H MAIN:MOV R1,#00H MOV SP,#70H MOV R7,#10 MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB ET0 SETB EA SETB TR0 MOV P2,R1 SJMP $ INTT0: PUSH ACC PUSH PSW MOV TH0,#3CH MOV TL0,#0B0H DJNZ R7,EXIT MOV R7,#10 INC R1 MOV P2,R1 EXIT: POP PSW POP ACC RETI END 這是查詢TF0:換成查詢就成功了!不知為什么? ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV R1,#00H MOV SP,#70H MOV R7,#10 MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB ET0 SETB EA SETB TR0 MOV P2,R1 L1: JNB TF0,$ INTT0: CLR TF0 MOV TH0,#3CH MOV TL0,#0B0H DJNZ R7,L1 MOV R7,#10 &n |
|
| 41樓: | >>參與討論 |
| 作者: tc9148 于 2005/10/20 20:13:00 發(fā)布:
要瘋了,還是不行,換程序和換51 奇怪的是: 我把程序改成查詢TF0就好了,一點(diǎn)沒有問(wèn)題 |
|
| 42樓: | >>參與討論 |
| 作者: tc9148 于 2005/10/20 20:24:00 發(fā)布:
我肯定,換個(gè)查詢就可以,并且我把編譯工具都換了, |
|
| 43樓: | >>參與討論 |
| 作者: cabbage36 于 2005/10/21 10:48:00 發(fā)布:
有問(wèn)題的 對(duì)中斷里用到的寄存器要入棧保護(hù),書中有 |
|
| 44樓: | >>參與討論 |
| 作者: kanprin 于 2005/10/21 11:06:00 發(fā)布:
re: 能不能說(shuō)一下現(xiàn)在的現(xiàn)象以及你預(yù)期的結(jié)果是什么? |
|
| 45樓: | >>參與討論 |
| 作者: 毛毛貓 于 2005/10/21 11:08:00 發(fā)布:
p2.0接led的負(fù)端,VCC接正端 ? 沒串限流電阻?? |
|
| 46樓: | >>參與討論 |
| 作者: tc9148 于 2005/10/21 12:18:00 發(fā)布:
串連電阻沒有必要, 你們都沒有看懂我的問(wèn)題, 1。查詢溢出時(shí)可以的 2。中斷時(shí)沒有響應(yīng) 入棧保護(hù)是有必要的,但是這個(gè)程序太簡(jiǎn)單不過(guò)了,幾乎沒用到附加存儲(chǔ)器, 再說(shuō),你們有的人寫的程序我都試過(guò)了,還是不行! |
|
| 47樓: | >>參與討論 |
| 作者: CXCHINA 于 2005/10/21 12:37:00 發(fā)布:
程序沒問(wèn)題,檢查硬件 程序沒問(wèn)題,檢查硬件 |
|
| 48樓: | >>參與討論 |
| 作者: wujinlei 于 2005/10/21 19:11:00 發(fā)布:
re 把中斷的偽指令放到中斷程序上邊,試試看 |
|
| 49樓: | >>參與討論 |
| 作者: 黃勇 于 2005/10/21 22:18:00 發(fā)布:
你改為這個(gè)試試 ORG 0000H LJMP MAIN ORG 000BH LJMP TIME0 ORG 0100H MAIN: MOV A,#0FFH MOV R2,#0 MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB ET0 SETB EA SETB TR0 L0:MOV P2,A SJMP L0 ;--------中斷服務(wù)程序 TIME0:clr tr0 增加的 clr et0 MOV TH0,#3CH MOV TL0,#0B0H INC R2 CJNE R2,#20,L1 CPL A MOV R2,#0 setb tr0 setb et0 增加的 L1:RETI END 你在試試 |
|
| 50樓: | >>參與討論 |
| 作者: winhiwang 于 2005/10/22 14:39:00 發(fā)布:
編程思想的問(wèn)題 1.累加器不能這樣用,這種習(xí)慣不好.中間數(shù)據(jù)最好用RAM. 2.使用R寄存器要先設(shè)定區(qū)段. 3.程序開始參數(shù)未初始化,這是不對(duì)的,因?yàn)橛行﹥?nèi)存上電后不會(huì)被初始化,比如SP! 4.中斷中要保護(hù)現(xiàn)場(chǎng),當(dāng)然沒有破壞也不必保護(hù)! !!單片機(jī)軟硬件設(shè)計(jì)都要考慮上電瞬間和上電后的情況 |
|
| 51樓: | >>參與討論 |
| 作者: huangyl007 于 2005/10/22 20:49:00 發(fā)布:
我用keil模擬下來(lái) 我用keil模擬下來(lái)程序似乎沒有問(wèn)題,但是SP指針跑到07H去了,這里可能有問(wèn)題 |
|
| 52樓: | >>參與討論 |
| 作者: tc9148 于 2005/10/22 23:15:00 發(fā)布:
我想我最好使用一臺(tái)好的仿真機(jī)試一下 |
|
| 53樓: | >>參與討論 |
| 作者: WOSHIDUDU 于 2005/10/24 21:53:00 發(fā)布:
我調(diào)試過(guò) ORG 0000H LJMP MAIN ORG 000BH LJMP TIME0 ORG 0100H MAIN: MOV A,#0FFH MOV R2,#0 MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB ET0 SETB EA SETB TR0 L0:MOV P2,A SJMP L0 ;--------中斷服務(wù)程序 TIME0:clr tr0; 增加的 clr et0 MOV TH0,#3CH MOV TL0,#0B0H INC R2 CJNE R2,#20,L1 CPL A MOV R2,#0 SETB ET0 SETB TR0 ; 增加的 L1: SETB ET0 SETB TR0 ; 增加的 RETI END |
|
| 54樓: | >>參與討論 |
| 作者: tc9148 于 2005/10/24 22:02:00 發(fā)布:
謝謝! |
|
| 55樓: | >>參與討論 |
| 作者: yzqok 于 2005/10/25 10:38:00 發(fā)布:
不知現(xiàn)在有否解決問(wèn)題了。 |
|
| 56樓: | >>參與討論 |
| 作者: tc9148 于 2005/10/25 21:37:00 發(fā)布:
祝賀祝賀!成功了! 我用的是89S51的下載線燒寫程序!原來(lái)我把psen腳接地了,我把它拆了,就可以了! 這是不容易阿!。 可喜可賀 可喜可賀 可喜可賀 可喜可賀 可喜可賀 可喜可賀 可喜可賀 可喜可賀 可喜可賀 可喜可賀 可喜可賀 可喜可賀 可喜可賀 |
|
| 57樓: | >>參與討論 |
| 作者: tc9148 于 2005/10/25 21:59:00 發(fā)布:
我改成這樣了也行! ORG 0000H LJMP MAIN ORG 000BH LJMP INTT0 ORG 0030H MAIN:MOV A,#00H MOV SP,#70H MOV R7,#10 MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB ET0 SETB EA SETB TR0 MOV P2,A SJMP $ INTT0: MOV TH0,#3CH MOV TL0,#0B0H DJNZ R7,EXIT MOV R7,#10 cpl A MOV P2,A EXIT: RETI end |
|
| 58樓: | >>參與討論 |
| 作者: tc9148 于 2005/10/25 22:00:00 發(fā)布:
看來(lái)psen可以影響中斷服務(wù),不知為什么? |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |