hcs08中断系统_rti资料.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
KBI 3、应用注意事项: 1、如果选择的是沿和电平触发模式,当管脚维持在触发电平状态时,对KBISC寄存器中的KBACK写“1”并不能清除KBF; 2、KBI对应管脚可以配置内部上拉/下拉电阻,是通过对应的管脚管理寄存器的设置实现的(设置PTAPE、PTBPE寄存器)。管脚设置一般是允许上拉电阻,但对于KBI模块而言,管脚设置的内部电阻实际受KBI模块的寄存器KBIES控制,如果KBEDGn = 0(下降沿或低电平),设置的是上拉电阻 KBEDGn = 1时则配置的是下拉电阻。 3、KBI的初始化过程,KBI首次使用时,为了不产生错误中断,建议初始化过程如下6步: 1〉清除KBISC中的KBIE位,以屏蔽KBI中断; 2〉设置KBIES寄存器中的KBEDGn位,选择使用管脚的中断触发极性; 3〉如果需要内部上拉/下拉电阻,配置PTAPE / PTBPE中的PTxPE位; 4〉设置KBIPE寄存器中的KBIPEn ,允许对应管脚的KBI功能; 5〉给KBISC寄存器中的KBACK位写1,以清除所有KBI中断标志; 6〉设置KBISC寄存器中的KBIE位,以允许KBI中断。 KBI 3.1、实验电路 PTA2 / KBIP2 PTA3 / KBIP3 PTB6 PTB7 KBISC 0x06沿 KBIPE 0x0C 沿选择 KBIES 0x0下降 1〉中断入口 低 优先级 高 中断号 入口地址 模块 标记 允许位 寄存器 23 0xFFD0:FFD1 系统 RTIF RTIE SRTISC 20 0xFFD6:FFD7 ACMP ACF ACIE ACMPSC 19 0xFFD8:FFD9 ADC COCO AIEN ADCSC1 18 0xFFDA:FFDB KBI KBF KBIE KBISC 17 0xFFDC:FFDD IIC IICIF IICIE IICC,IICS 16 0xFFDE:FFDF SCI TDRE、TC TIE、TCIE SCIC2 15 0xFFE0:FFE1 SCI IDLE、RDRF ILIE、RIE SCIS1 14 0xFFE2:FFE3 SCI OR,NF,FE,PF ORIE…… SCIC3 13 0xFFE4:FFE5 SPI SPIF,MODF,SPTEF SPIE,SPTIE SPIC1 12 0xFFE6:FFE7 MTIM TOF TOIE MTIMSC 7 0xFFF0:FFF1 TPM TOF TOIE TPMSC 6 0xFFF2:FFF3 TPM CH1F CH1IE TPMC1SC 5 0xFFF4:FFF5 TPM CH0F CHI0IE TPMC0SC 3 0xFFF8:FFF9 系统 LVDF LVDIE SPMSC1 2 0xFFFA:FFFB IRQ IRQF IRQIE IRQSC 1 0xFFFC:FFFD CPU SWI指令 - 0 0xFFFE:FFFF 系统 COP,LVD,RST,POR,非法指令等。 KBI 3.2、实验要求 按SW1时,LED1和LED2亮灭1次; 按SW2时,LED1和LED2亮灭2次; //按SW1和SW2时,LED1和LED2亮灭3次; SOPT1 = 0x03; PTBDD = 0xFF; PTBD = 0xFF; SRTISC = 0x56; ////////////kbi init/////////////// KBISC = 0x04; //禁止kbi中断 KBIES = 0; //PTAPE = 0x0C; KBIPE = 0x0C; KBISC = 0x04; // 清除标志 KBISC = 0x06; // 允许中断 EnableInterrupts; /* enable interrupts */ unsigned char LedOnOffCnt; KBI Kbi中断子程 interrupt 18 void KBI_ISR() { unsigned char KbStatus; unsigned int delay; for(delay = 0;delay5000;delay++){ } KbStatus = PTAD; KbStatus = 0x0c; // 取出两位 if(KbStatus == 0x08) // sw1 { LedOnOffCnt = 2;

文档评论(0)

586334000 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档