找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

请问MS51这个单片机进中断到底需不需要加_push_(SFRS);

[复制链接]
跳转到指定楼层
楼主
匿名  发表于 2022-3-29 19:52:41 回帖奖励 |倒序浏览 |阅读模式
#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);

}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 顶 踩
回复

使用道具

沙发
admin 发表于 2022-3-31 09:53:35 | 只看该作者
要加,因为MS51的SRF涉及到多个页,否则可能会导致寄存器操作错误
牛卧堂
回复 支持 反对

使用道具 举报

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

那 N76E003 的官方Bsp里面 中断函数怎么没有加呀
回复 支持 反对

使用道具

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU