在单片机的C语言程序设计中,如何使用SFR和可寻址位

如题所述

在C语言程序中,先包含一个“头文件”:

#include <reg52.h>

以后就可以对SFR进行读写操作了。
下面的C语言语句,都是对SFR的操作:
TMOD = 0x11; //Timer0, Timer1工作于16位定时方式
TH0 = 0xdc; TL0 = 0x00; //Timer0置10ms定时初值
TH1 = 0xff; TL1 = 0x00; //Timer1置初值
IP = 0x04; //设置INT0为中断最高优先级
IE = 0x8f; //CPU开中断,INT0,INT1,Timer0,Timer1开中断

下面的C语言语句,是对可寻址位的操作:
TR0 = 1; //Timer0启动
TR1 = 0;
IT0 = 0; IT1 = 0; //外部中断都设为电平触发方式
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-09-15
在c语言中无法对SFR(特殊寄存器),比如程序状态寄存器(PSW)等寄存器进行操作,也就不能判断它们的标志位了。比如判断Z标志位,C标志位等操作。对于要操作这类寄存器。我们唯一的办法只能用汇编语言。或者在C语言中嵌入汇编语言来解决。所以我们写单片机程序千万不能放弃汇编语言。某些底层的硬件操作只能靠汇编语言来完成。
第2个回答  2010-09-15

SFR 变量名=地址值