找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

请教大神STC单片机的8A8K64D4的IO中断怎么使用?

查看数: 3230 | 评论数: 9 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-5-4 12:39

正文摘要:

按照手册的例程编译,但后面这个不能理解或是说如何把这个ISP.ASM文件加入到项目中呢?

回复

ID:388477 发表于 2023-12-30 10:24
在keil中建一个asm文件,命名isr,在里面复制
                        CSEG AT 0133H  ;P1 口中断入口地址
                        JMP P0INT_ISR
P0INT_ISR:
                        JMP 006BH ;借用 13 号中断的入口地址
                        EN



根据选用的io口,修改中断入口地址


isr.png (11.44 KB, 下载次数: 78)

isr.png

捕获1.PNG (46.28 KB, 下载次数: 73)

捕获1.PNG
ID:961114 发表于 2022-5-5 09:04
ID:465279 发表于 2022-5-4 20:36
xuyaqi 发表于 2022-5-4 14:20
可以找到相关例程。

我的第张图片就是例程写的,可怎么加进项目呢?
ID:514254 发表于 2022-5-4 19:27
对了中断号超大,需要安装这个补丁或者用中断13作为跳转,具体STC官方说明文档很详细,以上程序也参考官方

拓展Keil的C代码中断号.rar

6.01 KB, 下载次数: 52

ID:514254 发表于 2022-5-4 19:26
  1.         //使能P1.6口上升沿中断
  2.         P_SW2 |= 0x80;
  3.         P1IM0 = 0xff; //上升沿中断
  4.         P1IM1 = 0x00;
  5.         P1INTE |= 0x40; //使能 P1.6 口中断
  6.         P_SW2 &= ~0x80;
复制代码

中断定义以及函数:
  1. //使能P1.6口上升沿中断
  2. #define P1INTE (*(unsigned char volatile xdata *)0xfd01)
  3. #define P1INTF (*(unsigned char volatile xdata *)0xfd11)
  4. #define P1IM0 (*(unsigned char volatile xdata *)0xfd21)
  5. #define P1IM1 (*(unsigned char volatile xdata *)0xfd31)
  6. void common_isr() interrupt 38
  7. {
  8.         unsigned char psw2_st;
  9.         psw2_st = P_SW2;
  10.         P_SW2 |= 0x80;
  11.         P1INTE &= 0xbf;                                //关闭P1.6口中断
  12.        
  13.        

  14.         P1INTE |= 0x40;                                //使能P1.6口中断
  15.         P1INTF = 0x00;
  16.         P_SW2 = psw2_st;
  17. }
复制代码
ID:514254 发表于 2022-5-4 19:24
比如使能P16中断
ID:220661 发表于 2022-5-4 19:21
这是汇编例程带中断入口地址的,可以加到汇编程序里,如果你是用C语言,就用C语言的中断函数那种。
ID:624769 发表于 2022-5-4 17:07
给你一个,我写的例子做参考吧.


EX_INT_TEST.rar (17.45 KB, 下载次数: 42)


你也可以看下图:









ID:94031 发表于 2022-5-4 14:20
可以找到相关例程。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表