6502单片机编程--中断

发布者:MysticalEssence最新更新时间:2015-12-22 来源: eefocus关键字:编程  中断 手机看文章 扫描二维码
随时随地手机看文章
中断:
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内有以下对应的地址:
中断地址 中断 优先权
$FFFA NMI
$FFFC RESET
$FFFE IRQ/BRK
NMI      非屏蔽中断
IRQ/BRK 屏蔽中断
RESET    开机中断
关键字:编程  中断 引用地址:6502单片机编程--中断

上一篇:6502单片机编程
下一篇:6502单片机编程代码

推荐阅读最新更新时间:2024-03-16 14:41

STM8S208R8的第三个程序---外部中断
注意,下面的程序都没按键去抖 #include iostm8s208r8.h #define LED PC_ODR_ODR1 /****************************************************** PD3按键中断控制LED亮灭 ******************************************************/ void GPIO_INIT()//端口初始化 { //---------------------------LED--------------------- PC_DDR_DDR1=1; PC_CR1_C11 =1;//LED推挽输出 //----
[单片机]
ATmega64看门狗问题
编译:Win AVR 调试:AVR Studio 4 问题:设置的看门狗是2秒中断,但实际明显小于两秒 发现问题过程: 使用片内的eeprom时,发现超过4个写语句不喂狗就会发生看门狗复位,然而设置的是看门狗2秒复位,4个写语句无论如何也不会花2秒的时间吧。 用AVR Studio 4调试,看了下WDTCR的值是0x08,这就不对了,按照初始化的设置应该是0x0f才对,怀疑看门狗设置写错了,查了写代码: WDTCR = 0x18; WDTCR = 0x0f; 看来看去就两行代码,也是按照手册里的方法写的,但试了好几AWDTCR 的值一直是0x08... ... 最后在Disassembler窗口
[单片机]
【STM32电机方波】记录2——NVIC中断基本设置
NVIC概念:提供中断控制器,用于总体管理异常,称之为“内嵌向量中断控制器”。简单来说,就是MCU提供、处理内部中断的模块。 NVIC库函数: 中断优先级: 在配置NVIC之前得弄懂一个概念:中断优先级,即中断的执行顺序。中断优先级中,分为抢占式优先级(先占优先级)和响应优先级(从优先级)。抢断优先级,顾名思义,能再别人中断是抢占别人中断,实现中断嵌套。响应优先级则只能排队,不能抢在前面插别人的对,即不能嵌被嵌套。 STM32中指定优先级的寄存器为4位,其定义如下: 第0组:所有4位用于指定响应优先级 NVIC_PriorityGroup_0 = 选择第0组 第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级
[单片机]
【STM32电机方波】记录2——NVIC<font color='red'>中断</font>基本设置
32位单片机c语言编程笔记
1.单片机在系统复位或者上电之后,会在执行main()函数之前先执行一小段由maplab c32连接器自动插入的初始化程序,即所谓的starup(启动)代码或者crt0()代码。启动代码负责基本的内务操作,包括栈的所有重要初始化等。 2.随便调用一个库函数,比如printf(),就可能增加数千字节的执行代码,所以要慎用库函数。 3.crt0代码负责在主程序运行之前,将定义在flash里的数组内容,从flash到RAM里,crt0另一个重要的功能是将程序声明的每个全局变量初始化为0,这会使程序更加安全并且容易预测,但这是有代价的。如果ram中要存放一个很大的数组,那么即使你没有要求初始化他们,crt0代码也会花一段
[单片机]
物联网快速演进 英特尔致力DIY可编程家庭自动化项目
无线设备的大量普及为物联网的快速演进创造了一个得天独厚的发展平台,在家中、车里和办公室,到处都有微型的无线设备,如果有效利用这些无线设备便可以便捷人们的生活方式,打造更为自动化的智能环境。 物联网正快速演进 据国外报道,近日为了加速物联网的发展,英特尔正在致力于研究DIY可编程家庭自动化项目。 面对物联网的快速增长契机,英特尔也意识到了这个很好地市场机遇。从无线智能灯到智能恒温器再到智能门锁,看上去似乎家庭里的大部分东西在不久后都将会拥有一个网络连接。但关键是如何把所有这些未来的设备连接在一起工作。 英特尔正在致力于研究DIY可编程家庭自动化项目 英特尔的计划是建立一个平台,在无线协议(如WiFi,蓝牙
[嵌入式]
LabVIEW设计模型——状态机之编程实现
画好状态转换图,我们就可以清晰的看到程序要实现的所有状态以及状态之间的关系。下面的工作就是用LabVIEW来实现这个状态机。 状态机是由一个While循环、一个条件结构和一个移位寄存器组成的。其中While循环用来保证程序可以连续的运行;条件结构的各种分支中的代码用来描述状态机的各种状态,以及下一状态的选择;移位寄存器用来将之前状态所作出的选择传递到下一次循环的选择端子。 下面我们就一步一步的实现这个状态机。 首先,新建一个工程,并且在工程中建立 控件 和 子VI 两个虚拟文件夹来放置自定义控件和子VI。在 控件 文件夹中新建一个控件。 在控件的编辑面板上放置一个枚举类型的控件,并且编辑枚举
[测试测量]
LabVIEW设计模型——状态机之<font color='red'>编程</font>实现
ARM异常---一个Uart中断的触发处理过程
首先给出一些定义: //2440addr.inc INTOFFSET EQU 0x4a000014 ;Interruot request source offset //option.inc _ISR_STARTADDRESS EQU 0x33ffff00 //2440init.s MACRO $HandlerLabel HANDLER $HandleLabel $HandlerLabel sub sp,sp,#4 ;decrement sp(to store jump address) stmfd sp!,{r0} ;PUSH the work regi
[单片机]
赛灵思推出符合规范的可编程8通道PCI Express IP核
赛灵思公司日前宣布推出针对电信、网络、存储和视频应用的符合规范的1、4和8通道LogiCORE PCI Express IP核(PCIeIP核)。系统设计师们现在可以利用赛灵思FPGA架构的可编程性和可重配置能力,来构建完全符合规范且可互通的PCI Express平台。 该PCIe IP核遵循PCI Express基本规范v1.1,是唯一在PCI-SIG PCIExpress第48次认证大会(Compliance Workshop #48)上成功完成所有PCI Express一致性与互通性测试的可编程8通道PCIeIP核。它还被列入PCI-SIG的PCI Express产品集成商名单(PCI-SIG’sIntegratorsLi
[新品]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved