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。對於一個復雜的程序,靈活運用宏定義可以讓你的程序更易讀,移植起來也會更容易。