按键中断显示.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
按键中断显示 实验内容 本实验是一个测试键盘的实验,运行程序依次按键1-8,数码管依次显示 7-0,中间键一一对应,任意按一键,其对应的数码管显示不相应的数字。 设计流程图 中断 中断就是暂停正在执行的程序,并进入中断服务程序(Interrupt Service Routine.ISR)。 DSP的中断按中断源分可分为硬件中断和软件中断;按中断是否可屏蔽分为可屏蔽中断和非可屏蔽中断。 初始化定义 #pragma CODE_SECTION(vect,vect)//设置中断向量存放的代码段 用于将一段目标代码vect链接与.text段不同的存储空间vect段vect是目标代码的起始地址 unsigned int *pmem=0; #define IMR *(pmem+0x0000)//中断屏蔽寄存器(各种中断) #define IFR *(pmem+0x0001)//中断标志寄存器 #define PMST *(pmem+0x001d)//处理器工作方式状态寄存器 其中断指针IPTR可进行中断向量重新定位指向程序寄存器内中断向量所在页 #define SWCR *(pmem+0x002b)//软件等待状态控制寄存器 地址2BH #define SWWSR *(pmem+0x0028)//软件等待状态寄存器 地址28H #define CLKMD *(pmem+0x0058)//时钟方式寄存器 地址为58H #define ST1 *(pmem+0x007)//ST1中的INTM位为总中断控制位 #define PRD0 *(pmem+0x0025) /* timer0 period register */ #define TCR0 *(pmem+0x0026) /* timer0 control register */ ioport unsigned portc001; //键盘地址 ioport unsigned portc000; //数码显示地址 //数据线的高8位是位码,低8位是段码 与中断相关的寄存器 1.1 ST1--状态寄存器1 第11位INTM:中断方式位,从整体上屏蔽或开放中断。 INTM=0 开放全部末加屏蔽的中断。 INTM=1 关闭所有可屏蔽中断。 SSBX INTM 置1,关闭总中断 RSBX INTM 清0,打开总中断 当执行一条RETE或RETF指令(从中断返回)时,INTM清成0。 1.2 IMR-中断屏蔽寄存器 允许中断,对应位置1;屏蔽中断,对应位清0 如:IMR=0X010C 即(0000 0001 0000 1100)B 为允许INT2、TINT、INT3申请中断 1.3 IFR--中断标志寄存器 0-发出中断申请,1-等待中断 以下4种情况会使中断标志清零: ①C54X复位; ②中断在中断服务程序中得到处理,常用于中断方式; ③将1写到IFR中的相应位,常用于查询方式; ④使用适当的中断号执行INTR指令。 1.4 PMST-处理器工作方式状态寄存器 15~7位为IPTR,中断向量指针。指向中断向量所驻留的程序存储器的位置。 中断向量地址计算 PMST=0XE8 - IPTR=OX001 本实验芯片使用的是INT2中断,向量号为0x12,左移两位为0x48 INT2的中断向量地址为 (0000 0000 1100 1000)B=(00C8)H 在此采用混合编程方法 中断初始化 一般中断的初始化包括以下步骤: ①关闭总中断,清除中断标志寄存器IFR中的中断标志; asm(SSBX INTM); IFR=0x7FFF; ②设置中断屏蔽寄存器IMR中的相应屏蔽位为1,开放相应的中断; IMR=0x010C; ③如果需要,重新设置处理器工作模式寄存器PMST中的中断指针IPTR进行中断向量的重新定位; PMST=0xE8; ④开放全部可屏蔽中断。 asm(RSBX INTM); 中断初始化程序 void cpu_init() { asm( ssbx intm);//复位指令 禁止总中断 INTM=1 asm( ssbx xf ); //外部扩展引脚 总清零 PMST=0xe8;// SWWSR=0x7fff;//确保处理器初始化期间CPU能与外部 //慢速器件正常通信

文档评论(0)

586334000 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档