NTC 发表于 2024-6-19 20:29:34

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

两个都超31了,不懂汇编啊。

35001BH触摸

360123HRTC

神农鼎 发表于 2024-6-19 23:27:00

深圳国芯人工智能有限公司-工具软件 (stcai.com)



hsrzq 发表于 2024-6-21 12:39:11

本帖最后由 hsrzq 于 2024-6-22 00:24 编辑

CSEG AT 011BH
ljmp TouchIsr
其中TouchIsr和RtcIsr就是c文件中一个普通的函数(不用加Interrupt),但当中断函数用

NTC 发表于 2024-6-21 19:01:57

本帖最后由 NTC 于 2024-6-21 19:03 编辑



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



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


angmall 发表于 2024-6-21 19:15:16

我是用这样。

;isr.asm
        CSEG        AT        011BH                ;35号 触摸按键 中断入口
        LJMP        006BH                        ;跳转到中断号13的向量
      
        CSEG    AT0123H         ;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 = 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;
        }
}

NTC 发表于 2024-6-21 21:07:37

本帖最后由 NTC 于 2024-6-22 20:55 编辑

楼上代码编译通过,{:hug:}{:victory:}, 我再测试一下功能。

正确
页: [1]
查看完整版本: 同时使用 RTC, 和触摸,怎么写汇编跳转中断