国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

歷史上的今天

今天是:2025年01月05日(星期日)

正在發(fā)生

2018年01月05日 | C51在程序設(shè)計(jì)中的頭文件用法

發(fā)布者:runaway2000 來源: eefocus關(guān)鍵字:C51  程序設(shè)計(jì)  頭文件 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

我們?cè)谟?a href="http://m.womende.cn/zhuanti/LWf9SG" style="color:#4595e6;" target="_blank">c語言編程是往往第一行就是reg51.h或者其他的自定義頭文件,我們?cè)趺礃觼砝斫饽兀?/p>

1)“文件包含”處理。

程序的第一行是一個(gè)“文件包含”處理。

所謂“文件包含”是指一個(gè)文件將另外一個(gè)文件的內(nèi)容全部包含進(jìn)來。程序中包含REG51.h

文件的目的是為了要使用P1 (還有其他更多的符號(hào))這個(gè)符號(hào),即通知C 編譯器,程序中所寫的P1 是指80C51單片機(jī)的P1 端口而不是其它變量。這是如何做到的呢?

打開reg51.h 可以看到這樣的一些內(nèi)容:

(此文件一般在C:\KEIL\C51\INC下 ,INC文件夾根目錄里有不少頭文件,并且里面還有很多以公司分類的文件夾,里面也都是相關(guān)產(chǎn)品的頭文件。如果我們要使用自己寫的頭文件,使用的時(shí)候只需把對(duì)應(yīng)頭文件拷貝到INC文件夾里就可以了。)

/*--------------------------------------------------------------------------

REG51.H


Header file for generIC 80C51 and 80C31 microcontroller.

Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil SOFtware, Inc.

All rights reserved.

--------------------------------------------------------------------------*/


#ifndef __REG51_H__

#define __REG51_H__


/* BYTE Register */

sfr P0   = 0x80;

sfr P1   = 0x90;

sfr P2   = 0xA0;

sfr P3   = 0xB0;

sfr PSW = 0xD0;

sfr ACC = 0xE0;

sfr B   = 0xF0;

sfr SP   = 0x81;

sfr DPL = 0x82;

sfr DPH = 0x83;

sfr PCON = 0x87;

sfr TCON = 0x88;

sfr TMOD = 0x89;

sfr TL0 = 0x8A;

sfr TL1 = 0x8B;

sfr TH0 = 0x8C;

sfr TH1 = 0x8D;

sfr IE   = 0xA8;

sfr IP   = 0xB8;

sfr SCON = 0x98;

sfr SBUF = 0x99;



/* BIT Register */

/* PSW   */

sbit CY   = 0xD7;

sbit AC   = 0xD6;

sbit F0   = 0xD5;

sbit RS1 = 0xD4;

sbit RS0 = 0xD3;

sbit OV   = 0xD2;

sbit P    = 0xD0;


/* TCON */

sbit TF1 = 0x8F;

sbit TR1 = 0x8E;

sbit TF0 = 0x8D;

sbit TR0 = 0x8C;

sbit IE1 = 0x8B;

sbit IT1 = 0x8A;

sbit IE0 = 0x89;

sbit IT0 = 0x88;


/* IE   */

sbit EA   = 0xAF;

sbit ES   = 0xAC;

sbit ET1 = 0xAB;

sbit EX1 = 0xAA;

sbit ET0 = 0xA9;

sbit EX0 = 0xA8;


/* IP   */

sbit PS   = 0xBC;

sbit PT1 = 0xBB;

sbit PX1 = 0xBA;

sbit PT0 = 0xB9;

sbit PX0 = 0xB8;


/* P3 */

sbit RD   = 0xB7;

sbit WR   = 0xB6;

sbit T1   = 0xB5;

sbit T0   = 0xB4;

sbit INT1 = 0xB3;

sbit INT0 = 0xB2;

sbit TXD = 0xB1;

sbit RXD = 0xB0;


/* SCON */

sbit SM0 = 0x9F;

sbit SM1 = 0x9E;

sbit SM2 = 0x9D;

sbit REN = 0x9C;

sbit TB8 = 0x9B;

sbit RB8 = 0x9A;

sbit TI   = 0x99;

sbit RI   = 0x98;


#endif


熟悉80C51 內(nèi)部結(jié)構(gòu)的讀者不難看出,這里都是一些符號(hào)的定義,即規(guī)定符號(hào)名與地

址的對(duì)應(yīng)關(guān)系。注意其中有

sfr P1 = 0x90;

這樣的一行,即定義P1 與地址0x90 對(duì)應(yīng),P1 口的地址就是0x90

(0x90 是C 語言中十六進(jìn)制數(shù)的寫法,相當(dāng)于匯編語言中寫90H)。

從這里還可以看到一個(gè)頻繁出現(xiàn)的詞:sfr

sfr 并非標(biāo)準(zhǔn)C 語言的關(guān)鍵字,而是Keil 為能直接訪問80C51 中的SFR 而提供了一個(gè)新

的關(guān)鍵詞,其用法是:

sfrt 變量名=地址值。


2)符號(hào)P1_0 來表示P1.0 引腳。

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

語言變量名,所以得給它另起一個(gè)名字,這里起的名為P1_0,可是P1_0 是不是就是P1.0

呢?你這么認(rèn)為,C 編譯器可不這么認(rèn)為,所以必須給它們建立聯(lián)系,這里使用了Keil C

的關(guān)鍵字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;就是定義用符號(hào)P1_0 來表示P1.0 引腳,如果你愿意也可以

起P10 一類的名字,只要下面程序中也隨之更改就行了。



下面再附上reg52.h的頭文件內(nèi)容:

/*--------------------------------------------------------------------------

REG52.H


Header file for generic 80C52 and 80C32 microcontroller.

Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.

All rights reserved.

--------------------------------------------------------------------------*/


#ifndef __REG52_H__

#define __REG52_H__


/* BYTE Registers */

sfr P0    = 0x80;

sfr P1    = 0x90;

sfr P2    = 0xA0;

sfr P3    = 0xB0;

sfr PSW   = 0xD0;

sfr ACC   = 0xE0;

sfr B     = 0xF0;

sfr SP    = 0x81;

sfr DPL   = 0x82;

sfr DPH    = 0x83;

sfr PCON = 0x87;

sfr TCON = 0x88;

sfr TMOD = 0x89;

sfr TL0   = 0x8A;

sfr TL1   = 0x8B;

sfr TH0   = 0x8C;

sfr TH1   = 0x8D;

sfr IE    = 0xA8;

sfr IP    = 0xB8;

sfr SCON = 0x98;

sfr SBUF = 0x99;


/* 8052 Extensions */

sfr T2CON = 0xC8;

sfr RCAP2L = 0xCA;

sfr RCAP2H = 0xCB;

sfr TL2    = 0xCC;

sfr TH2    = 0xCD;



/* BIT Registers */

/* PSW */

sbit CY    = PSW^7;

sbit AC    = PSW^6;

sbit F0    = PSW^5;

sbit RS1   = PSW^4;

sbit RS0   = PSW^3;

sbit OV    = PSW^2;

sbit P     = PSW^0; //8052 only


/* TCON */

sbit TF1   = TCON


關(guān)鍵字:C51  程序設(shè)計(jì)  頭文件 引用地址:C51在程序設(shè)計(jì)中的頭文件用法

上一篇:C51程序設(shè)計(jì)中斷及寄存器使用方法
下一篇:I2C總線的工作原理與在51單片機(jī)中的應(yīng)用

推薦閱讀

1月份全球科技圈有一場(chǎng)大規(guī)模盛事,即1月9日在賭城拉斯維加斯開幕的CES 2018大展。華為手機(jī)昨天宣布,將于當(dāng)?shù)貢r(shí)間9日、北京時(shí)間10日(星期三)亮相CES,主打“新起點(diǎn)”。結(jié)合目前的爆料,華為方面應(yīng)該會(huì)借此機(jī)會(huì)宣布Mate 10系列手機(jī)正式進(jìn)軍美國(guó)。此前,華為的手機(jī)主要在Bestbuy、亞馬遜商城等銷售,但美國(guó)市場(chǎng)的消費(fèi)者超過7成都是通過運(yùn)營(yíng)商渠道選購(gòu),而...
在智能手表領(lǐng)域,除了蘋果公司的 Apple Watch 之外,三星智能手表毫無疑問是 Android 系統(tǒng)生態(tài)的代表之一。早在 2018 年 8 月,三星推出了旗下的全新智能手表產(chǎn)品——三星 Galaxy Watch ,作為 Android 陣營(yíng)當(dāng)中的智能手表代表之一,三星 Galaxy Watch 到底有何特別之處?本期拆評(píng)就為大家拆解三星 Galaxy Watch 來為大家一探究竟。拆...
對(duì)于電動(dòng)汽車車主來說,尋找可充電的專用停車位一直是個(gè)麻煩事,移動(dòng)式的充電成為大家共同的夢(mèng)想?,F(xiàn)在,大眾汽車也加入研究充電機(jī)器人的隊(duì)伍了。 1月2日消息,德國(guó)汽車制造商大眾汽車創(chuàng)建了一個(gè)自動(dòng)為電動(dòng)汽車充電的機(jī)器人原型。該機(jī)器人可以在無需人類干預(yù)的情況下自動(dòng)為汽車充電。作為車主,只需要通過一個(gè)將機(jī)器人召喚到車輛旁邊即可充電。大眾汽車...
近日,新型Micro-LED半導(dǎo)體顯示技術(shù)公司“思坦科技”宣布完成pre-A輪融資,本輪投資方為中芯聚源。據(jù)其官網(wǎng)介紹,思坦科技是一家專業(yè)從事Micro-LED技術(shù)開發(fā)、生產(chǎn)銷售的企業(yè),是廣東省重點(diǎn)研發(fā)專項(xiàng)Micro-LED項(xiàng)目聯(lián)合承擔(dān)單位。公司以解決Micro-LED技術(shù)與產(chǎn)業(yè)化過程中的實(shí)際問題為目標(biāo),致力于領(lǐng)導(dǎo)和推動(dòng)Micro-LED新型顯示產(chǎn)業(yè)發(fā)展,同時(shí)整合優(yōu)質(zhì)投資資源,...

史海拾趣

問答坊 | AI 解惑

AOS ON FAIRSHILD IOR VISHAY MI ST代理經(jīng)銷商

我公司是AOS,ON,FAIRSHILD,IOR,VISHAY,MI,ST國(guó)際知名品牌代理經(jīng)銷商,主要經(jīng)營(yíng)各系品牌IC、 IGBT、MOS管。有需要的廠家,可將預(yù)計(jì)年份周期各月采購(gòu)量以及,合作方式,意向價(jià)格(注明交貨地址,是否含稅以及稅率)發(fā)給我司(sal06@wgwydz.com)。對(duì)有合作 ...…

查看全部問答∨

WinCE 6.0 KITL無法使用debugger的問題

Build Options中已選中Enable kernel debugger和Enable KITL。 在Core OS Services中添加了Target Control Support。 Target Device Connectivity Options中的配置為: Download:  None Transport: Ethernet Debugger:  K ...…

查看全部問答∨

嵌入式系統(tǒng)的雙CPU通訊協(xié)議設(shè)計(jì)

我是應(yīng)屆的本科畢業(yè)生,學(xué)軟件工程的。簽到東軟IA事業(yè)部。給我出的畢業(yè)設(shè)計(jì)課題為《嵌入式系統(tǒng)的雙CPU通訊協(xié)議設(shè)計(jì)》??晌铱梢哉f基本沒有接觸過,有點(diǎn)無從下手的感覺。有沒有哪位牛人,給我點(diǎn)基本思路啊。比如: 1.用什么平臺(tái)、什么開發(fā)工具 2. ...…

查看全部問答∨

ADC0808的工作原理???

想知道下它是如何傳遞數(shù)據(jù)的,讀入數(shù)據(jù)后,送到輸出口的原理??比如說讀入的數(shù)據(jù)為3.85,到輸出口是怎么分配的??急…

查看全部問答∨

WindowsCE電源管理是不是存在設(shè)計(jì)問題?(高手請(qǐng)進(jìn))

小弟最近被手機(jī)白屏問題所煩擾。WinCE的display驅(qū)動(dòng)和backlight驅(qū)動(dòng)都屬于可以被電源管理的設(shè)備。但是他們有著潛在關(guān)系。 在系統(tǒng)suspend的時(shí)候,應(yīng)該先關(guān)背光,再關(guān)LCD。 而在系統(tǒng)wake up的時(shí)候,則應(yīng)該先開LCD,再開背光。 而Power Manager在管 ...…

查看全部問答∨

silicon labs新推無線通信模塊si1000系列資料

最近剛申請(qǐng)下芯科實(shí)驗(yàn)室的一款集MCU和無線通信模塊的芯片SI1000評(píng)估板,不知道大家有沒有用過,可以一起交流一下…

查看全部問答∨

關(guān)于測(cè)試功率的原理

想問下關(guān)于功率測(cè)試的原理,用什么系列的芯片,可以用什么樣的單片機(jī),程序流程應(yīng)該如何走 這功能是不是要分別測(cè)出電流和電壓然后來計(jì)算得出呢…

查看全部問答∨

PIC 18F6720中全局變量問題求解~

本人PIC單片機(jī)初學(xué)者,問個(gè)弱弱的問題,請(qǐng)各位高手幫幫忙解決。 如PIC 18F6720中,定義全局變量A,但在主函數(shù)中A的值為什么不能改變? Unsigned char A; Main() { //初始化省略; If(RA=1) ...…

查看全部問答∨

【設(shè)計(jì)工具】 演示如何使用ISE開發(fā)FPGA項(xiàng)目(1)

$(\'swf_anF\').innerHTML=AC_FL_RunContent(\'width\', \'550\', \'height\', \'400\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', encodeURI(\'http://player.youku.com/player.php/sid/XMTk5NDQzOTgw/v.sw ...…

查看全部問答∨

方波波形不平的問題~~~

我用TLC5615做了波形發(fā)生器,可調(diào)頻率和幅度(用電位器),AD采集用的是TLC2543,遇到的問題是:::: 在產(chǎn)生方波的時(shí)候,當(dāng)幅度很大的時(shí)候,波形不平;而幅度小的時(shí)候波形很平;;;;還有就是正弦波,調(diào)節(jié)幅度很大的時(shí)候,波形也會(huì)變形(正弦波 ...…

查看全部問答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved