同时使用 RTC, 和触摸,怎么写汇编跳转中断
两个都超31了,不懂汇编啊。35001BH触摸
360123HRTC
深圳国芯人工智能有限公司-工具软件 (stcai.com)
本帖最后由 hsrzq 于 2024-6-22 00:24 编辑
CSEG AT 011BH
ljmp TouchIsr
其中TouchIsr和RtcIsr就是c文件中一个普通的函数(不用加Interrupt),但当中断函数用 本帖最后由 NTC 于 2024-6-21 19:03 编辑
汇编代码不行。
然后打了扩展补丁。
打了中断号扩展,
C51. 9.56 通过编译
C51 9.57 不行,*** ERROR L214: INPUT PHASE ERROR
C51. 9.96.7 也不行。
看这个提示信息,和中断也无关,但是同样的代码,9.56 就能通过呢。
我是用这样。
;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-22 20:55 编辑
楼上代码编译通过,{:hug:}{:victory:}, 我再测试一下功能。
正确
页:
[1]