C語言在微控制器開發中的一些技巧

2021-08-04 10:30:06 字數 554 閱讀 7287

1、

不改變其他位的值的狀況下,對某幾個位進行設值,方法就是先對需要設定的位用&操作符進行清零操作,然後用|操作符設值。比如我要改變gpioa-> bsrrl的狀態,可以先對暫存器的值進行&清零操作

gpioa-> bsrrl &=0xff0f; //將第4-7位清0 然後再與需要設定的值進行|或運算 

gpioa-> bsrrl |=0x0040; //設定相應位的值,不改變其他位的值。

2、結構體定義

mdk中有很多這樣的結構體變數需要定義。這裡我們可以為結體定義乙個別名gpio_typedef,這樣我們就可以在其他地方通過別名gpio_typedef來定義結構體變數了。方法如下: 

typedef struct 

gpio_typedef; 

typedef為結構體定義乙個別名gpio_typedef,這樣我們可以通過gpio_typedef來定義結構體變數: 

gpio_typedef  _gpioa, _gpiob; 

這裡的gpio_typedef就跟struct _gpio是等同的作用了。

51微控制器的C語言延時的一些總結

在網上搜了一些關於c51微控制器c語言的精確延時 相對 的例子和方法 現總結如下 1,nop 適用於us級的少量延時 標準的c語言中沒有空語句。但在微控制器的c語言程式設計中,經常需要用幾個空指令產生短延時的效果。這在組合語言中很容易實現,寫幾個nop就行了。在keil c51中,直接呼叫庫函式 i...

51微控制器的一些複習

51微控制器的一些複習 sfr special function register特殊功能暫存器的縮寫 宣告可位元組定址的特殊功能暫存器,如sfr po 0x80,sbit 特殊功能暫存器位 宣告可位定址的特殊功能暫存器,如sbit a p0 0 這些都在標頭檔案中有定義 或reg51.h 中一共定...

toc 微控制器程式設計中的一些時序問題

本文的的delay原型 void delay unsigned int t 今天在微控制器程式設計時遇到了一些問題 lcd1602的第二行無法顯示 ds18b20的溫度一開始一直為0,後來一直是變化的負數 這裡面有兩個原因,乙個是延時時間不夠,如以下lcd程式中,在埠被賦值乙個位元組後的延時是必不可...