找回密码
 立即注册
查看: 393|回复: 5

同时使用 RTC, 和触摸,怎么写汇编跳转中断

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:497
  • 最近打卡:2025-06-16 08:06:12

10

主题

130

回帖

710

积分

高级会员

积分
710
发表于 2024-6-19 20:29:34 | 显示全部楼层 |阅读模式
两个都超31了,不懂汇编啊。

35  001BH  触摸

36  0123H  RTC
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:99
  • 最近打卡:2025-06-16 09:28:47

733

主题

1万

回帖

1万

积分

管理员

积分
16649
发表于 2024-6-19 23:27:00 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:500
  • 最近打卡:2025-06-16 10:39:44
已绑定手机

29

主题

349

回帖

1991

积分

金牌会员

机长

积分
1991
发表于 2024-6-21 12:39:11 | 显示全部楼层
本帖最后由 hsrzq 于 2024-6-22 00:24 编辑
  1. CSEG AT 011BH
  2. ljmp TouchIsr
复制代码

其中TouchIsr和RtcIsr就是c文件中一个普通的函数(不用加Interrupt),但当中断函数用
业余撸代码,专业开飞机 https://gitee.com/STC-MCU
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:497
  • 最近打卡:2025-06-16 08:06:12

10

主题

130

回帖

710

积分

高级会员

积分
710
发表于 2024-6-21 19:01:57 | 显示全部楼层
本帖最后由 NTC 于 2024-6-21 19:03 编辑

20240621185506.png

汇编代码不行。
然后打了扩展补丁。

20240621185739.png

打了中断号扩展,
C51. 9.56 通过编译
C51 9.57 不行,*** ERROR L214: INPUT PHASE ERROR
C51. 9.96.7 也不行。
看这个提示信息,和中断也无关,但是同样的代码,9.56 就能通过呢。


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:567
  • 最近打卡:2025-06-16 12:27:03

11

主题

1194

回帖

5524

积分

论坛元老

积分
5524
发表于 2024-6-21 19:15:16 | 显示全部楼层
我是用这样。

;isr.asm
        CSEG        AT        011BH                ;35号 触摸按键 中断入口
        LJMP        006BH                        ;跳转到中断号13的向量
        
        CSEG    AT  0123H           ;36号 RTC_VECTOR
    LJMP     006BH
        END



//========================================================================
void TKSU_Interrupt(void) interrupt 13
{
        u8        j;
//    u8 intf=P0INTF;
        j = TSSTA2;
        if(j & 0x40)        //数据溢出, 错误处理(略)
        {
                TSSTA2 |= 0x40;        //写1清零
        }
        if(j & 0x80)        //扫描完成
        {
                j &= 0x0f;
                TSSTA2 |= 0x80;        //写1清零
                TK_cnt[j] = TSDAT;        //保存某个通道的读数
                if( j==5 )
                        B_ReadKeyOk=1;
        }
   
//    if( intf )
//    {
//        P0INTF=0;
//    }   
                if(RTCIF & 0x80)    //闹钟中断
        {
                P01 = !P01;
                RTCIF &= ~0x80;
                B_Alarm = 1;
        }

        if(RTCIF & 0x08)    //秒中断
        {
                P00 = !P00;
                RTCIF &= ~0x08;
                B_1s = 1;
        }
}

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:497
  • 最近打卡:2025-06-16 08:06:12

10

主题

130

回帖

710

积分

高级会员

积分
710
发表于 2024-6-21 21:07:37 | 显示全部楼层
本帖最后由 NTC 于 2024-6-22 20:55 编辑

楼上代码编译通过,, 我再测试一下功能。

正确
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-17 00:08 , Processed in 0.137669 second(s), 83 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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