SH88F6161 Bank不及时切换导致程序执行出问题

SH88F6161单片机是8051核,但由于其外设较多,导致8位SFR寻址不够用,是分BANK管理。所以编程时需特别注意!在主程序和中断中需时刻注意Bank0、Bank1切换的问题。不然很可能导致程序工作不正常。
在这里插入图片描述
#define select_bank0() INSCON=0x00
#define select_bank1() INSCON=0x401.

  1. 主程序中
select_bank1();	 //P5~P7 属于bank1    
P5CR = 0x02;    
P5 =   0x02;	
P5PCR = 0x0F;			   
P6CR = 0x02;    
P6   =0x02;    
P7CR = 0x02;    
P7   = 0x02;	
select_bank0();
  1. 中断中,每个中断服务程序中,都需要加
select_bank0(); 

在Timer2中添加如下:

void INT_TIMER2(void) interrupt 5
{ 	
	uint8_t i; 	
	_push_(INSCON); 	
	select_bank0();  	
	if(T2CON&0x80)	
	{	  
		T2CON &=0x7F;   //定时器溢出中断,清溢出标志	
	}
	......		//用户代码区
	_pop_(INSCON);        
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值