www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 芯聞號(hào) > 基礎(chǔ)知識(shí)科普站
[導(dǎo)讀]學(xué)習(xí)過(guò)C語(yǔ)言的同學(xué)在對(duì)單片機(jī)有了基本了解之后,就可以開(kāi)始試著寫一兩個(gè)基于單片機(jī)的C語(yǔ)言的程序了。

80C51上的C語(yǔ)言編程 C51的特色:

(1)學(xué)習(xí)過(guò)C語(yǔ)言的同學(xué)在對(duì)單片機(jī)有了基本了解之后,就可以開(kāi)始試著寫一兩個(gè)基于單片機(jī)的C語(yǔ)言的程序了。C51語(yǔ)言繼承了ANSI C 的絕大部分的特性,基本的語(yǔ)法相同,同學(xué)們上手會(huì)比較快。但是,由于C51語(yǔ)言是對(duì)硬件進(jìn)行控制的編程語(yǔ)言,其本身又在硬件結(jié)構(gòu)上有所擴(kuò)展以增強(qiáng)C語(yǔ)言對(duì)硬件的控制,如關(guān)鍵字sbit,data,code等(后面會(huì)講他們是做什么的)。

關(guān)于單片機(jī)的C語(yǔ)言編程基礎(chǔ)知識(shí)(初學(xué)注意)

(2)因?yàn)閱纹瑱C(jī)不是我們平時(shí)用的計(jì)算機(jī),他的英文名為MCU(微控制器),特點(diǎn)體現(xiàn)在這個(gè)“微”字。因而,它里面的硬件資源是非常少的,所以你在寫程序的時(shí)候就要注意對(duì)RAM(存儲(chǔ)數(shù)據(jù))和ROM(存儲(chǔ)程序)的使用。說(shuō)白了,就是也程序的時(shí)候要盡量精簡(jiǎn),如各種算法,不要讓系統(tǒng)負(fù)擔(dān)太大。少用浮點(diǎn)運(yùn)算,能夠使用unsigned的無(wú)符號(hào)型數(shù)據(jù),就不要使用有符號(hào)的(當(dāng)你寫程序時(shí),你會(huì)發(fā)現(xiàn)很多位置都用的unsigned,不像我們?cè)贏NSI C里面不同,不太注意,C51里面就非常注意資源的控制)。避免乘除,多用移位運(yùn)算(寫走馬燈程序時(shí),會(huì)使用到,很有意思,不是我們想象的用循環(huán)控制)。

基本的特性了解之后,我們來(lái)講下,具體的東西:

首先,是C51針對(duì)硬件控制增加的一些關(guān)鍵字,數(shù)據(jù)類型。

(1)bit : 和我們平時(shí)用的int,char相同,只不過(guò)int是兩個(gè)字節(jié)(16位,16bit),char是單字節(jié)(8位,8bit),bit就是一位,取值范圍是0和1,類似windows編程里的BOOL。

(2)sbit : sbit是對(duì)應(yīng)可位尋址空間的一個(gè)位,可位尋址區(qū):20H~2FH。一旦用了sbit xxx = REGE^6這樣的定義(例如,sibt a = P0^0,定義P0口的第0位為變量a,此時(shí)對(duì)a賦值0或者1時(shí),就是在對(duì)P0口的第0位進(jìn)行控制,賦低電平或高電平),這個(gè)sbit量就確定地址了。(sbit大部分是用在特殊功能寄存器中的,方便對(duì)寄存器的某位進(jìn)行操作的。)

(3)sfr:用于定義特殊功能寄存器(8位的)(在程序中會(huì)寫頭文件#include,在Keil中右鍵點(diǎn)擊打開(kāi)reg51.h,就可以看到很多sfr的定義),如sfr P0 = 0x80,就定義了端口P0。

(4)sfr16:同上用于16位的

其次,C51還提供了對(duì)8051所有存儲(chǔ)區(qū)的訪問(wèn)。

8051芯片的存儲(chǔ)區(qū)從邏輯上分為內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū),外部數(shù)據(jù)存儲(chǔ)區(qū)和程序存儲(chǔ)區(qū)(內(nèi)外統(tǒng)一編址)。

80C51有4KB的內(nèi)部程序存儲(chǔ)區(qū)(片內(nèi)ROM)(0000H~0FFFH),其中前43單元有特殊用處,0000H~0002H無(wú)條件跳轉(zhuǎn),0003H~002AH用于存放中斷程序(中斷程序這里不解釋)

256B的內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)(片內(nèi)RAM),分為低128B和高128B,有不同作用(可見(jiàn)硬件資源有多小了吧,所以我們要節(jié)省使用),低128B又分為為工作寄存器區(qū),又稱通用寄存器(00H~1FH),位尋址區(qū)(20H~2FH,之前的sbit就是對(duì)應(yīng)位尋址空間中的一位),數(shù)據(jù)緩沖區(qū)(30H~7FH,這個(gè)區(qū)域就是給用戶用得,沒(méi)有任何限制,一共80個(gè)單位)

高128B為特殊功能寄存器(就是上面說(shuō)的sfr),具體的內(nèi)容在很多書上面都有。

http://www.mytutorialcafe.com/Microcontroller%20Special%20Function%20Register.htm

給個(gè)英文的sfr的解釋的網(wǎng)址,不過(guò)沒(méi)必要看,看書就行了。

在這里講這么多的原因是因?yàn)镃51中在對(duì)變量進(jìn)行聲明的時(shí)候還可以明確的指定存儲(chǔ)空間。關(guān)鍵字有:DATA,IDATA,BDATA(RAM中高128B),CODE等。

(1)DATA指定RAM中低128B,可以在一個(gè)機(jī)器周期內(nèi)直接尋址,尋址速度最快,所以應(yīng)該把經(jīng)常使用的變量放在DATA區(qū)

例如:unsigned char data system_status = 0;

(2)BDATA指定的是RAM中的位尋址區(qū),在這個(gè)區(qū)域定義的變量可以進(jìn)行位操作,什么意思呢?舉例吧

unsigned char bdata status_byte,這里定義變量status_byte,是一個(gè)單字節(jié)(8位)的數(shù)據(jù)變量,我們可以對(duì)這個(gè)變量中的一位進(jìn)行置0或置1的操作。我們把 status_byte=0x00,即變量里面的8位都置為了0,前面講過(guò)一個(gè)sbit,用于位尋址區(qū)域中的一位,sbit a = status_byte^2;a = 1,表示把變量 status_byte的第2位置為了1(0,1,2,3,4,5,6,7共八位),于是變量 status_byte就等于了0x02;

(3)CODE 程序存儲(chǔ)區(qū),他里面的內(nèi)容是不變的,我們要使用的一些固定數(shù)據(jù)存于這個(gè)里面就不用占用RAM的空間了,比如我們學(xué)習(xí)數(shù)碼管顯示程序時(shí),數(shù)碼管上面的每一個(gè)數(shù)字都對(duì)應(yīng)一個(gè)16進(jìn)制的數(shù)字,我們可以把它存到程序存儲(chǔ)區(qū)中去,例如:

unsigned char code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

關(guān)于特殊功能寄存器sfr的使用,我們以一個(gè)簡(jiǎn)單的程序?yàn)槔?,?0C51芯片的P0^0上接上一個(gè)發(fā)光二極管LED,一個(gè)電阻RES和一個(gè)電源VCC,三者串聯(lián),電流方向是從電源流向P0^0口。給80C51接上電源,接地,晶振,復(fù)位電路。如果使用proteus仿真,則這些電路不用接。

在Keil軟件中寫程序

#include

sbit a = P0^0;

void main(){

a = 0;

while(1);

}

因?yàn)樾酒瑒倓偵想?,P0管教為高電位,我們?cè)诔绦蛑邪阉脼?;電流就可以流過(guò)LED,于是LED燈就會(huì)發(fā)光。并用while(1)讓程序停在這里。

一個(gè)最簡(jiǎn)單的單片機(jī)C語(yǔ)言程序就寫完了。講了這么多希望同學(xué)們了解,C51對(duì)C語(yǔ)言的擴(kuò)展有所了解,知道可以通過(guò)C語(yǔ)言對(duì)硬件進(jìn)行控制,學(xué)會(huì)常用的關(guān)鍵字。

本站聲明: 本文章由作者或相關(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)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉