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

當前位置:首頁 > 單片機 > 單片機
[導讀] 我們在用c語言編程是往往第一行就是reg51.h或者其他的自定義頭文件,我們怎么樣來理解呢?1)“文件包含”處理。程序的第一行是一個“文件包含”處理。所謂“文件包含”是指一個文件將另外一個文件的內(nèi)

我們在用c語言編程是往往第一行就是reg51.h或者其他的自定義頭文件,我們怎么樣來理解呢?

1)“文件包含”處理。

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

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

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

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

(此文件一般在C:KEILC51INC下 ,INC文件夾根目錄里有不少頭文件,并且里面還有很多以公司分類的文件夾,里面也都是相關產(chǎn)品的頭文件。如果我們要使用自己寫的頭文件,使用的時候只需把對應頭文件拷貝到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)部結構的讀者不難看出,這里都是一些符號的定義,即規(guī)定符號名與地

址的對應關系。注意其中有

sfr P1 = 0x90;

這樣的一行,即定義P1 與地址0x90 對應,P1 口的地址就是0x90

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

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

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

的關鍵詞,其用法是:

sfrt 變量名=地址值。


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

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

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

呢?你這么認為,C 編譯器可不這么認為,所以必須給它們建立聯(lián)系,這里使用了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 引腳,如果你愿意也可以

起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


本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

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

關鍵字: PLC 程序設計 自動化

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

關鍵字: MCU器件 程序設計

MATLAB是美國MathWorks公司出品的商業(yè)數(shù)學軟件,用于數(shù)據(jù)分析、無線通信、深度學習、圖像處理與計算機視覺、信號處理、量化金融與風險管理、機器人,控制系統(tǒng)等領域。

關鍵字: matlab 程序設計 計算機視覺

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

關鍵字: 匯編語言 程序設計 單片機

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

關鍵字: 程序設計 教學內(nèi)容 教學模式 學科競賽

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

關鍵字: 程序設計 教學模式 教學改革 課程建設 分級教學

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

關鍵字: stc12c5a60s2 51單片機 C KEIL 頭文件

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

關鍵字: 軟件項目 頭文件

對,你沒看錯,本文就是教你怎么寫出讓同事無法維護的代碼。 原文:http://mindprod.com/jgloss/unmain.html 譯者:陳皓 (@左耳朵耗子) 譯文:http:...

關鍵字: 代碼 程序命名 程序設計

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

關鍵字: 編程 李開復 程序設計
關閉