找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6532|回復(fù): 10
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)底層硬件與軟件的關(guān)系

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:223571 發(fā)表于 2017-10-27 11:19 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
隨著學(xué)習(xí)單片機(jī)的深入,對(duì)單片機(jī)的底層結(jié)構(gòu)有一種探知欲,例如51中,80H到FFH為特殊功能寄存器,這一區(qū)域里面有許多特殊功能寄存器,我理解為80H到FFH為一棟樓房,每一個(gè)字節(jié)地址為一個(gè)房間,每一個(gè)房間指定一個(gè)功能,由門牌號(hào)(字節(jié)名稱)所標(biāo)識(shí);
問(wèn)題:我存不存在這種可能性,鑒于字節(jié)地址空間這一物理結(jié)構(gòu)客觀存在,而我只是將不同的功能的寄存器名字換到其他的儲(chǔ)存地址里(還是在這個(gè)大的空間里80H到FFH),可以的話需要變哪些東西,如果不可以,原因又是什么?


請(qǐng)從單片機(jī)設(shè)計(jì)的角度來(lái)解釋,謝謝。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:123289 發(fā)表于 2017-10-27 12:49 | 只看該作者
如果你對(duì)匯編有一定的功底就會(huì)知道了。
其實(shí)沒(méi)有什么名子(DPTR、SP、P0……),名子是人為加的,CPU運(yùn)行時(shí)只認(rèn)代碼:
80H就對(duì)應(yīng)端口的8個(gè)引腳,不管你給它起什么句子(是不是P0)!灸憧梢詫⒕幾g器中的P0改成ANY試試】
從內(nèi)部硬件上講80H對(duì)應(yīng)一個(gè)寄存器(內(nèi)存),而端口上有8個(gè)引腳,與這個(gè)寄存器的輸出接在一起了(當(dāng)然也有輸入,結(jié)構(gòu)上你要看IO、P口這一節(jié))。
回復(fù)

使用道具 舉報(bào)

板凳
ID:164602 發(fā)表于 2017-10-27 15:18 | 只看該作者
個(gè)人觀點(diǎn):
不可以。
原因嘛,我是看了芯片說(shuō)明書后,得來(lái)的結(jié)論。
特殊功能寄存器與硬件直接相關(guān),每個(gè)功能的特殊寄存器都是在設(shè)計(jì)芯片時(shí)就定好了的,不然,為什么不同的芯片必須要用相應(yīng)的頭文件呢,而這種頭文件里,就是定義了特殊功能寄存器,用直觀的英文名稱,代替不好記憶的地址。
如果可以隨便更改地址,那么于說(shuō)明書就不會(huì)將那些寄存器的地址做專門說(shuō)明,只需要說(shuō)明地址段是什么就可以了。
是不是這個(gè)理兒?

評(píng)分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:212797 發(fā)表于 2017-10-28 15:27 | 只看該作者
可以的,但是不建議修改。
單片機(jī)的每一項(xiàng)操作都是在實(shí)際的寄存器上進(jìn)行,MCU之所以認(rèn)識(shí)P0、P1這些東西,是因?yàn)樵趓eg52.h頭文件里面有一個(gè)寄存器的映射對(duì)應(yīng)表,我們將P0對(duì)應(yīng)到0x80地址上,其余的以此類推。用P0、P1這樣的名字是為了從編程人員的角度上便于理解,如果你把0x80映射的名字改為ligoudan(李狗蛋),在編程中你會(huì)發(fā)現(xiàn)程序也沒(méi)有問(wèn)題,但是我們看到這樣的名字,除了寫程序的人外,誰(shuí)都不知道這是什么東西,要想看懂還要去翻看頭文件中的定義,查找手冊(cè)中地址列表;而且如果把你的這個(gè)程序拿到其他機(jī)器上沒(méi)法編譯(大家用的是通用的名稱列表)。
所以從多方面考慮不建議這么做,當(dāng)然這么思考是對(duì)的,可以真正理解單片機(jī)的機(jī)理。另外,如果想更深層的從寄存器上學(xué)習(xí),可以了解單片機(jī)匯編語(yǔ)言編程,這樣你可以學(xué)習(xí)到循環(huán)到底是怎么實(shí)現(xiàn)的,中斷實(shí)際要經(jīng)過(guò)哪些步驟才能完成、棧原理和操作等等。
回復(fù)

使用道具 舉報(bào)

5#
ID:111634 發(fā)表于 2017-10-28 22:08 | 只看該作者
你如果是用c 編程,不理解也罷!要深入理解,就要了解單片機(jī)匯編語(yǔ)言編程。
回復(fù)

使用道具 舉報(bào)

6#
ID:223571 發(fā)表于 2017-11-7 21:13 | 只看該作者
HC6800-ES-V2.0 發(fā)表于 2017-10-27 15:18
個(gè)人觀點(diǎn):
不可以。
原因嘛,我是看了芯片說(shuō)明書后,得來(lái)的結(jié)論。

"如果可以隨便更改地址,那么于說(shuō)明書就不會(huì)將那些寄存器的地址做專門說(shuō)明,只需要說(shuō)明地址段是什么就可以了。"   


我的理解是那一個(gè)范圍是作為特殊功能寄存器,但是這一范圍里面的各個(gè)功能可以變換說(shuō)明
回復(fù)

使用道具 舉報(bào)

7#
ID:223571 發(fā)表于 2017-11-7 21:18 | 只看該作者
HC6800-ES-V2.0 發(fā)表于 2017-10-27 15:18
個(gè)人觀點(diǎn):
不可以。
原因嘛,我是看了芯片說(shuō)明書后,得來(lái)的結(jié)論。

我這里給你分享一下,頭文件只是對(duì)于硬件結(jié)構(gòu)的一種說(shuō)明,我可以更改自己編寫頭文件呀,就是說(shuō)給一塊裸芯片,已經(jīng)設(shè)計(jì)好了哪一塊的功能區(qū),但是具體細(xì)節(jié)功能能否自己更改設(shè)置,這才是設(shè)計(jì)的角度回答。
回復(fù)

使用道具 舉報(bào)

8#
ID:164602 發(fā)表于 2017-11-8 08:57 | 只看該作者
藍(lán)野 發(fā)表于 2017-11-7 21:18
我這里給你分享一下,頭文件只是對(duì)于硬件結(jié)構(gòu)的一種說(shuō)明,我可以更改自己編寫頭文件呀,就是說(shuō)給一塊裸芯 ...

我還是那個(gè)觀點(diǎn):每個(gè)特殊寄存器的名字隨便你取,但第個(gè)地址的功能是不會(huì)變的。
我這里以STC89C51RC芯片的手冊(cè)內(nèi)容為例:如圖所示:




你注意看其中的文字,每個(gè)特殊功能寄存器的地址是確定的,這里取好的名字,是方便理解記憶的,也是在REG51.H頭文件中說(shuō)明的,你可以改這個(gè)頭中各寄存器的名字,但不能改它的地址。例如:PSW寄存器,它的地址是D0H,各位也有相應(yīng)的功能,你可以在頭文件中修改這個(gè)名字——本來(lái)頭文件的說(shuō)明是:sfr PSW  = 0xD0;。你可以改名字,但絕對(duì)不能改地址。。∥蚁,之所以有這個(gè)手冊(cè),就是要告訴我們使用者,硬件設(shè)計(jì)師已經(jīng)通過(guò)硬件電路設(shè)定好了這些,每個(gè)寄存器地址、每個(gè)寄存器的功能,甚至每個(gè)位的功能都是確定好了的——不能改。!。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表