總網頁瀏覽量

2021年1月19日 星期二

【8051 MCU】關於外部中斷旗標(IEx)被觸發的條件探討──Intel MCS-51官方手冊、Bible原文書與AT89S51/AT89S52實際狀況之差異

歡迎透過合法的方式分享此文內容,若要轉載/轉貼,請明確貼出此原始連結並標示作者基本資訊請勿抄襲及非法轉貼(例如擷取內文但並未註明出處)

不論是Intel早期的MCS-51 PROGRAMMER'S GUIDE AND INSTRUCTION SET(如下圖),或者8051界的Bible原文書: The 8051 Microcontroller and Embedded Systems (2nd Edition)原文課本(作者為Mazidi, Muhammad Ali, Mazidi, Janice G., McKinlay, Rolin D.)內容中的P.326的Figure 11-4.及P.329的Figure 11-6.內文敘述都表示外部中斷旗標(flag)也就是IEx(x是0或1)是在偵測到外部輸入falling edge signal trigger 的時候才被set(設為1)。

(註: x為0或1)

Intel的MCS-51 PROGRAMMER'S GUIDE AND INSTRUCTION SET之對應內容


也就是如下圖狀況所示(按其原意並自行繪製):

Intel MCS-51手冊與8051原文書所述之中斷旗標觸發方式/機制


但是,從近代實際在課堂上常使用的8051 MCU款式AT89S51/AT89S52的Atmel AT89S51/AT89S52 datasheet裡面可看到,無論是選擇falling edge trigger或者low level trigger(藉由對ITx暫存器位元的寫入設定值來選擇)觸發,當這兩種條件之中的任一種條件達成時,都會使得外部中斷旗標(Flag)也就是IEx(x是0或1)被set(設為1),如下圖(圖片來源為Atmel AT89S51/AT89S52 datasheet)。


AT89S51/AT89S52的Atmel AT89S51/AT89S52 datasheet之對應內容


(註: 當然了,這幾年在許多大學的MCU或名稱為微處理機系統及介面技術的相關課程上,其教材都被改為Arduino的淺層使用,但是卻沒深入MCU的細節原理了,故相對沒辦法太紮實)


由上述內容可看出差異,或許是後來的8051(AT89S51/AT89S52等款式)被改良了。因為如果按照早期那樣的方式/機制(官方手冊與原文書所示),在希望使用low level trigger方式的情況下就只能使用中斷而無法藉由去輪詢(polling)旗標狀態的方式去偵測外部輸入到INTx腳位的low level signal,在開發使用上相對就沒有那麼的自由。


--------------------------

孫文良 (阿良的嵌入式系統技術學習區)

【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章

沒有留言:

張貼留言