|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | 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 |
各位幫幫忙,我有一程序不工作,自己看不出錯(cuò)在哪里 |
| 作者:festool 欄目:新手園地 |
請(qǐng)教各位,我有一程序匯編通過,放在實(shí)驗(yàn)板上不工作,請(qǐng)指教。 MCU 89S51。 ORG 0000H ;程序開始 LJMP MAIN ;跳轉(zhuǎn)到主程序 ORG 0003H ;外部中斷0入口地址 LJMP INT_0 ;外部中斷0中斷服務(wù)子程序 ORG 0100H MAIN: MOV SP,#78H ;設(shè)置堆棧指針 MOV DPTR,#TAB ;設(shè)置表首地址 MOV 0A6H,#0E1H ;啟動(dòng)看門狗 MOV 0A6H,#01EH MOV IE,#81H ;允許外部中斷0中斷 SETB IT0 ;邊沿觸發(fā) START: SETB P3.2 ;設(shè)置高電平 ,準(zhǔn)備下降沿觸發(fā) MOV P1,#03H ;初始化, LCALL DELAY1 ;延時(shí)30S WAIT_KEY: MOV 0A6H,#0E1H ;喂狗 MOV 0A6H,#01EH JB P3.0,WAIT_KEY ;等待QA按下,啟動(dòng) MOV R7,#10 KEY_TEST: JB P3.0,WAIT_KEY ;按鍵去抖動(dòng) DJNZ R7,KEY_TEST LOOP: MOV R0,#0 ; 1#機(jī)先工作,5S后2#機(jī)工作,之后等待中斷 NEXT: MOV A,R0 ; MOVC A,@A+DPTR ;查表 MOV P1, A ;從P1口送出表值 LCALL DELAY3 ; 調(diào)用延時(shí) INC R0 ;R0+1 CJNE R0,#02,NEXT ;R0=2,繼續(xù) JMP WAIT_KEY ;等待按鍵按下,重新開始一個(gè)循環(huán) TAB: DB 07H, 0FH INT_0: CLR EA ;關(guān)中斷 MOV R4, #10 INT_TEST:JB P3.2,INT_RET DJNZ R4,INT_TEST ;檢測中斷是否誤動(dòng)作,若是則返回 MOV P1,#23H ;外部中斷0程序初始化 LCALL DELAY2 ; 調(diào)用延時(shí) MOV P1,#03H ; 初始狀態(tài) POP 40H POP 41H MOV 40H,#00H MOV 41H,#01H PUSH 40H PUSH 41H INT_RET: SETB EA RETI ;中斷返回 DELAY1:MOV R4,#240 ; 延時(shí)30S SJMP LP1 DELAY2:MOV R4,#16 ; 延時(shí)2S SJMP LP1 DELAY3:MOV R4,#40 ; 延時(shí)5S, LP1:MOV R5,#250 LP2:MOV R6,#250 LP3:DJNZ R6,LP3 MOV 0A6H,#0E1H ;喂狗 MOV 0A6H,#01EH DJNZ R5,LP2 DJNZ R4,LP1 RET ;子程序返回 END |
| 2樓: | >>參與討論 |
| 作者: conwh 于 2006/7/23 22:24:00 發(fā)布:
你先檢查硬件部分EA |
|
| 3樓: | >>參與討論 |
| 作者: conwh 于 2006/7/23 22:25:00 發(fā)布:
再把程序規(guī)范一下,這樣誰能看? |
|
| 4樓: | >>參與討論 |
| 作者: festool 于 2006/7/23 22:52:00 發(fā)布:
控制線路圖 系統(tǒng)開始工作時(shí),干燥機(jī)、排風(fēng)機(jī)一直保持工作,30S后1#機(jī)先工作, 5S后2#后工作,之后等待中斷.氣壓到高位時(shí), 1#.2#機(jī)停止工作,等待QA按下,啟動(dòng) P1端口輸出分配: P1.0:干燥機(jī) P1.1:排風(fēng)機(jī) P1.2:1#機(jī) P1.3: 2#機(jī) P1.4:電磁閥 P1.5:(J6)備用
|
|
| 5樓: | >>參與討論 |
| 作者: 獨(dú)占一江秋 于 2006/7/24 0:35:00 發(fā)布:
c9的正極接到哪了? |
|
| 6樓: | >>參與討論 |
| 作者: 獨(dú)占一江秋 于 2006/7/24 1:29:00 發(fā)布:
你這里就沒有開中斷setb ea,怎么能工作? |
|
| 7樓: | >>參與討論 |
| 作者: festool 于 2006/7/24 7:38:00 發(fā)布:
你這里就沒有開中斷setb ea,怎么能工作? mov ie,#81h = setb ea + setb ex0 |
|
| 8樓: | >>參與討論 |
| 作者: festool 于 2006/7/24 7:45:00 發(fā)布:
c9的正極接到哪了? 19,20接壓力開關(guān)。系統(tǒng)啟動(dòng)時(shí)上電復(fù)位,壓力低時(shí)強(qiáng)制復(fù)位。 |
|
| 9樓: | >>參與討論 |
| 作者: conwh 于 2006/7/24 17:34:00 發(fā)布:
軟件沒看,先談?wù)動(dòng)布糠?br>1.結(jié)構(gòu)不合理,既然是雙路電源,為何不采取獨(dú)立的2路電源,對(duì)電磁部分進(jìn)行隔離? 2.復(fù)位電路有缺憾,沒有直接產(chǎn)生復(fù)位信號(hào).同時(shí)將復(fù)位信號(hào)線直接引出是極端危險(xiǎn)的. 3.提點(diǎn)建議:MCU的線(包括地線)不要引出;對(duì)于引出的線進(jìn)行隔離;對(duì)于電磁驅(qū)動(dòng)的要進(jìn)行隔離 ------------------ 軟件再看 |
|
| 10樓: | >>參與討論 |
| 作者: festool 于 2006/7/24 21:53:00 發(fā)布:
回復(fù) conwh 你提出的3點(diǎn)建議,有道理,我將對(duì)電路修改。謝! |
|
| 11樓: | >>參與討論 |
| 作者: 獨(dú)占一江秋 于 2006/7/25 13:12:00 發(fā)布:
? 在51單片機(jī)上,PUSH 40H、POP 40H 我編譯從未通過,都是這樣: MOV A,40H PUSH A |
|
| 12樓: | >>參與討論 |
| 作者: conwh 于 2006/7/25 23:24:00 發(fā)布:
可以呀 PUSH direct |
|
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |