C8051与传统51的区别在于优先权交叉开关、系统时钟、SFR寄存器几个方面:
一 优先权交叉开关:传统的51外设功能是固定分配或者复用分配到指定引脚,而C8051则是通过优先权交叉开关设置,即要想分配外设到正确引脚不断要对应XBR使能,而且前面的外设也要按顺序正确使能(优先权使能)。交叉开关都是要使能的,否则引脚都被默认设置成弱上拉输入,引脚和内部外设功能是隔离的。
二 系统时钟:可以来自外部晶体、内部晶体、PLL(可来对外部或内部时钟源进行倍频或分频),满足各种需要。
三 SFR寄存器:C8051扩展了C51的寄存器(128字节不够用),外扩的寄存器分在不同页地址的空间里,要想对相应的寄存器进行正确操作,就要正确切换寄存器页(先保存当前页,在切换相应的页,最后在恢复原来保存的页),这和交叉开关是新手最容易忘记和出错的地方。
unsigned char SFRPAGE_save=SFRPAGE;
SFRPAGE=XXX_PAGE;
....操作相应寄存器
。。。
SFRPAGE=SFRPAGE_save;
四其它的一些问题:
IO:默认是开漏,若上拉输入(当当输出0时若上拉自动关闭以避免冲突,推挽:输出0到GND,输出1到VCC;开漏:输出0到GND,输出1是高阻)
看门狗:默认是开启的,调试时应关闭
SFRPAGE = CONFIG_PAGE
WDTCN = 0xde;
WDTCN = 0xad; //禁止看门狗定时器。