久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 6502單片機編程--中斷

6502單片機編程--中斷

作者: 時間:2016-11-24 來源:網絡 收藏
中斷
6502有3個中斷IRQ/BRK、NMI和RESET,每個中斷都有一個16位的向量,即指針,用來存放該中斷發生時中斷服務函數的地址。中斷發生時CPU都會把狀態標志和返回地址壓棧,然后調用中斷服務程序。
IRQ/BRK中斷由一下兩種情況產生:一是軟件通過BRK指令產生,一是硬件通過IRQ引腳產生。
RESET在開機的時候觸發,這是ROM被裝入,6502跳到RESET向量指向的地址沒有寄存器被修改,沒有內存被清空,這些都只在開機是發生。
NMI指不可屏蔽中斷,它在VBlank即屏幕刷新時發生,持續時間根據系統(NTSC/PAL)不同而不同。NTSC是每秒60次,而PAL是每秒50次。6502的中斷延時是7個時鐘周期,也就是說,進入和離開中斷都需要7個時鐘周期。它產生于PPU的每一幀結束,NMI中斷可以由$2000的第7位的1/0控制允許/禁止。
大部分中斷應該使用RTI指令返回,但是有些游戲不用,例如《最終幻想1》。它用一個很奇怪的方式:手工修改堆棧指針,然后執行RTS指令。這種方法在技術上是可行的,但是應該盡量避免。
以上中斷在ROM內有以下對應的地址:
中斷地址中斷優先權
$FFFANMI
$FFFCRESET
$FFFEIRQ/BRK
NMI 非屏蔽中斷
IRQ/BRK 屏蔽中斷
RESET 開機中斷


評論


技術專區

關閉