與程式設計的緣起

筆者是中興大學電機工程系第一屆的學生,陳育書。 大一剛入學的時候(1992),中興電機還沒有自己的系館。 所以我們在大一的時候是借環工系的地方當老師辦公室和系的實驗室。

大一上,我們連自己系上的電腦都還沒有,只能到計算機中心打電腦。 那時候鄧洪聲老師跟我們上 FORTRAN。 我的第一個作業是抄一支小程式到計算機中心的迷你電腦上面跑。 看著那支程式,不過才十五行而已的樣子,我卻完全不懂為什麼這十五行的程式是怎麼跑起來的,所以只好抄同學的作業。而那支程式是我唯一抄的程式,後來的程式就都是我自己寫的了。 走過大一上,課業應付的馬馬虎虎,程式語言的成績就比較可以看了。

大一下,我們修了C語言,全班都修C語言。剛開始的幾個小作業都還好,應付得很從容。 學期中,老師給了我們一個作業,那個作業讓我們全班都倒光了,是一個 LINK LIST 的程式作業。 記得哀鴻遍野,大家都寫不出來,能寫得出來的沒有幾個人,當然不才小弟我就是其中一人。 我們把作業拿給老師,老師後來說,有人寫程式寫的像麵線糊一樣,竟然還能跑。而那個人,就是偶啦,哈哈哈。 指標連來連去,頭連尾、尾連頭,連來連去當然像是麵線糊一樣囉。 不過在寫程式的過程中,我還滿樂在其中的。 寫出興趣出來了後,我就連暑假,在上成功嶺的日子來沒有到之前,都在家中模仿PE2寫文書編輯器程式。 後來,我又寫了一個小小的繪圖程式,可以用來畫簡單的圖形,之後再用印表機印出來,覺得還蠻好玩的。

大二上,我就學 C++。大二下,我就修資料結構。大三以後,我就沒有再寫 C 程式語言了。 本來想要去學 VISUAL C++ 或 BORLAND C++,不過因為需要的 RAM 太貴了,一MB 一千元,實在買不下手而作罷。 不然,我已經跟歐陽彥杰老師借到 BORLAND C++ 編譯器了。

大四的時候,我寫8051的程式。那時候不懂很多應該要會的程式技巧,不然就可以多做點東西了。 覺得大學的時候,大家對理論的東西,只要讀書就可以拿成績的東西比較重視。 等到後來發現怎麼好像沒有學到東西的樣子,才又一股腦的想念研究所,補自己以前所沒有學到的東西 。所以務實一點還是比較好哦!

寫程式,對我來說,像是作家創作屬於自己的文學作品一樣,藉著編寫程式碼的過程把心裡面想要說的話說出來。 也像是畫家作畫,書法家揮毫,鋼琴家在黑白之間奔馳一樣,順著裡面的感覺,讓它把自己湧出,就這樣子,一支程式就完成了。 看著這它奔跑在板子上,我覺得那就像是我的小孩一樣,是由我的雙手所創造出來的東西,我希望把它寫得更好,養得更大...。 軟體的世界是個無限寬廣的領域,我想照著自己的感覺和想法,一步一步的向前行,繼續迎向更高的挑戰。




與微處理器的緣起

大二的時候,中興大學電機系剛成立滿一年,沒有研究生可以帶我們,老師只好親自下來帶我們做實驗。 那時候控制組的蔡清池老師帶我們幾個人作微處理機實驗。 我們在寒假的時候學微處理機,我從那時候開始摸8051微控制器。 先做步進馬達的控制,用簡單的材料,焊了一塊電路板,做起單極性步進馬達的控制。 那塊電路板做得很粗糙,焊接技術真的很差,但我做得很用心。 看著步進馬達一步一步地動起來的時候,我感覺好高興。 然後再焊上按鍵,輸入正轉、反轉及轉速控制訊號,就能夠隨心所欲的控制馬達的運作。

大三上,微處理機時驗課的時候,我就擔任起微處理機的助教了。 那時候陶金旭老師是我們的實驗課老師。 學期末,我把整學期上課的內容編篆起來,做為微處理機實驗課教材。

大四的時候,我到控制實驗室做專題。 那時候,蔡老師從德國買了一台無人搬運車,並且要在那上面架一個無人搬運車的開發環境。 那需要製作伺服馬達的解碼器、D2A converter、超音波防撞感測器等電路,就著手用8051設計相關的控制電路。 因為焊接技術太差,在某次運作的過程中,板子的線路起火了,結果害這台搬運車送修兩個月,讓我覺得很歉疚。 也因為這樣的經歷,我對手焊電路板的製作變得很龜毛,每條線都要拉得很正才行。 那時候我都是用組合語言寫8051的程式,不懂得該怎麼使用C語言寫8051的程式。 完成8051的工作後,我又去玩80196KC、80196MC 的16BIT MCU。 在大學畢業之前,我買了8086,8253,8279,8255,sram,rom,想用這些晶片焊一塊8086的pc版,並希望有一天可以在那上面跑我自己寫的 OS。 我不會 pcb layout,只能靠著一條線一條線慢慢的焊,開始用線疊城牆,把線焊完。 但是太多線要焊了,在大學畢業之前,我都還沒有焊完。 直到現在,它還是躺在我的私人博物館中,當千年的木乃伊,紀錄著我在電路設計上的用心。

大四做的板子 大四做的板子

再續前緣

上了研究所後,我就很少碰8051了,偶而幫別人做一點小電路,不過好像只有兩次的樣子。 退伍找到工作後,才又開始寫8051的程式,而且一寫就是五年。 剛開始時,我還是用大學時的那種一條鞭法寫程式。先是交接之前的人寫的程式,把它讀懂後,再重寫成自己希望的樣子,並且把效能往上提升。 不過,這時的我還是個只會用組合語言寫8051程式的人,還不會用C語言寫8051的程式。 就這樣子,我做了自己的第一個產品,Compact flash card。 那年年底(2001),公司來了一位韌體部門經理,他是我的救星,哈哈。 他教我們如何用c語言寫8051的程式,coding style,state machine,偵錯方式等等。 此時,我發揮了自己的吸星大法,一直不斷的吸收他的功力,轉化為自己的功力,並且自己所負責的工作上發揮出來。 養成了同時使用組合語言與c語言的能力和習慣。組合語言在搶timing的時候很好用,c語言在寫演算法的時候很好用,兩者如果能夠用得好,就可讓產品的效能跑得更好、更快。


8051單版 8051單版

我的8051程式設計

因為寫8051已經好幾年了,在8051的程式設計上也有了一些心得,我想照著自己的方式去講8051的程式設計。希望藉著這個網頁,幫助大家了解一些程式設計的觀念和技巧。


8051單版 8051單版