日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 我們?cè)谟胏語(yǔ)言編程是往往第一行就是reg51.h或者其他的自定義頭文件,我們?cè)趺礃觼?lái)理解呢?1)“文件包含”處理。程序的第一行是一個(gè)“文件包含”處理。所謂“文件包含”是指一個(gè)文件將另外一個(gè)文件的內(nèi)

我們?cè)谟胏語(yǔ)言編程是往往第一行就是reg51.h或者其他的自定義頭文件,我們?cè)趺礃觼?lái)理解呢?

1)“文件包含”處理。

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

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

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

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

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

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

REG51.H


Header file for generIC80C51 and 80C31 microcontroller.

Copyright (c) 1988-2002 Keil Elektronik GmbH and KeilSOFtware, 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 語(yǔ)言中十六進(jìn)制數(shù)的寫(xiě)法,相當(dāng)于匯編語(yǔ)言中寫(xiě)90H)。

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

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

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

sfrt 變量名=地址值。


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

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

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

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

的關(guān)鍵字sbit 來(lái)定義,sbit 的用法有三種:

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

第二種方法:sbit 位變量名=SFR 名稱^變量位地址值

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

如定義PSW 中的OV 可以用以下三種方法:

sbit OV=0xd2 (1)說(shuō)明:0xd2 是OV 的位地址值

sbit OV=PSW^2 (2)說(shuō)明:其中PSW 必須先用sfr 定義好

sbit OV=0xD0^2 (3)說(shuō)明:0xD0 就是PSW 的地址值

因此這里用sfr P1_0=P1^0;就是定義用符號(hào)P1_0 來(lái)表示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)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

寫(xiě)一篇關(guān)于“PLC程序設(shè)計(jì)方法與技巧”的文章3000字可能內(nèi)容過(guò)多,我可以為您提供一個(gè)文章大綱,供您參考:

關(guān)鍵字: PLC 程序設(shè)計(jì) 自動(dòng)化

微控制器單元(Microcontroller Unit,簡(jiǎn)稱MCU)芯片是一種集成了中央處理器(CPU)、存儲(chǔ)器和各種輸入輸出接口的微型計(jì)算機(jī)芯片。MCU芯片廣泛應(yīng)用于嵌入式系統(tǒng)領(lǐng)域,具有體積小、功耗低、成本低等特點(diǎn)。M...

關(guān)鍵字: MCU器件 程序設(shè)計(jì)

MATLAB是美國(guó)MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于數(shù)據(jù)分析、無(wú)線通信、深度學(xué)習(xí)、圖像處理與計(jì)算機(jī)視覺(jué)、信號(hào)處理、量化金融與風(fēng)險(xiǎn)管理、機(jī)器人,控制系統(tǒng)等領(lǐng)域。

關(guān)鍵字: matlab 程序設(shè)計(jì) 計(jì)算機(jī)視覺(jué)

在單片機(jī)系統(tǒng)設(shè)計(jì)中,程序設(shè)計(jì)是重要的一環(huán),它的質(zhì)量直接影響到整個(gè)系統(tǒng)的功能。用匯編語(yǔ)言進(jìn)行程序設(shè)計(jì)的過(guò)程和用高級(jí)語(yǔ)言設(shè)計(jì)程序有相似之處,其設(shè)計(jì)過(guò)程大致可以分為以下幾個(gè)步驟:

關(guān)鍵字: 匯編語(yǔ)言 程序設(shè)計(jì) 單片機(jī)

摘 要:針對(duì)《計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)》教學(xué)中存在的具體問(wèn)題,文中從教學(xué)內(nèi)容、教學(xué)方法、教學(xué)模式等環(huán)節(jié)入手,在以“學(xué)生為主體,教師為主導(dǎo)”的教學(xué)理念指導(dǎo)下,整合優(yōu)化教學(xué)內(nèi)容,豐富教學(xué)資源,實(shí)踐混合教學(xué)、分層教學(xué)等教學(xué)模式,廣泛...

關(guān)鍵字: 程序設(shè)計(jì) 教學(xué)內(nèi)容 教學(xué)模式 學(xué)科競(jìng)賽

摘 要:針對(duì)《計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)》教學(xué)中存在的問(wèn)題,從教學(xué)內(nèi)容、教學(xué)方法、教學(xué)模式等環(huán)節(jié)提出了一系列改革措施,利用多媒體技術(shù)開(kāi)發(fā)了豐富的課程教學(xué)資源,滿足學(xué)生在線學(xué)習(xí)的需要。從教學(xué)效果來(lái)看,這些改革措施充分激發(fā)了學(xué)生學(xué)習(xí)...

關(guān)鍵字: 程序設(shè)計(jì) 教學(xué)模式 教學(xué)改革 課程建設(shè) 分級(jí)教學(xué)

本程序是在基于STC12C5A60S2芯片基礎(chǔ)上采用硬件PCA/PWM模塊編寫(xiě)。

關(guān)鍵字: stc12c5a60s2 51單片機(jī) C KEIL 頭文件

好的編程習(xí)慣,會(huì)直接影響代碼的質(zhì)量,在嵌入式C/C++中,頭文件的引用方式和方法有多種,同時(shí)一些細(xì)節(jié)也會(huì)影響你代碼質(zhì)量和編譯效率.

關(guān)鍵字: 軟件項(xiàng)目 頭文件

對(duì),你沒(méi)看錯(cuò),本文就是教你怎么寫(xiě)出讓同事無(wú)法維護(hù)的代碼。 原文:http://mindprod.com/jgloss/unmain.html 譯者:陳皓 (@左耳朵耗子) 譯文:http:...

關(guān)鍵字: 代碼 程序命名 程序設(shè)計(jì)

有這樣一位年輕人。 他獲得過(guò)百度之星程序設(shè)計(jì)大賽冠軍、谷歌編程挑戰(zhàn)賽第三名。

關(guān)鍵字: 編程 李開(kāi)復(fù) 程序設(shè)計(jì)
關(guān)閉