PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   請問一下,8051的先進魔人大大們 (https://www.pcdvd.com.tw/showthread.php?t=638029)

上班一條蟲 2006-07-23 10:09 PM

若以同樣年資計算,待在寫8051的公司跟BIOS VENDOR(AWARD、AMI...)的待遇會差很多嗎?

蒼藍的月光 2006-07-23 10:22 PM

引用:
作者上班一條蟲
若以同樣年資計算,待在寫8051的公司跟BIOS VENDOR(AWARD、AMI...)的待遇會差很多嗎?


不好意思,大大,小弟現在待的公司之前離職的師傅大概是領到

40K多,之前的師傅年資月 6 年 ;然後就是讓你入股公司

可以分紅吧(即賣出去產品的獎金)

只能說,大大您要是學有專精還是去大公司吧!

至少大公司在人員的教育訓練和一些福利以及在專案

工作的進度處理要求會比較有"優先順續"

不會三不五時就來個"中斷"給你打擾一下...囧囧囧

蒼藍的月光 2006-07-24 09:47 AM

抱歉,小弟想跟各位先進大大老手討論一下 8051/52的程式記憶體

這部分的架構,小弟是採用89S52跟78E52C這兩款單晶片

內部程式記憶體(ROM) 8K byte

外部程式記憶體(ROM) 64K byte<含內部 8K byte>

內部資料記憶體(RAM) 256 byte

外部資料記憶體(RAM) 64K byte

一.

1.不管是內部或是外部程式記憶體 (ROM) ;就是存放編譯聯結後的8051控制程式,對不對!?

2.那想請教一下,8052/51只外部程式記憶體支援到 64K byte ,那如果先啟用內部程式記

憶體 8K byte 然後再啟用 外部程式記憶體 64K byte 這樣是不是就等於 64K+8K=72K byte

!?

二.

內部資料記憶體(RAM)可區分為較低的 128 byte(位址 00H~7FH)以及較高的 128 byte

(位址 80H~FFH)和特殊功能暫存器 (SFR,位址 80H~FFH)等三個區塊.其中較高的 128 byte

的資料記憶體謹在 8032/8052/8752/89C52 中存在,在 8031/8051/8751/89C51 中是沒有的

1.那這樣高的 128 byte(位址 80H~FFH)和特殊功能暫存器 (SFR,位址 80H~FFH)不就重複

了!?意思是只有89C52才有特殊功能暫存器囉!?

alex1973 2006-07-24 02:32 PM

1.不管是內部或是外部程式記憶體 (ROM) ;就是存放編譯聯結後的8051控制程式,對不對!?

Ans: 正確.

2.那想請教一下,8052/51只外部程式記憶體支援到 64K byte ,那如果先啟用內部程式記憶體 8K byte 然後再啟用 外部程式記憶體 64K byte 這樣是不是就等於 64K+8K=72K byte

Ans: 有正確的 link 還有程式技巧配合的話, 理論上可以靠這樣做 code banking, 不過要記住正常的 8051 都只有 16 根 address line, 所以同時能存取的 program memory 就只有 2^16=64k 空間.

3.那這樣高的 128 byte(位址 80H~FFH)和特殊功能暫存器 (SFR,位址 80H~FFH)不就重複了!?意思是只有89C52才有特殊功能暫存器囉!?

Ans: 市面上太多太多變種的 8051 了, 這部份請參考你那顆 8051 的手冊, SFR 是所有的 8051 變種都會有的 (到現在還沒看過沒有的), 至於 data, idata, xdata 甚至 edata, hdata 各種記憶體架構, 則是隨著各種變種都會有小小差別.

我覺得你最好還是先去翻翻一些 8051 的書, 因為你之前的問題都是非常基本的 8051 assembly 語法的問題. 數字的 # @ 前置符號以及沒有前置符號的差別這種問題實在是夠基本了. 與其在這邊慢慢問, 不如去找本 8051 的書, 把 timer, interrupt 這些所有 8051 共通的基本架構先有些概念, 然後再去看你那顆 8051 特有加強修改的部份 (以你們的用途, 大概專注在 GPIO/LED 控制吧). 之後再準備一本你用的 assembler 的使用手冊, 搭配現有的 code, 對照語法, 多做實驗, 應該很快就會突飛猛進啦.

yhboy 2006-07-24 03:37 PM

引用:
作者finkel
#是立即定址,就是直接給值,所以你第一個寫錯了
MOV A,#40H ;A=0100 0000,而不是40H(址)存的值

MOV A,40H ;A=40H(址)存的值

還有要寫#0FFH比較好吧

另外想問YHBOY兄,不知道熟8051有那些行業或是研究領域能走?
當然不一定要8051啦,最近在補計組,覺得MIPS語言跟8051也滿像的


finkel兄,小弟只就我所知的部份來回答.熟8051有哪些行業或是研究領域這問題...
行業是很多啦,因為可以應用在很多的產品上,所以舉凡3C產業或是自動控制應用上都可以吧,但主要就是以韌體應用為主吧.研究領域使用8051應該不多吧...但如果可以將8051的經驗為基礎再去學習業界或未來更常用的處理器可能會更好.

至於MIPS與8051....據我所知,MIPS應該是屬於RISC的架構,intel x86或是8051是屬於CISC的架構,組合語言看起來也許很像,但指令的運算元的個數和每個指令實際執行所花的時間還有兩種晶片的內部架構是完全不同的.至於說誰比較好就很難說,我認為夠用就好.如果你的應用很簡單當然不必使用很複雜的單晶片或是微處理器.而且8051變種的很多,在某些領域中功能也可以到非常強大.

以上是我粗淺的意見

蒼藍的月光 2006-07-24 05:38 PM

引用:
作者alex1973
1.不管是內部或是外部程式記憶體 (ROM) ;就是存放編譯聯結後的8051控制程式,對不對!?

Ans: 正確.

2.那想請教一下,8052/51只外部程式記憶體支援到 64K byte ,那如果先啟用內部程式記憶體 8K byte 然後再啟用 外部程式記憶體 64K byte 這樣是不是就等於 64K+8K=72K byte

Ans: 有正確的 link 還有程式技巧配合的話, 理論上可以靠這樣做 code banking, 不過要記住正常的 8051 都只有 16 根 address line, 所以同時能存取的 program memory 就只有 2^16=64k 空間.

3.那這樣高的 128 byte(位址 80H~FFH)和特殊功能暫存器 (SFR,位址 80H~FFH)不就重複了!?意思是只有89C52才有特殊功能暫存器囉!?

Ans: 市面上太多太多變種的 8051 了, 這部份請參考你那顆 8051 的手冊, SFR 是所有的 8051 變種都會有的 (到現在還沒看過沒有的), 至於 data, idata, xdata 甚至 edata, hdata 各種記憶體架構, 則是隨著...


大大感謝您的賜教,老實說小弟有在翻書了,可是有些問題就是搞不懂

如:

1.R0和R1可間接定址,那小弟如果想要讓R0和R1不間接定址,而直接使用常數
 
 值,可以嗎!?@_@!?

例如: R2,#30H==>這個是常數值
R0,#30H ==>這個是記憶體位址內容值

2.書本上說 20H~2FH可以位元定址

例: SETG 20H.2
CLR 20H.1

可是小弟看到師傅遺留下來的程式卻有

CLK1: REG 40H.0
CLK2: REG 40H.1
CLK3: REG 40H.2

.....!?@_@!?不是只有 20H~2FFH可以單獨設 20H.0;20H.1....2FH.7嗎!?@_@!?

alex1973 2006-07-24 09:26 PM

引用:
作者蒼藍的月光
大大感謝您的賜教,老實說小弟有在翻書了,可是有些問題就是搞不懂

如:

1.R0和R1可間接定址,那小弟如果想要讓R0和R1不間接定址,而直接使用常數
 
 值,可以嗎!?@_@!?

例如: R2,#30H==>這個是常數值
R0,#30H ==>這個是記憶體位址內容值

2.書本上說 20H~2FH可以位元定址

例: SETG 20H.2
CLR 20H.1

可是小弟看到師傅遺留下來的程式卻有

CLK1: REG 40H.0
CLK2: REG 40H.1
CLK3: REG 40H.2

.....!?@_@!?不是只有 20H~2FFH可以單獨設 20H.0;20H.1....2FH.7嗎!?@_@!?


1. 請參考 MOV 指令的說明, 這部份你的 8051 CPU 手策會有, 不然 Keil C/Assembly compiler 的 HLP 子目錄下頭有個 pdf 檔 (好像叫做 asm.pdf, 有點忘了) 也有列出所有共通的 8051 指令可以用的參數 (後面可以接的 direct data, Rn 或者立即值). 像這種類似問題, 一翻就都知道囉.

2. 哪些範圍的 direct data/SFR 可以用 bit 指令 (setc, clr) 存取, 請參考你 CPU 的手冊. Bit addressable 的 bit ram, 基本上是所有 8 的倍數 index 的 direct data 都可以這樣存取的.

蒼藍的月光 2006-07-25 01:52 AM

引用:
作者alex1973
1. 請參考 MOV 指令的說明, 這部份你的 8051 CPU 手策會有, 不然 Keil C/Assembly compiler 的 HLP 子目錄下頭有個 pdf 檔 (好像叫做 asm.pdf, 有點忘了) 也有列出所有共通的 8051 指令可以用的參數 (後面可以接的 direct data, Rn 或者立即值). 像這種類似問題, 一翻就都知道囉.

2. 哪些範圍的 direct data/SFR 可以用 bit 指令 (setc, clr) 存取, 請參考你 CPU 的手冊. Bit addressable 的 bit ram, 基本上是所有 8 的倍數 index 的 direct data 都可以這樣存取的.


alex1973大大您好,感謝您熱誠的抽空回答小弟問題

小弟不勝感激,小弟手邊其實有蠻多本8051書藉的

像是 1. MOV 指令小弟也翻閱很多書

但書都只是跟你說 R0和R1可以間接定址

那如果今天小弟使用 R0 和 R1 不想讓它們使用間

接定址而使用常數值呢!?

就像是 R2,#30H這樣的用法;但書本並沒有這方面的解答

它就只有給你R0和R1可以間接定址這樣的規則而已

2.Bit addressable 的 bit ram, 基本上是所有 8 的倍數 index 的 direct data 都可以這樣存取的==>大大不好意思,這段話可以說的白話一點嗎!?@_@!?謝謝甘溫唷!n_n!

3.小弟在某一本書終於找到了特殊功能暫存器的位址是80H~FFH,看起來好像是和內部RAM的間接存取區之位址80H~FFH相重疊,其實它們是兩個獨立的區域;差別在於:
(1)內部RAM的位址80H~FFH只能用間接定址法存取資料
(2)特殊功能暫存器的位址80H~FFH只能用直接定址法存取資料

小弟想請問一下既然是兩個獨立的區塊,內部RAM的位址80H~FFH
一定是存在內部RAM對不對!?那特殊功能暫存器的位址是80H~FFH
是存放在哪兒!?@_@!?

蒼藍的月光 2006-07-26 10:16 AM

抱歉小弟,想請教一下 L7805 CV 和L7812 CV使用上的一些問題

1.小弟在聯特力有下載到它的資料手冊,可是小弟之前是參考全華出的

電源穩壓 IC 應用手冊這本書,對應IC資料手冊的一些參數都看不懂

,有大大可以指點一下嗎!?


2.在聯特力有下載的 IC 資料手冊裡 7805第一隻腳要先串個5.1歐姆的電然後再並個470uF 接到 120 Hz 這是什麼作用呀!?


還希望先進前輩大大不吝賜教跟指導,謝謝

finkel 2006-07-27 06:26 AM

引用:
作者蒼藍的月光
感謝yhboy 和 finkel 兩位大大的解惑,小弟了解了

想再請問一下

CLK1: REG 40H.0
CLK2: REG 40H.1
CLK3: REG 40H.2
CLK4: REG 40H.3
CLK5: REG 40H.4
CLK6: REG 40H.5
CLK7: REG 40H.6
CLK8: REG 40H.7

CLR 40H.7
MOV A,#40H
MOV P0,A

那這樣 A 的值還會是 40H(即 0100 0000)嗎!?

另外 finkel 大大您是學 keil C 的嗎!?


我不知道keil C是什麼耶..我是因為剛好學校剛修完8051
而且我花滿多時間學的,所以學得不差
但也只是懂得基本的架構和用組語寫程式而已
老師是用講義教的,不過是英文的,我猜是copy某本書的吧
老師有放在網頁上,有興趣可以參考看看
http://staffweb.ncnu.edu.tw/sheu/download.html


所有的時間均為GMT +8。 現在的時間是02:23 PM.

vBulletin Version 3.0.1
powered_by_vbulletin 2025。