8051 的外部 port

2008一整年因職務的關係沒啥玩到 8051 , 現在接到了一個新 project , 必須要造波型出來做治具測試 , Freq. 並不高(120Hz) , 所以我就想說利用 8051 的 GPIO 來做吧 !

翻出之前的 AD-Board … 現在的 Scaler 多內建 MCU 了 , 要找到還有 MCU 的 AD-Board 還真的要用\”翻\” … 還好 , 去年因為需要讓 EMS 檢 panel , 我有做了幾片治具 AD-Board … 這是有 8051 的版本 .

check 了一下 circuit , umm ` … 以跳線的方式推波型出來 , 大約有 2 個現成的 , 但我總共需要 4 個… 所以有 2 個需要以 floating 的方式跳 … 這都是小事 ! …. 想說 , 別拿 MNT 的 code base 來做 , 那很笨 ~…. 只是要造波型 , 竟然用了旁大的 code base … 所以打算重寫 ! …

不過採用的 port 都是 external 的 port , 並非標準 8051 的 address . ㄜ ~.. 那不就不能用手上的參考書上面的語法來做 register 的 maintain ! 參考 Keil C 的手冊(呼 ~.. 從來沒翻過哩! ) , 原來外部 port 的做法是以 xdata 來宣告一變數 , 並在後面加上 _at_ address .
ex : unsigned char xdata worrenTest = 0 _at_ 0x0E00 ;

umm … 問題來了 … 這麼做也沒有 work 呀 ! … 參照了原本的 code base , 疑~.. 做法跟我寫的是一樣的 ! … ha `.. 找來 jojo 幫我看看 ~… 我們看了看都沒啥問題…. 但 ~… 因為我只有用到 2 個 port , 所以我也只對這 2 個 port 做宣告 & init. …. 而原本的 code base 當然是所有的 port 都用了 , 也都 init 過 ! … ha `… jojo 建議我全部的 port 都 init 看看 ~…. 踹了後 ! .. 果然 work 啦~… ya !…. haha …. 事實上 , 這種 issue 之前我就有碰過了 , … 是發生在換了較便宜的相容 MCU , 但 code base 卻沒有 review ~… 之前的 MCU 某個 pin 就算是不 init. , default 就是 logical low . 但新的 MCU 卻不一定是 low or high …. @@\” … review 了半天才發現是這種烏龍 ~….

果然 , 人不能太懶 !

後續還發生了效能不彰的 issue … 結果竟然是因為 compile 的參數設錯了 ! …. …. 切 ~….為啥 Myson 的 MCU 要設成 Winbond 的參數呢 ? … never mind ! … 能玩就好了 !

Share your vote!


Do you like this post?
  • Fascinated
  • Happy
  • Sad
  • Angry
  • Bored
  • Afraid

Leave a Reply

Your email address will not be published. Required fields are marked *


Please help to input verification code