標(biāo)題: 單片機(jī)底層硬件與軟件的關(guān)系 [打印本頁]

作者: 藍(lán)野    時間: 2017-10-27 11:19
標(biāo)題: 單片機(jī)底層硬件與軟件的關(guān)系
隨著學(xué)習(xí)單片機(jī)的深入,對單片機(jī)的底層結(jié)構(gòu)有一種探知欲,例如51中,80H到FFH為特殊功能寄存器,這一區(qū)域里面有許多特殊功能寄存器,我理解為80H到FFH為一棟樓房,每一個字節(jié)地址為一個房間,每一個房間指定一個功能,由門牌號(字節(jié)名稱)所標(biāo)識;
問題:我存不存在這種可能性,鑒于字節(jié)地址空間這一物理結(jié)構(gòu)客觀存在,而我只是將不同的功能的寄存器名字換到其他的儲存地址里(還是在這個大的空間里80H到FFH),可以的話需要變哪些東西,如果不可以,原因又是什么?


請從單片機(jī)設(shè)計的角度來解釋,謝謝。

作者: yzwzfyz    時間: 2017-10-27 12:49
如果你對匯編有一定的功底就會知道了。
其實(shí)沒有什么名子(DPTR、SP、P0……),名子是人為加的,CPU運(yùn)行時只認(rèn)代碼:
80H就對應(yīng)端口的8個引腳,不管你給它起什么句子(是不是P0)!灸憧梢詫⒕幾g器中的P0改成ANY試試】
從內(nèi)部硬件上講80H對應(yīng)一個寄存器(內(nèi)存),而端口上有8個引腳,與這個寄存器的輸出接在一起了(當(dāng)然也有輸入,結(jié)構(gòu)上你要看IO、P口這一節(jié))。
作者: HC6800-ES-V2.0    時間: 2017-10-27 15:18
個人觀點(diǎn):
不可以。
原因嘛,我是看了芯片說明書后,得來的結(jié)論。
特殊功能寄存器與硬件直接相關(guān),每個功能的特殊寄存器都是在設(shè)計芯片時就定好了的,不然,為什么不同的芯片必須要用相應(yīng)的頭文件呢,而這種頭文件里,就是定義了特殊功能寄存器,用直觀的英文名稱,代替不好記憶的地址。
如果可以隨便更改地址,那么于說明書就不會將那些寄存器的地址做專門說明,只需要說明地址段是什么就可以了。
是不是這個理兒?
作者: xbook_ben    時間: 2017-10-28 15:27
可以的,但是不建議修改。
單片機(jī)的每一項操作都是在實(shí)際的寄存器上進(jìn)行,MCU之所以認(rèn)識P0、P1這些東西,是因為在reg52.h頭文件里面有一個寄存器的映射對應(yīng)表,我們將P0對應(yīng)到0x80地址上,其余的以此類推。用P0、P1這樣的名字是為了從編程人員的角度上便于理解,如果你把0x80映射的名字改為ligoudan(李狗蛋),在編程中你會發(fā)現(xiàn)程序也沒有問題,但是我們看到這樣的名字,除了寫程序的人外,誰都不知道這是什么東西,要想看懂還要去翻看頭文件中的定義,查找手冊中地址列表;而且如果把你的這個程序拿到其他機(jī)器上沒法編譯(大家用的是通用的名稱列表)。
所以從多方面考慮不建議這么做,當(dāng)然這么思考是對的,可以真正理解單片機(jī)的機(jī)理。另外,如果想更深層的從寄存器上學(xué)習(xí),可以了解單片機(jī)匯編語言編程,這樣你可以學(xué)習(xí)到循環(huán)到底是怎么實(shí)現(xiàn)的,中斷實(shí)際要經(jīng)過哪些步驟才能完成、棧原理和操作等等。
作者: zl2168    時間: 2017-10-28 22:08
你如果是用c 編程,不理解也罷!要深入理解,就要了解單片機(jī)匯編語言編程。
作者: 藍(lán)野    時間: 2017-11-7 21:13
HC6800-ES-V2.0 發(fā)表于 2017-10-27 15:18
個人觀點(diǎn):
不可以。
原因嘛,我是看了芯片說明書后,得來的結(jié)論。

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


我的理解是那一個范圍是作為特殊功能寄存器,但是這一范圍里面的各個功能可以變換說明
作者: 藍(lán)野    時間: 2017-11-7 21:18
HC6800-ES-V2.0 發(fā)表于 2017-10-27 15:18
個人觀點(diǎn):
不可以。
原因嘛,我是看了芯片說明書后,得來的結(jié)論。

我這里給你分享一下,頭文件只是對于硬件結(jié)構(gòu)的一種說明,我可以更改自己編寫頭文件呀,就是說給一塊裸芯片,已經(jīng)設(shè)計好了哪一塊的功能區(qū),但是具體細(xì)節(jié)功能能否自己更改設(shè)置,這才是設(shè)計的角度回答。
作者: HC6800-ES-V2.0    時間: 2017-11-8 08:57
藍(lán)野 發(fā)表于 2017-11-7 21:18
我這里給你分享一下,頭文件只是對于硬件結(jié)構(gòu)的一種說明,我可以更改自己編寫頭文件呀,就是說給一塊裸芯 ...

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




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





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1