标题: 请教大神STC单片机的8A8K64D4的IO中断怎么使用? [打印本页]

作者: hxszrb    时间: 2022-5-4 12:39
标题: 请教大神STC单片机的8A8K64D4的IO中断怎么使用?





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

作者: xuyaqi    时间: 2022-5-4 14:20
可以找到相关例程。
作者: 188610329    时间: 2022-5-4 17:07
给你一个,我写的例子做参考吧.


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


你也可以看下图:










作者: gongnn    时间: 2022-5-4 19:21
这是汇编例程带中断入口地址的,可以加到汇编程序里,如果你是用C语言,就用C语言的中断函数那种。
作者: dazhige    时间: 2022-5-4 19:24
比如使能P16中断
作者: dazhige    时间: 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. }
复制代码

作者: dazhige    时间: 2022-5-4 19:27
对了中断号超大,需要安装这个补丁或者用中断13作为跳转,具体STC官方说明文档很详细,以上程序也参考官方

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

6.01 KB, 下载次数: 52


作者: hxszrb    时间: 2022-5-4 20:36
xuyaqi 发表于 2022-5-4 14:20
可以找到相关例程。

我的第张图片就是例程写的,可怎么加进项目呢?

作者: STC庄伟    时间: 2022-5-5 09:04

作者: zhang1314hong    时间: 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





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1