SFRPAGE=SFRPAGE_SAVE; //恢复寄存器页

来源:百度知道 编辑:UC知道 时间:2024/06/07 17:48:13
小弟初学c8051f120遇到 SFRPAGE=SFRPAGE_SAVE; //恢复寄存器页
不只有何用,望哪位大虾帮一下

可以这样理解:
你所用的每个寄存器都有个寄存地址,而寄存器页的页码就是指向你的寄存地址的。
当你需要使用某个寄存器时,就必须把SFRPAGE指向你所要用的寄存器页上面去
举例如下:
void Init_ADC0()
{
char SFRPAGE_SAVE = SFRPAGE; // 保存当前的SFR页
SFRPAGE = ADC0_PAGE; //把页码改到以下几个寄存器所在的页码
ADC0CN = 0x00; // 每次向AD0BUSY 写1 时启动ADC0 转换
REF0CN = 0x03; // ADC0电压基准取自VREF0引脚,内部电压基准缓冲器工作
AMX0CF = 0x00; // AIN inputs are single-ended (default)
AMX0SL = 0x00; // 选择ADC 输入为AIN0.0
// ADC0CF = (SYSCLK/SAR_CLK) << 3; // ADC 转换时钟 = 2.5MHz
ADC0CF |= 0x00; // PGA 增益 = 1 (默认)
// EIE2 |= 0x02; // 允许ADC0 转换结束中断
SFRPAGE = SFRPAGE_SAVE; //回复寄存器页
}

这个程序中char SFRPAGE_SAVE = SFRPAGE; 和 SFRPAGE = SFRPAGE_SAVE; 是使在调用这个子函数后页码能够回到调用前的页码