牛卧堂MCU技术交流

标题: 请问MS51这个单片机进中断到底需不需要加_push_(SFRS); [打印本页]

作者: 匿名    时间: 2022-3-29 19:52
标题: 请问MS51这个单片机进中断到底需不需要加_push_(SFRS);
#include "MS51_16K.H"

/* if define TIMER0_FSYS_DIV12, timer = (0x1FFF-0x1000)*12/24MHz = 4.08ms */
/* if define TIMER0_FSYS, timer = (0x1FFF-0x0010)/24MHz = 340us */
#define TH0_INIT        0x00
#define TL0_INIT        0x10

/************************************************************************************************************
*    TIMER 0 interrupt subroutine
************************************************************************************************************/
void Timer0_ISR (void) interrupt 1           /*interrupt address is 0x000B */
{
    _push_(SFRS);

    TH0 = TH0_INIT;
    TL0 = TL0_INIT;
    TF0 = 0 ;
    P12 = ~P12;                              /* GPIO toggle when interrupt  */

    _pop_(SFRS);
}

/************************************************************************************************************
*    Main function
************************************************************************************************************/
void main (void)
{

    P12_PUSHPULL_MODE;

    ENABLE_TIMER1_MODE0;                           /* Timer 0 mode configuration */
    TIMER0_FSYS_DIV12;

    TH0 = TH0_INIT;
    TL0 = TL0_INIT;

    ENABLE_TIMER0_INTERRUPT;                       /* enable Timer0 interrupt  */
    ENABLE_GLOBAL_INTERRUPT;                       /* enable interrupts */

    set_TCON_TR0;                                  /* Timer0 run */

    while(1);

}



作者: admin    时间: 2022-3-31 09:53
要加,因为MS51的SRF涉及到多个页,否则可能会导致寄存器操作错误
作者: 匿名    时间: 2022-4-13 16:52
admin 发表于 2022-3-31 09:53
要加,因为MS51的SRF涉及到多个页,否则可能会导致寄存器操作错误

那 N76E003 的官方Bsp里面 中断函数怎么没有加呀




欢迎光临 牛卧堂MCU技术交流 (http://www.nuvoton-mcu.com/) Powered by Discuz! X3.2