日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

特殊功能寄存器SFR

發布時間:2024/3/24 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 特殊功能寄存器SFR 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 特殊功能寄存器sfr

? ? ? sfr也是一種擴充數據類型,點用一個內存單元,值域為0~255。?

? ? ?利用它可以訪問51單片機內部的所有特殊功能寄存器。(sfr 是定義8 位的特殊功能寄存器而sfr16 則是用來定義16 位特殊功能寄存器)

?

(1) sbit 位變量名=位地址

? ? ? ?sbit ?P1_1 = Ox91;

這樣是把位的絕對地址賦給位變量.同sfr 一樣sbit 的位地址必須位于80H-FFH 之間.

?

(2) sbit 位變量名=特殊功能寄存器名^位位置

? ?sft ?P1= 0x90;

? sbit P1_1 = P1 ^ 1;

//先定義一個特殊功能寄存器名再指定位變量名所在的位置,當可

尋址位位于特殊功能寄存器中時可采用這種方法

?

(3) sbit 位變量名=字節地址^位位置

? ?sbit P1_1 = 0x90 ^ 1;

這種方法其實和2 是一樣的,只是把特殊功能寄存器的位址直接用常數表示.

?

?在C51存儲器類型中提供有一個bdata 的存儲器類型,這個是指可位尋址的數據存儲器,位于單片機的可位尋址區中,可以將要求可位錄址的數據定義為bdata,

如:

unsigned char bdata ib; //在可位錄址區定義ucsigned char 類型的變量ib sbit ib7=ib^7 //用關鍵字sbit 定義位變量來獨立訪問可尋址位對象的其中一位

?

int bdata ab[2]; //在可位尋址區定義數組ab[2],這些也稱為可尋址位對象 sbit ab12=ab[1]^12;
操作符"^"后面的位位置的最大值取決于指定的基址類型, char0-7,int0-15,long0-31.


/

?

sfr 并標準C 語言的關鍵字,而是Keil 為能直接訪問80C51 中的SFR 而提供了一個新的關鍵詞,其用法是:

? ?sfrt 變量名=地址值。?

///?

二.符號P1_0 來表示P1.0 引腳。

?

在C 語言里,如果直接寫P1.0,C 編譯器并不能識別,而且P1.0 也不是一個合法的C

語言變量名,所以得給它另起一個名字,Keil C的關鍵字sbit 來定義,sbit 的用法有三種:

?

第一種方法:sbit 位變量名=地址值第二種方法:sbit 位變量名=SFR 名稱^變量位地址值第三種方法:sbit 位變量名=SFR 地址值^變量位地址值如定義PSW 中的OV 可以用以下三種方法:sbit OV=0xd2 (1)說明:0xd2 是OV 的位地址值sbit OV=PSW^2 (2)說明:其中PSW 必須先用sfr 定義好sbit OV=0xD0^2 (3)說明:0xD0 就是PSW 的地址值
因此這里用sfr P1_0=P1^0;就是定義用符號P1_0 來表示P1.0 引腳.

?

3).sbit可錄址位

sbit同位是C51中的一種擴充數據類型,利用它可以訪問芯片內部的RAM中的可尋址位或特殊功能寄存器中的可尋址位。如先前我們定義了

?

sfr P1 = 0x90; //因P1端口的寄存器是可位尋址的,所以我們可以定義

?

sbit P1_1 = P1^1; //P1_1為P1中的P1.1引腳

?

//同樣我們可以用P1.1的地址去寫,如sbit P1_1 = 0x91;

?



MCS-51單片機的特殊功能寄存器
符號 地址 功能介紹
B F0H B寄存器
ACC E0H 累加器
PSW D0H 程序狀態字
TH2* CDH 定時器/計數器2(高8位)
TL2* CCH 定時器/計數器2(低8位)
RLDH* CBH 外部輸入(P1.1)計數器/自動再裝入模式時初值寄存器高八位
RLDL* CAH 外部輸入(P1.1)計數器/自動再裝入模式時初值寄存器低八位
T2CON* C8H T2定時器/計數器控制寄存器
IP B8H 中斷優先級控制寄存器
P3 B0H P3口鎖存器
IE A8H 中斷允許控制寄存器
P2 A0H P2口鎖存器
SBUF 99H 串行口鎖存器
SCON 98H 串行口控制寄存器
P1 90H P1口鎖存器
TH1 8DH 定時器/計數器1(高8位)
TH0 8CH 定時器/計數器0(高8位)
TL1 8BH 定時器/計數器1(低8位)
TL0 8AH 定時器/計數器0(低8位)
TMOD 89H T0、T1定時器/計數器方式控制寄存器
TCON 88H T0、T1定時器/計數器控制寄存器
DPH 83H 數據地址指針(高8位)
DPL 82H 數據地址指針(低8位)
SP 81H 堆棧指針
P0 80H P0口鎖存器
PCON 87H 電源控制寄存器


#include<reg51.h> //包含51單片機寄存器定義的頭文件 void main(void) {P0=0xfe; //P0=1111 1110B,即P1.0輸出低電平 直接賦初值P0=0xfd;P0=0xff;P0=0x00;}//51單片機低電平有效 /#include<reg51.h> //控制p0連續閃爍 void delay() //延時 {unsigned int i;for(i=0;i<20000;i++); } void main() { while(1){P0=0xfe;delay();P0=0xff;delay(); } } /// #include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit LED=P0^0; void DelayMS(uint x) {uchar i;while(x--){ for(i=0;i<120;i++);} } void main() { while(1){LED=~LED;DelayMS(150); } } ///#include<reg51.h> //包含單片機寄存器的頭文件 sfr x=0x80; //P0口在存儲器中的地址是b0H, 通過sfr可定義8051內核單片機//的所有內部8位特殊功能寄存器,對地址x的操作也就是對P1口的操作//p1:90H//p2:A0H//P3:B0H /**************************************** 函數功能:延時一段時間 *****************************************/ void delay(void){unsigned char i,j;for(i=0;i<250;i++)for(j=0;j<250;j++) ; //利用循環等待若干機器周期,從而延時一段時間} /***************************************** 函數功能:主函數 ******************************************/ void main(void) {while(1){/x=0xfe; //第一個燈亮delay(); //調用延時函數x=0xfd; //第二個燈亮delay(); //調用延時函數x=0xfb; //第三個燈亮delay(); //調用延時函數x=0xf7; //第四個燈亮delay(); //調用延時函數P0=0xef; //第五個燈亮delay(); //調用延時函數P0=0xdf; //第六個燈亮delay(); //調用延時函數P0=0xbf; //第七個燈亮delay(); //調用延時函數P0=0x7f; //第八個燈亮delay(); //調用延時函數 }} ///函數功能:用整形數據延時一段時間 ******************************************************/ void int_delay(void) //延時一段較長的時間 {unsigned int m; //定義無符號整形變量,雙字節數據,值域為0~65535for(m=0;m<36000;m++); //空操作 } /****************************************************** 函數功能:用字符型數據延時一段時間 ******************************************************/ void char_delay(void) //延時一段較短的時間 {unsigned char i,j; //定義無符號字符型變量,單字節數據,值域0~255for(i=0;i<200;i++)for(j=0;j<180;j++); //空操作 }


總結

以上是生活随笔為你收集整理的特殊功能寄存器SFR的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。