久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3356|回復: 3
打印 上一主題 下一主題
收起左側

51單片機頭文件reg51.h學習心得

[復制鏈接]
跳轉到指定樓層
樓主
ID:641833 發(fā)表于 2019-12-18 20:14 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
1)“文件包含”處理概念

所謂“文件包含”是指在一個文件內將另外一個文件的內容全部包含進來。因為被包含的文件中的一些定義和命令使用的頻率很高,幾乎每個程序中都可能要用到,為了提高編程效率,減少編程人員的重得勞動,將這些定義和命令單獨組成一個文件,如reg51.h,然后用#include<reg51.h>包含進來就可以了,這個就相當于工業(yè)上的標準零件,拿來直接用就可以了。

2)寄存器地址及位地址聲明的原因

其實相當于為這些內存地址取個名字。reg51.h里面主要是一些特殊功能寄存器的地址聲明,對可以位尋址的,還包括一些位地址的聲明,如果如sfr P1=0x80; sfr IE=0xA8;sbit EA=0xAF等。

注意這里出現(xiàn)了一個使用很頻繁的sfr和sbit。

sfr 表示特殊功能寄存器的意思,它并非標準C 語言的關鍵字,而是Keil為能直接訪問80C51中的SFR 而提供了一個新的關鍵詞,其用法是:sfr  特殊功能寄存器名=地址值

(注意對于頭文件里“特殊功能寄存器名”,用戶實際上也可以修改 的,如P1=0x80,也可改為A1=0x80,但sfr和地址值則不能更改,否者會編譯出錯。)   

sbit表示位的意思,它也是非標準C 語言的關鍵字,編寫程序時如需操作寄存器的某一位(可位尋址的寄存器才能用)時,需定義一個位變量,此時就要要到sbit,如sbit deng=P1^0,sbit EA = 0xAF;

需要注意的是,位定義時有些特殊,用法有三種:

第一種方法:sbit 位變量名=寄存器位地址值

第二種方法:sbit 位變量名=SFR名稱^寄存器位值(0-7)

第三種方法:sbit 位變量名=SFR地址值^寄存器位值

“名稱^變量位地址值”中“^”,它是由keil軟件的規(guī)定的 ,不能寫成其它的,只能這樣能才編譯通過。  以上是對寄存器地址和位地址的定義和聲明作了解釋,大家需要牢牢記住:只有對寄存器及相關位進行聲明地址后,我們才能對其進行賦相關的值,keil軟件才能編譯通過。

即:只有對寄存器及相關位進行聲明地址后,我們才能對其進行賦相關的值,keil軟件才能編譯通過。



3)REG51.H頭文件原文及解釋

下面的這些相當于給各寄存器起個別名,不過這個別名為了易于識別,對應的都是相應功能的寄存器名稱,例如sfr P0 = 0x80; //P0口,指的是用P0代替0x80。對P0的操作即是對0x80地址的操作。其中0x80是P0的地址。

* BYTE Register */
sfr P0 = 0x80; //P0口
sfr P1 = 0x90; //P1口
sfr P2 = 0xA0; //P2口
sfr P3 = 0xB0; //P3口
sfr PSW = 0xD0; //程序狀態(tài)字,具體位意義見位定義
sfr ACC = 0xE0; //累加器,程序員最常用的
sfr B = 0xF0; //寄存器,主要用于乘除
sfr SP = 0x81; //堆棧指針,初始化為07;先加1后壓棧,先出棧再減1,
sfr DPL = 0x82;
sfr DPH = 0x83; //數(shù)據指針,用途大
sfr PCON = 0x87; //電源控制
sfr TCON = 0x88; //Timer/Counter控制
sfr TMOD = 0x89; //Timer/Counter方式控制
sfr TL0 = 0x8A;
sfr TL1 = 0x8B; //
sfr TH0 = 0x8C; //存著當前的計數(shù)值
sfr TH1 = 0x8D; //

sfr IE = 0xA8; //好東西,中斷控制
sfr IP = 0xB8; //中斷優(yōu)先級控制,沒有設計過要求時間嚴格的系統(tǒng),所以至今沒有用過
sfr SCON = 0x98; //串口控制寄存器
sfr SBUF = 0x99; //串口緩沖寄存器


下面的這些可以用位操作,某寄存器某一位的位地址有可能和另一個寄存器的直接地址重合,但在使用時對位地址操作的指令與對直接地址的操作是不同的,所以不會混淆。

51單片機內部共有21個SFR,每個SFR占1個字節(jié),多數(shù)字節(jié)單元中的每一位又有專用的“位名稱”。這21個SFR又按是否可以位尋址分為兩大部分,ACC、IE、P1等11個可以位尋址,SP、TMOD等不可以位尋址。


sbit CY = 0xD7; //進位或借位,有就是1,沒有就是0
sbit AC = 0xD6; //輔助進借位,(麻煩b)
sbit F0 = 0xD5; //沒有具體用途,可以由用戶決定他的意義,所以它就沒有意義
sbit RS1 = 0xD4;
sbit RS0 = 0xD3; //工作寄存器選擇,這個在下面解釋
sbit OV = 0xD2; //over!溢出,有是1,沒有是0
sbit P = 0xD0; //奇偶校驗,奇數(shù)個1是1

sbit TF1 = 0x8F; //T1的中斷請求標志
sbit TR1 = 0x8E; //Timer 1 running,好記吧~
sbit TF0 = 0x8D; //
sbit TR0 = 0x8C; //把上面兩個1換成0
sbit IE1 = 0x8B; //interrupt external 1 外中斷請求標志
sbit IT1 = 0x8A; //interrupt triggle 1 外中斷觸發(fā)方式
sbit IE0 = 0x89;
sbit IT0 = 0x88; //同樣,把上面的兩個1換成0


sbit EA = 0xAF; //Enable all哇,重要,全局中斷控制,光著他,哈哈,什么都不用作了,就像放假一樣
sbit ES = 0xAC; //Enable Serial,開串口中斷
sbit ET1 = 0xAB; //Enable Timer/Counter 1
sbit EX1 = 0xAA; //Enable External 1
sbit ET0 = 0xA9; //Enable Timer/counter 0
sbit EX0 = 0xA8; //Enable External 0


sbit PS = 0xBC; //串行中斷優(yōu)先級
sbit PT1 = 0xBB; //T1優(yōu)先級
sbit PX1 = 0xBA; //外部中斷1優(yōu)先級
sbit PT0 = 0xB9; //
sbit PX0 = 0xB8; //上面兩個1換成0

//控制寄存器!。。
sbit RD = 0xB7; //讀
sbit WR = 0xB6; //寫
sbit T1 = 0xB5; //T/C1
sbit T0 = 0xB4; //T/C0
sbit INT1 = 0xB3; //外中斷1
sbit INT0 = 0xB2; //外中斷0
sbit TXD = 0xB1; //串行發(fā)送
sbit RXD = 0xB0; //串行接收


sbit SM0 = 0x9F; //
sbit SM1 = 0x9E; //串口工作方式
sbit SM2 = 0x9D; //什么鬼特征位,要用查書,或者等我以后解釋,啊哈
sbit REN = 0x9C; //串行接收允許
sbit TB8 = 0x9B; //收到的第九位
sbit RB8 = 0x9A; //要發(fā)的第九位
sbit TI = 0x99; //哇,熟悉吧,發(fā)送完成中斷標志
sbit RI = 0x98; //接收完成中斷標志

經過上面的操作,相應的名字即與相應的地址聯(lián)系了起來。使用該定義的名字即是對該內存的操作。(sfr P0 = 0x80; //P0口,該IO口對應地址0x80是硬件設計好的,把數(shù)據放入此處即可輸出該數(shù)據。)

4)可位尋址區(qū)(特對低128字節(jié)作了一個介紹)

從表中可以看到, “位地址4EH”,是在“字節(jié)地址29H”中,是第6位。

對位尋址區(qū)可以按照“位地址”來對某一個位單獨進行操作,也可以按照“字節(jié)地址”進行操作,即同時對八個位地址的內容進行操作。MCS-51系列單片機具有一套專用的“位操作”指令(又稱為布爾指令),可對這些位地址進行“與”、“或”、“非”等操作。這是該系列單片機的特色之一。

一般的8051芯片實際內部RAM只有128B從0x00-0x7F,而從0x80-0xFF則是SFR是CPU工作寄存器和各種外設寄存器都在此的區(qū)域。(也即是內存與外設統(tǒng)一編址,外設占用內存的地址)

完整的Word格式文檔51黑下載地址:
51頭文件.docx (382.89 KB, 下載次數(shù): 31)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:328014 發(fā)表于 2019-12-20 00:35 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

板凳
ID:1103831 發(fā)表于 2023-12-12 10:22 | 只看該作者
請問這個頭文件可以直接用iar保存嗎?然后自己放到相應文件夾中
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产乱码精品一区二三赶尸艳谈 | 日韩欧美三区 | 亚洲欧美日韩在线 | a在线免费观看 | 欧美精品在线一区二区三区 | 久草视频在线播放 | 日韩欧美视频 | 国产精品免费高清 | 密室大逃脱第六季大神版在线观看 | 精品美女 | 成人免费淫片aa视频免费 | 91色视频在线观看 | av网站免费 | 午夜影院在线播放 | 午夜欧美 | 国产美女视频一区 | 成人区一区二区三区 | www.蜜桃av | 日韩中文字幕在线免费 | a免费视频 | 91人人看 | 国产精品一区二 | 日本中文字幕一区 | 亚洲国产成人精品女人久久久 | 久久久久久久久久久福利观看 | 亚洲 中文 欧美 日韩 在线观看 | 欧美精品一区二区在线观看 | 91精品国产乱码久久久 | 91久久精品国产91久久性色tv | 日韩欧美中文字幕在线观看 | 日日夜精品视频 | 免费亚洲婷婷 | 久色激情 | 久久国产高清 | 黄色片视频免费 | 国产日韩欧美 | 天天操欧美 | 国产一区二区三区在线免费 | 免费看av大片 | 国产福利网站 | 亚洲日韩欧美一区二区在线 |