|
|||||||||||
| 技術(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 |
C51 外部中斷INTO |
| 作者:cyf2005 欄目:ARM技術(shù) |
keil uVision2中調(diào)試,編寫(xiě)一個(gè)外部中斷程序(INT0),低電平觸發(fā)方式,INT0為高優(yōu)先級(jí)中斷 中斷程序如下: void S_int0 () interrupt 0 using 1 { status=P1; flag=1; /*保存輸入口的狀態(tài),提供輸出信息*/ } 調(diào)試后生成的匯編代碼為: C:0x0000 LJMP C:0093 S_int0: C:0x0003 MOV status(0x08),P1(0x90) C:0x0006 SETB flag(0x20.0) C:0x0008 RETI C:0x0009 NOP C:0x000A NOP C:0x000B NOP C:0x000C NOP C:0x000D NOP C:0x000E LJMP S_int0 中斷程序中如果添加一個(gè)延時(shí)100MS,或者更多的語(yǔ)句。 void S_int0 () interrupt 0 using 1 { status=P1; msec(100); flag=1; /*保存輸入口的狀態(tài),提供輸出信息*/ } 匯編成的代碼為: C:0x0000 LJMP C:00B7 C:0x0003 NOP C:0x0006 NOP C:0x0008 NOP C:0x0009 NOP C:0x000A NOP C:0x000B NOP C:0x000C NOP C:0x000D NOP C:0x000E LJMP S_int0(C:0093) 調(diào)試的時(shí)候?qū)3.2口改成低電平(模擬外部低電平),前面可以進(jìn)入中斷,執(zhí)行。 后者到C:0x0003 NOP不能往下執(zhí)行。 在options的選項(xiàng)C51中選取Interrupt vectors at a填寫(xiě)了0x0003。 初入C51 請(qǐng)那位前輩指點(diǎn) ,能否給我解釋一下問(wèn)題是怎樣出現(xiàn)的。 能否在C51中解決 外部中斷入口地址 在C:0x0003能夠生成一個(gè)LJMP語(yǔ)句。謝了! |
| 2樓: | >>參與討論 |
| 作者: zml7758 于 2005/9/16 17:34:00 發(fā)布:
當(dāng)復(fù)位後INT0的地址就是0003 當(dāng)復(fù)位後INT0的地址就是0003 |
|
|
|
| 免費(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) |