[其它应用] SH88F6161 Bank不及时切换导致程序执行出问题

[复制链接]
2524|0
Puchou 发表于 2025-9-4 17:20 | 显示全部楼层 |阅读模式
TI, se, AN, SC, 切换, 16
SH88F6161单片机是8051核,但由于其外设较多,导致8位SFR寻址不够用,是分BANK管理。所以编程时需特别注意!在主程序和中断中需时刻注意Bank0、Bank1切换的问题。不然很可能导致程序工作不正常。




#define select_bank0() INSCON=0x00
#define select_bank1() INSCON=0x401.

主程序中
select_bank1();         //P5~P7 属于bank1   
P5CR = 0x02;   
P5 =   0x02;       
P5PCR = 0x0F;                          
P6CR = 0x02;   
P6   =0x02;   
P7CR = 0x02;   
P7   = 0x02;       
select_bank0();




中断中,每个中断服务程序中,都需要加
select_bank0();


在Timer2中添加如下:

void INT_TIMER2(void) interrupt 5
{        
        uint8_t i;        
        _push_(INSCON);        
        select_bank0();         
        if(T2CON&0x80)       
        {          
                T2CON &=0x7F;   //定时器溢出中断,清溢出标志       
        }
        ......                //用户代码区
        _pop_(INSCON);        
}



————————————————
版权声明:本文为CSDN博主「lljss2020」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lljss1980/article/details/107885521

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

83

主题

246

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部