sbit 是定义 位 ,就是说只能 用于 位, 编译器 会检测的。
define 就是简单的 文字替换,用途广,
⑵ 51单片机c语言 #define语句解释
问题 1 : #define 的作用, 这是一个预处理语句.
何为预处理? 是指编译器(也开发环境)在编译之前的处理.
怎么处理呢? 其它就是字符串替换
例: #define PI 3.14
void main()
{
float area=0;
int radius=2;
area=PI*(radius*radius);
printf("%f",area);
}
预处理之后
void main()
{
float area=0;
int radius=2;
area=3.14*(radius*radius);
printf("%f",area);
}
其实就是字符串替换,所以 #define PI 3.14 不能加 ";" 不然变成 area=3.14;*(radius*radius);
这样的话肯定出错.
问题2: "\" 的作用,就是上下行的连接符,有可能是一行太长了,也有可以是为了好看,所有写成多行
例:
#define PI 3.\
14
void _tmain()
{
float area=0;
int radius=2;
area=PI*(radius*radius);
printf("%f",area);
}
写成这样,也是可以的.
⑶ 51单片机里的 sbit 是不是宏定义的意思
sbit就是定义一个标志位,也叫位变量,比如一个8位的寄存器就可以看作八个位变量。
#define就是替代或者替换的意思,
主要就是用一个好记的名字替换一句不好记或者很长的鸟语啦。
所以你的#define
key1
p3^0说不通,p3^0不是寄存器而是指向性质的,
如果你用#include
之类的话你可以#define
key1
p3_0
⑷ 51单片机 c语言中
#define POWER_UP_MARK 0xAB定义POWER_UP_MARK为0xAB 也就是说POWER_UP_MARK和0XAB等价,可以互换,
给个例子,如
struct student
{
int age;//定义年龄
string name;//定义姓名
};
student stu1;
这时候用stu1.age代表stu1对象的年龄
stu1.name代表stu1对象的姓名
⑸ 在51单片机中,为什么#define _SCL_OUT 是什么意思,为什么用这种方式设置开漏模式
所谓开漏模式,是STC单片机的l/O脚可以设置成四种工作模式,开漏模式是其中一种。设置引脚模式是要设置两个寄存器的,至少需要两行语句。
而这行宏定义并没有写完整,后面还应该有_SCL_OUT所带替换的内容,而你没写出来,那是什么就不得而知了。
但是,看_SCL_OUT的意义,应该是定义一个时钟输出引脚,并没有开漏的意思。
⑹ 51单片机、stm32中sfr和define的定义问题求解!!!
在51单片机中,如果你这么定义:
#define P0 (*(volatile unsigned char*)0x80)
那么执行P0=0x25的时候,汇编就变成
MOV DPTR,#0080H
MOV A,#25H
MOVX @DPTR,A
很明显,你就不是往端口P0赋值0x25,而是像外部总线上的地址0x0080写数据0x25了,了解?
51单片机的寄存器存在于内部空间0x80-0xFF,这空间属于直接寻址,不是访问外部总线。所以只能用 sfr P0=0x80来定义。
STM32单片机就不一样,所有的外设寄存器都处于统一寻址的外部空间中,所以只能用这种方法定义其地址,访问时也类似MOVX指令的执行。
⑺ #define DIS_PORT P1 在51单片机中怎么翻译
对于复活的问题,最后的答案就是复活答案。
⑻ 菜鸟刚学51单片机 这句话什么意思呀,最好能详细的解释一下 ,好像是定时器什么的
这是51的定时器1的中断函数
static void 这个不用讲
timer1_isr 函数名,随便定义,因为没有函数能够调用中断函数,这个函数的地址会被编译器放在定时器1中断向量的位置,也就是说程序存储器 001B(定时器1中断向量)存放的指令时 LJMP xxxx(xxxx表示timer1_isr的地址)
interrupt TF1_VECTOR 这个表示的是中断编号,通常都是写作interrupt n 的,n表示中断编号,像定时器1的中断编号就是3(这可以在书里面查到的),你这个写的是TF1_VECTOR,应该在别的地方有一句 #define TF1_VECTOR 1
using 2 表示中断函数使用第二组寄存器,51一共有4组寄存器R0-R7,通常使用的是0组寄存器,为中断函数单独分配一组寄存器可以提高中断函数的效率,因为不用在进中断和出中断的时候将0组寄存器压栈或者出栈
⑼ c51单片机名词解释 宏定义
宏定义本质上是C语言提供的预处理命令,并不是什么单片机名词。通俗的说宏就是替代符号,比如说你要定义一个人的年龄变量,在程序中你可以用#define age unsigned char。这样你在程序中所能用到关于年龄的变量就可以这样age XiJiping。对于一个复杂的程序,灵活运用宏定义可以让你的程序更易读,移植起来也会更容易。