很多知識點c語言(微控制器)

2021-07-13 07:17:20 字數 1071 閱讀 8958

c語言*(volatile unsigned char xdata *)  0x2f5f,這個表示方法是什麼意思?

答1:將乙個立即數,強制轉換乙個指標,再以這個指標取出這個位址開始乙個位元組的內容。

具體0x2f5f,是什麼,那就要看晶元的資料手冊了。

比如說,如果a暫存器的位址是0x2f5f,那麼,定義了

#define a *(volatile unsigned char xdata *) 0x2f5f

那麼就可能對暫存器a賦值,只要 a = 0xff;就可以了。

去看看晶元的資料手冊,看下0x2f5f是什麼位址空間,才能知道他到底是什麼。

答2:這是指乙個外部的絕對實體地址,後面的0x2f5f就是它的具體位址,在一些用

keil

編譯的程式裡面通常這樣來指定乙個絕對位址。

答3:#define u0rbr (*((volatile unsigned char *) 0xe000c000))

這個在微控制器裡很常見,

((volatile unsigned char *) 0xe000c000) 是將0xe000c000強制轉換為

儲存可能隨時更新(volatile的作用)無符號字元型資料的位址

前面又加了*,是表示指向這個位址裡面的值,這與其他普通定義的指標一樣了,如char x,y,*p;p=&x;*p=y;y=*p

就如同乙個變數一樣,既可以從這裡讀出值,也可以給被賦值,這裡需要注意的是,這個位址值裡的東西是不是既可以讀又可以寫,這個在datasheet應該有定義,或者看程式中都拿他幹什麼。

#define u0rbr (*((volatile unsigned char *) 0xe000c000)) 這個是巨集定義,即uorbr替換(*((volatile unsigned char *) 0xe000c000)),巨集定義是為了程式書寫方便,因為在程式中可能有好多地方要使用(*((volatile unsigned char *) 0xe000c000)),在用時,總要寫這麼多東西麻煩。

問:0x1000l是什麼意思?
在常量後加l則認為它是long int型常量

微控制器知識點

rti real time interrupt 實時中斷 ect enhanced capture timer module 增強型定時器模組 pit programmable interval timer 可程式設計間隔定時器 pit tim rti是由晶振提供時鐘源,pit是由匯流排時鐘分頻後提...

微控制器原理知識點彙總

在一塊晶元上整合了cpu 儲存 輸入輸出的微型計算機。由於微控制器體積小 功耗低 控制功能強,常用於儀器檢測 裝置控制。例如 電飯煲 洗衣機 最小微控制器系統 微控制器 時鐘電路 復位電路 機器週期是振盪脈衝的十二分頻。c51需包含51微控制器的標頭檔案 sbit 可定址位 sfr 特殊功能暫存器 ...

微控制器學習04 微控制器外設易忘知識點

ad 1.取樣頻率就是取樣週期的倒數,也就是一秒鐘取樣的次數 2.解析度是決定取樣最小值,比如基準電壓為1v,8位的取樣,最小值是1 256,1為的取樣的最小值是1 1024,解析度越高,取樣越精確 3.取樣週期一般來說 轉換時間 讀取時間 4.為了不失真地恢復模擬訊號,取樣頻率應該不小於模擬訊號頻...