|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
這兩句是什么意思 |
| 作者:kdc 欄目:單片機(jī) |
你知道這個程式有什么用嗎? …… CLR P1.0 JB P1.0,MMK …… …… MMK: RET …… …… 子程序就一句,也不知道起什么作用。 |
| 2樓: | >>參與討論 |
| 作者: yixiao2000 于 2006/10/12 14:58:00 發(fā)布:
是不是用來測試單片機(jī)運(yùn)行情況的? 是不是用來測試單片機(jī)運(yùn)行情況的? |
|
| 3樓: | >>參與討論 |
| 作者: raistlins 于 2006/10/12 15:03:00 發(fā)布:
跳出 如果你這3行都在一個子程序里的話,意思就是掃描到P1.0高電平的時候中斷該子程序并且將PC值恢復(fù)到子程序運(yùn)行前的中斷點(diǎn). 如果在主程序里的話應(yīng)該編譯通過不了吧.. |
|
| 4樓: | >>參與討論 |
| 作者: conwh 于 2006/10/12 16:50:00 發(fā)布:
輸出,檢測 |
|
| 5樓: | >>參與討論 |
| 作者: lenglx 于 2006/10/12 16:54:00 發(fā)布:
是否手誤? SETB P1.0 JB P1.0,MKK 還有可能. |
|
| 6樓: | >>參與討論 |
| 作者: xiajiean 于 2006/10/12 16:58:00 發(fā)布:
子程序里的一段,用于判斷P1.0是否為高電平 |
|
| 7樓: | >>參與討論 |
| 作者: lenglx 于 2006/10/12 17:16:00 發(fā)布:
呵呵. 都CLR P1.0了,就算外部是高電平,你能檢測出來? |
|
| 8樓: | >>參與討論 |
| 作者: conwh 于 2006/10/12 17:18:00 發(fā)布:
RE:lenglx lenglx發(fā)表于 2006-10-12 16:54 侃單片機(jī) ←返回版面 是否手誤? SETB P1.0 JB P1.0,MKK 還有可能. ============= 你知道人家的外圍電路? |
|
| 9樓: | >>參與討論 |
| 作者: lenglx 于 2006/10/12 17:37:00 發(fā)布:
不知道. 就算我不知道外圍電路,如果他真是用來檢測P1.0引腳電平的話,那就應(yīng)當(dāng)先 SETB P1.0 而不是CLR P1.0 因?yàn)镃LR P1.0 將會使51內(nèi)部的那個MOS管導(dǎo)通,導(dǎo)致P1.0引腳拉低. 這種情況下,不管外部是什么電平(除非直接接電源,呵呵,但真接電源的話,"后果很嚴(yán)重"),JB P1.0,MKK都不會跳轉(zhuǎn). |
|
| 10樓: | >>參與討論 |
| 作者: conwh 于 2006/10/12 18:05:00 發(fā)布:
RE“LENGLX lenglx 發(fā)表于 2006-10-12 17:37 侃單片機(jī) ←返回版面 不知道. 就算我不知道外圍電路,如果他真是用來檢測P1.0引腳電平的話,那就應(yīng)當(dāng)先 SETB P1.0 而不是CLR P1.0 因?yàn)镃LR P1.0 將會使51內(nèi)部的那個MOS管導(dǎo)通,導(dǎo)致P1.0引腳拉低. 這種情況下,不管外部是什么電平(除非直接接電源,呵呵,但真接電源的話,"后果很嚴(yán)重"),JB P1.0,MKK都不會跳轉(zhuǎn). =========================== 對頭,我看馬虎了。對不起了。 |
|
| 11樓: | >>參與討論 |
| 作者: 平常人 于 2006/10/12 22:15:00 發(fā)布:
發(fā)表點(diǎn)外行人的見解 假設(shè): 1)該I/O口用于關(guān)閉某個外部信號,使它不能進(jìn)到單片機(jī)中; 2)若這個外部信號進(jìn)入單片機(jī),可觸發(fā)一個中斷,中斷處理程序?qū)⒃揑/O口置高就可以阻止上述程序JB后面語句的執(zhí)行 3)不能簡單地用關(guān)中斷擋住這個外部信號 想象一下,若只有CLR而沒有后面的JB,當(dāng)執(zhí)行CLR語句時或之前,那個外部信號觸發(fā)了中斷,則無法達(dá)到“阻止JB后面語句的執(zhí)行”的目的。 也就是說:CLR用于關(guān)閉外來信號,JB用于保證在關(guān)門的過程中外部信號沒有進(jìn)來。 綜上分析,這樣寫是十分必要的! 也許確如上面幾位大蝦所說,這是個錯誤,但從操作系統(tǒng)中互斥的角度出發(fā),我寧愿相信我的假設(shè)適用于這個程序。當(dāng)然,很有可能有其他考慮,但應(yīng)該是以互斥的概念來解釋。 |
|
| 12樓: | >>參與討論 |
| 作者: conwh 于 2006/10/12 22:42:00 發(fā)布:
說2句吧 CLR 口位后,除了啟動(或關(guān)閉)外,同時也默認(rèn)了該口為輸出方式,所以使用JB口(讀操作)已經(jīng)沒有意義了,各位看看是不是這樣的。 |
|
| 13樓: | >>參與討論 |
| 作者: dengm 于 2006/10/13 8:06:00 發(fā)布:
同意“平常人”的看法,還有一種可能:內(nèi)部的那個MOS管已被搞斷 |
|
| 14樓: | >>參與討論 |
| 作者: lenglx 于 2006/10/13 12:21:00 發(fā)布:
也許.. 平常人 發(fā)表于 2006-10-12 22:15 侃單片機(jī) ←返回版面 發(fā)表點(diǎn)外行人的見解 假設(shè): 1)該I/O口用于關(guān)閉某個外部信號,使它不能進(jìn)到單片機(jī)中; 2)若這個外部信號進(jìn)入單片機(jī),可觸發(fā)一個中斷,中斷處理程序?qū)⒃揑/O口置高就可以阻止上述程序JB后面語句的執(zhí)行 3)不能簡單地用關(guān)中斷擋住這個外部信號 想象一下,若只有CLR而沒有后面的JB,當(dāng)執(zhí)行CLR語句時或之前,那個外部信號觸發(fā)了中斷,則無法達(dá)到“阻止JB后面語句的執(zhí)行”的目的。 也就是說:CLR用于關(guān)閉外來信號,JB用于保證在關(guān)門的過程中外部信號沒有進(jìn)來。 綜上分析,這樣寫是十分必要的! 也許確如上面幾位大蝦所說,這是個錯誤,但從操作系統(tǒng)中互斥的角度出發(fā),我寧愿相信我的假設(shè)適用于這個程序。當(dāng)然,很有可能有其他考慮,但應(yīng)該是以互斥的概念來解釋 --------------------------------------------------------------------------------------------- 我對你的這段話不是很理解. 不過假設(shè)如你所說,CLR P1.0能阻止某個外部信號好了.那么CLR后面的語句也應(yīng)當(dāng)是檢測那個被阻止的外部信號,而不是檢測P1.0本身. CLR P1.0 JB P1.0,MMK ;從互斥的觀點(diǎn)看,這里應(yīng)當(dāng)檢測互斥信號標(biāo)志(或者是一個標(biāo)志,或者是一個IO,但肯定不能是P1.0) …… ; 這部分應(yīng)當(dāng)是訪問互斥對象了. …… MMK: RET --------------------------------------------------------------------------------------------- dengm 發(fā)表于 2006-10-13 08:06 侃單片機(jī) ←返回版面 同意“平常人”的看法,還有一種可能:內(nèi)部的那個MOS管已被搞斷 如果是內(nèi)部的那個MOS管已經(jīng)斷了,CLR P1.0又有什么用? --------------------------------------------------------------------------------------------- 讀鎖存器 /| --------------------/ | .------- -< |-------------+ | \ | | | \| | vcc | | | | | .-. | .----------------. | | | 內(nèi)部總線 | | | | | | ---------+-----|D Q |---+ '-' | | | | | | | |-----+---- P1.X | | | ||-+ | 寫鎖存器 | | | || | ---------)-----|CL /Q |--------||-+ | | | | | | | '----------------' | | | === | | GND | | | | /| | | / | | '------- -< |---------------------------+ ---------------------\ | 讀引腳 \| |
|
| 15樓: | >>參與討論 |
| 作者: jt4117 于 2006/10/13 16:51:00 發(fā)布:
是用來抗干擾的,增加系統(tǒng)可靠性(我認(rèn)為) |
|
| 16樓: | >>參與討論 |
| 作者: conwh 于 2006/10/13 17:03:00 發(fā)布:
lenglx就是厲害,用字符竟然作出一個圖來 |
|
| 17樓: | >>參與討論 |
| 作者: 平常人 于 2006/10/13 17:21:00 發(fā)布:
解釋這里如何實(shí)現(xiàn)互斥的概念 假如在CLR之前那條指令與JB之間剛好有一個中斷發(fā)生,即CPU執(zhí)行完CLR指令前/后進(jìn)入了中斷處理程序X,在X中剛好有指令SETB P1.0,當(dāng)X完成返回后,CPU會繼續(xù)從JB處開始執(zhí)行,這時JB就會發(fā)生跳轉(zhuǎn)躲開互斥區(qū)。 但如果CLR可以阻止這個有SETB P1.0指令的中斷發(fā)生,那么CPU一旦進(jìn)入互斥區(qū),可以進(jìn)入X的中斷就不可能再進(jìn)來了。 注:互斥區(qū)是JB到RET間的程序段。 |
|
| 18樓: | >>參與討論 |
| 作者: conwh 于 2006/10/13 17:34:00 發(fā)布:
這已經(jīng)深入到玄學(xué)中了,哈哈。 2條指令引人入勝呀,這就是單片機(jī)的魅力,不按套路出招,將無招勝有招,將無形變有形。以上大蝦分析的都有道理,“平常人”以不平常的道理演繹了一個大蝦的風(fēng)范。 * - 本貼最后修改時間:2006-10-13 23:15:05 修改者:conwh |
|
| 19樓: | >>參與討論 |
| 作者: rtfsc 于 2006/10/13 20:45:00 發(fā)布:
- 假如在CLR之前那條指令與JB之間剛好有一個中斷發(fā)生,即CPU執(zhí)行完CLR指令前/后進(jìn)入了中斷處理程序X,在X中剛好有指令SETB P1.0,當(dāng)X完成返回后,CPU會繼續(xù)從JB處開始執(zhí)行,這時JB就會發(fā)生跳轉(zhuǎn)躲開互斥區(qū)。 但如果CLR可以阻止這個有SETB P1.0指令的中斷發(fā)生,那么CPU一旦進(jìn)入互斥區(qū),可以進(jìn)入X的中斷就不可能再進(jìn)來了。 注:互斥區(qū)是JB到RET間的程序段。 ------------------------------------- 假如是這樣的話,JB還有存在的意義嗎? 就2條指令也能想這么多,真無聊。 |
|
| 20樓: | >>參與討論 |
| 作者: yuands 于 2006/11/5 21:38:00 發(fā)布:
延時 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |