最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

C51 單片機使用避坑指南:誤區(qū)與注意事項全解析

出處:網(wǎng)絡(luò)整理 發(fā)布于:2025-07-09 10:30:49

在學(xué)習(xí)和使用 C51 單片機的過程中,初學(xué)者往往會陷入一些誤區(qū),同時也需要注意一些關(guān)鍵要點。下面將詳細(xì)分析 C51 單片機的常見誤區(qū)和相關(guān)注意事項。

誤區(qū)一:C 忌諱定位


很多初學(xué)者常要求使用_at_,這其實是把 C 語言當(dāng)作匯編語言(ASM)看待的一種謬誤。在 C 語言里,變量的定位是編譯器的工作。初學(xué)者只需定義變量及其作用域,編譯器就會為變量分配一個固定地址。若要獲取變量的地址,需使用指針。例如,定義unsigned char data x;后,x的地址就是&x,通過查看這個參數(shù),就能在程序中知曉具體地址。所以,一旦看到有人要使用定位,印象大概率就是初學(xué)者。

誤區(qū)二:設(shè)置 SP 的問題


這與個誤區(qū)的原因類似。編譯器在為所有變量和緩沖區(qū)分配地址后,會自動將一個字節(jié)開始的地方作為棧指針(SP)的起始位置,因此初學(xué)者無需操心此事。這正體現(xiàn)了 C 語言的優(yōu)越性,許多工作在編譯時就已完成。

正確的 C 主程序結(jié)構(gòu)


一個的成功 C 程序結(jié)構(gòu)如下:


c#include <reg52.h> void main(void) {

    while(1); } 


這里的頭部文件是引用的外部資源文件,包含硬件信息以及外部模塊提供的可用函數(shù)和變量說明??梢杂梦谋痉绞酱蜷_reg52.h仔細(xì)研究,會對寫程序有所啟發(fā)。

構(gòu)成 C 項目的方法


在 C 語言中,常用項目來管理程序。項目一般分為 C 文件塊和頭部文件塊兩大部分。通常會把不同功能寫在不同的 C 文件中,依據(jù)項目管理規(guī)則,將所有文件連接起來,就能得到可燒錄的 HEX 文件或 BIN 文件。這些 C 文件中,有且僅有一個包含main()函數(shù),就像上述示例中的 C 文件。通過頭部文件將各個不同的 C 文件連接起來。一個 C 文件基本上要對應(yīng)一個 H 頭部文件,該 H 文件包含本 C 文件中可供外部使用的變量和函數(shù),未在 H 文件中列出的則是 C 文件的內(nèi)部函數(shù)和變量,外部 C 文件無法使用。

51 家族單片機


51 家族單片機均基于 8031,在此基礎(chǔ)上有很多擴展。有的將程序存儲器放在內(nèi)部,如 89c (S) 51;有的增加了 RAM,如 89c (S) 52;有的增加了一些專用硬件,如 80C552;有的改變了時鐘時序,如 W77E58。市面上常用的主要有 ATMEL 公司的 AT89X 系列、PHILIPS 的 P87 (89) x、臺灣 WINBOND 的 w77 (78) x 系列、Cygnal 的 C8051Fx 系列。
[此處插入 51 家族單片機的圖片]

51 單片機結(jié)構(gòu)的 C 描述


這里不詳細(xì)闡述 51 單片機的具體結(jié)構(gòu),主要引導(dǎo)初學(xué)者快速理解其物理結(jié)構(gòu)。寄存器和 IO 及其它硬件設(shè)備的地址名稱,可在相應(yīng)的 C 頭部文件中找到。例如,51 對應(yīng)reg51.h,52 對應(yīng)reg52.h,以此類推,如 winbond 的 78E58 對應(yīng)w78e58.h。這些頭部文件中有如下描述:


  • sfr:用于定義一個 8 位的設(shè)備。
  • sfr16:用于定義一個 16 位的設(shè)備。
  • sbit:用于定義一個位的設(shè)備。
    使用這些語句定義后,就可在 C 語言中像匯編一樣使用這些硬件設(shè)備,這是單片機應(yīng)用相較于標(biāo)準(zhǔn) C 語言的特殊之處,其它差別較小。

data、idata、xdata、pdata 的區(qū)別


  • data:固定指前面 0x00 - 0x7f 的 128 個 RAM,可以用累加器(acc)直接讀寫,速度快,生成的代碼也。
  • idata:固定指前面 0x00 - 0xff 的 256 個 RAM,其中前 128 個與 data 的 128 個完全相同,只是訪問方式不同。idata 是用類似 C 語言中的指針方式訪問的,匯編語句為mov ACC, @Rx
  • xdata:外部擴展 RAM,一般指外部 0x0000 - 0xffff 空間,用數(shù)據(jù)指針(DPTR)訪問。
  • pdata:外部擴展 RAM 的低 256 個字節(jié),地址出現(xiàn)在 A0 - A7 上時進(jìn)行讀寫,用movx ACC, @Rx讀寫。不過,C51 似乎存在對此的一些問題,建議少用,但它也有優(yōu)點,具體用法屬于中級問題,這里暫不提及。

startup.a51 的作用


和匯編語言一樣,在 C 語言中定義的變量和數(shù)組的初始化在startup.a51中完成。若在定義全局變量時帶有數(shù)值,如unsigned char data xxx = 100;,startup.a51中就會有相關(guān)賦值;若沒有賦值,startup.a51會將其清零。初始化完成后,還會設(shè)置 SP 指針。對于非變量區(qū)域,如堆棧區(qū),不會進(jìn)行賦值或清零操作。有人喜歡修改startup.a51以滿足一些想法,但這是不必要且可能出錯的。例如,在掉電保護(hù)時想保存一些變量,可利用非變量區(qū)域的特性,定義一個指針變量指向堆棧底部 0xff 處來實現(xiàn),而無需修改startup.a51。實際上,只要明白其特性,任何時候都無需修改startup.a51

關(guān)鍵詞:C51 單片機  

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.udpf.com.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時間周一至周五
9:00-17:30

關(guān)注官方微信號,
第一時間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務(wù)的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!