![reg51.h頭文件詳解_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/19/9caac31f-c16f-4964-93ec-6baf342de0a9/9caac31f-c16f-4964-93ec-6baf342de0a91.gif)
![reg51.h頭文件詳解_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/19/9caac31f-c16f-4964-93ec-6baf342de0a9/9caac31f-c16f-4964-93ec-6baf342de0a92.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、reg51.h頭文件詳解 “reg51.h”頭文件詳解 北方藍(lán)芯科技() 我們在學(xué)習(xí)單片機(jī)時,在程序的開頭都會包含一個頭文件“reg51.h”,初學(xué)者一般都對該文件存在一些懷疑。例如在我們試驗教程第一個試驗“點亮 一個發(fā)光二極管”中,程序如下: #include reg51.h /包含頭文件 sbit led=p10; /表示用led等效于p10, /p10就是指頭文件里定義的p1寄存器的第 0 bit void main() /主函數(shù) led=0; /低電平驅(qū)動發(fā)光二極管 while(1) /進(jìn)入while死循環(huán) 我們可以看到,程序的第一行便是一個“文件包含”處理。所謂“文件包含”是指一個文
2、件將另外一個文件的內(nèi)容全部包含進(jìn)來,這個程序中包含reg51.h頭文件的目的是為了要使用p1 這個符號,即通知c 編譯器,程序中所寫的p1 是指80c51 單片機(jī)的p1 端口而不是其它變量。這是為什么呢?我們可以將鼠標(biāo)放到包含頭文件這行,點擊鼠標(biāo)右鍵打開reg51.h文件,我們可以看到以下內(nèi)容。 /* byte register */ /特別功能寄存器定義(字節(jié)) sfr p0 = 0x80; /p0口地址定義 sfr p1 = 0x90; /p1口地址定義 sfr p2 = 0xa0; /p2口地址定義 sfr p3 = 0xb0; /p3口地址定義 sfr psw = 0xd0; /程序狀
3、態(tài)字,詳細(xì)位意義見位定義 sfr acc = 0xe0; /累加器,程序員最常用的 sfr b = 0xf0; /寄存器,主要用于乘除 sfr sp = 0x81; /堆棧指針,初始化為07;先加1后壓棧,先出棧再減1, sfr dpl = 0x82; / dptr寄存器的低八位 sfr dph = 0x83; / dptr寄存器的高八位 sfr pcon = 0x87; /電源掌握寄存器,最高位為smod位 sfr tcon = 0x88; /timer/counter掌握寄存器 sfr tmod = 0x89; /timer/counter方式掌握寄存器 sfr tl0 = 0x8a; /
4、定時器0低8位 sfr tl1 = 0x8b; /定時器1低8位 sfr th0 = 0x8c; /定時器0高8位 sfr th1 = 0x8d; /定時器1高8位 sfr ie = 0xa8; /中斷掌握寄存器 sfr ip = 0xb8; /中斷優(yōu)先級掌握寄存器 ww w.wwhrw.bnhrbcbn.cbcom.c/bombs sfr scon = 0x98; /串口掌握寄存器 sfr sbuf = 0x99; /串口緩沖寄存器 /* bit register */ /位地址寄存器 /* psw */ sbit cy = 0xd7; /進(jìn)位或借位,有就是1,沒有就是0 sbit ac =
5、 0xd6; /幫助進(jìn)借位 sbit f0 = 0xd5; /沒有詳細(xì)用途,可以由用戶打算他的意義 sbit rs1 = 0xd4; /工作寄存器選擇位 sbit rs0 = 0xd3; /工作寄存器選擇位 sbit ov = 0xd2; /over!溢出,有是1,沒有是0 sbit p = 0xd0; /奇偶校驗,奇數(shù)個1是1 /* tcon */ sbit tf1 = 0x8f; /t1溢出中斷申請標(biāo)志 sbit tr1 = 0x8e; /timer 1 running, sbit tf0 = 0x8d; / t0溢出中斷申請標(biāo)志 sbit tr0 = 0x8c; /把上面兩個1換成0 s
6、bit ie1 = 0x8b; /外中斷1懇求標(biāo)志 sbit it1 = 0x8a; /外中斷1觸發(fā)方式 sbit ie0 = 0x89; /外中斷0懇求標(biāo)志 sbit it0 = 0x88; /外中斷0觸發(fā)方式 /* ie */ sbit ea = 0xaf; /使能全部中斷 sbit es = 0xac; /串口中斷使能位 sbit et1 = 0xab; /定時器1使能位 sbit ex1 = 0xaa; /外中斷1使能位 sbit et0 = 0xa9; /定時器0使能位 sbit ex0 = 0xa8; /外中斷1使能位 /* ip */ sbit ps = 0xbc; /串行中斷優(yōu)
7、先級 sbit pt1 = 0xbb; /t1優(yōu)先級 sbit px1 = 0xba; /外部中斷1優(yōu)先級 sbit pt0 = 0xb9; / t0優(yōu)先級 sbit px0 = 0xb8; /外部中斷0優(yōu)先級 /* p3 */ /掌握寄存器 sbit rd = 0xb7; /讀 sbit wr = 0xb6; /寫 sbit t1 = 0xb5; /t/c1 sbit t0 = 0xb4; /t/c0 sbit int1 = 0xb3; /外中斷1 ww w.wwhrw.bnhrbcbn.cbcom.c/bombs sbit int0 = 0xb2; /外中斷0 sbit txd = 0xb
8、1; /串行發(fā)送 sbit rxd = 0xb0; /串行接收 /* scon */ sbit sm0 = 0x9f; / sbit sm1 = 0x9e; /串口工作方式 sbit sm2 = 0x9d; /什么鬼特征位,要用查書,或者等我以后解釋,啊哈 sbit ren = 0x9c; /串行接收允許 sbit tb8 = 0x9b; /收到的第九位 sbit rb8 = 0x9a; /要發(fā)的第九位 sbit ti = 0x99; /哇,熟識吧,發(fā)送完成中斷標(biāo)志 sbit ri = 0x98; /接收完成中斷標(biāo)志 當(dāng)然,解釋是加上去的,這里都是一些符號的定義,即規(guī)定符號名與地址的對應(yīng)關(guān)系。
9、下面理解一下sfr和sbit這兩個符號: 1)sfr 留意到 sfr p0 = 0x80; 這一行,就是定義p0 與地址0x80 對應(yīng),p0 口的地址就是0x80 sfr 這個詞并不是標(biāo)準(zhǔn)c 語言的關(guān)鍵字,而是keil 為能直接訪問80c51 中的sfr(特別功能寄存器) 而供應(yīng)了一個新的關(guān)鍵詞,其用法是: sfrt 變量名=地址值。 2)sbit 留意到sbit ea = 0xaf; 這一行,就是定義ea與地址0xaf 對應(yīng),ea中斷使能這一位的地址就是0xaf。 關(guān)于sbit,也不是標(biāo)準(zhǔn)的c關(guān)鍵字。而是keil 為能直接訪問80c51寄存器而供應(yīng)了一個新的關(guān)鍵詞,其用法是: sbit x=
10、an。其中a是一個可位尋址的變量,而n表示該變量的第幾位,而x就是一個位變量,它就是a中的第n位。這里的符號已經(jīng)不再是標(biāo)準(zhǔn)c語言中的異或操作符了,這里有它自己獨特的意思,只能是這樣的寫法。 例如:sbit p15=p15; 就是定義用符號p15 來表示p1.5 引腳,假如你情愿也可以用其它名字,只要下面程序中也隨之更改就行了。 另外,在培訓(xùn)過程中,發(fā)覺有不少同學(xué)對上面定義存在這樣一個懷疑,看下面兩行 sfr sp = 0x81; sbit p0_1 = 0x81; /p01=0x81; 這兩行共用一個地址,豈不沖突了。 解答如下: 當(dāng)然不會沖突,sfr跟sbit是兩個不同的意義,sfr是給一個字節(jié)的地址起一個變量名,傳給變量名的是該字節(jié)的首地址,如sfr p0=0x80,p0(8位io口)已經(jīng)代表了0x80到0x87整整8位的地址;而sbit定義的僅僅是一個位,如p0_1=0x80,p0_2=0x81 p0_7=0x87,他們是p0的詳細(xì)表現(xiàn),即是給0x80到0x87各起一個變量名。 ww w.wwhrw.bnhrbcbn.cbcom.c/bombs 編譯器會依據(jù)sfr和sbit兩個
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit 2 Weather Lesson 1(說課稿設(shè)計)-2023-2024學(xué)年人教新起點版英語二年級下冊001
- 2024年高中英語 Unit 3 Welcome to the unit and reading I說課稿 牛津譯林版選擇性必修第二冊
- 2024-2025學(xué)年高中歷史 第五單元 經(jīng)濟(jì)全球化的趨勢 第26課 經(jīng)濟(jì)全球化的趨勢(1)教學(xué)說課稿 岳麓版必修2
- Unit 2 Bridging Cultures Discover Useful Structures 說課稿-2024-2025學(xué)年高中英語人教版(2019)選擇性必修第二冊
- 2025農(nóng)村土地承包經(jīng)營權(quán)互換合同(I)
- 2024年五年級數(shù)學(xué)下冊 六 分?jǐn)?shù)除法6.5分?jǐn)?shù)四則混合運算說課稿 冀教版
- 2025信托資金借款合同協(xié)議
- 2025工程項目勞務(wù)分包合同
- 2025農(nóng)產(chǎn)品買賣合同(種子)
- 二零二五年度大型自動化設(shè)備買賣合同模板2篇
- 江西省部分學(xué)校2024-2025學(xué)年高三上學(xué)期1月期末英語試題(含解析無聽力音頻有聽力原文)
- GA/T 2145-2024法庭科學(xué)涉火案件物證檢驗實驗室建設(shè)技術(shù)規(guī)范
- 電廠檢修管理
- 2024年中考語文試題分類匯編:非連續(xù)性文本閱讀(學(xué)生版)
- 2024年度窯爐施工協(xié)議詳例細(xì)則版B版
- 2024年北京市平谷區(qū)中考英語二模試卷
- 第一屆山東省職業(yè)能力大賽濟(jì)南市選拔賽制造團(tuán)隊挑戰(zhàn)賽項目技術(shù)工作文件(含樣題)
- 尿毒癥替代治療
- 2022年公務(wù)員多省聯(lián)考《申論》真題(黑龍江省市卷)及答案解析
- 【課件】2025屆高考英語一輪復(fù)習(xí)小作文講解課件
評論
0/150
提交評論