以下是我做的一個由計算機向一外置的存儲寄存器傳輸數據的操作實驗,以讓我獲得對計算機傳輸數據過程和其內在的實質的理解,可以說,這個實驗的內涵就是所有計算機傳輸數據的根本原理。該實驗是由以Arduino單板計算機向安置在該計算機以外的一個數據寄存器傳輸數據。向寄存器的傳輸是串行口傳輸,而寄存器收取數據後,又以並行口向外轉輸出數據,接受這些由寄存器傳來的數據的終端是8個發光二極管,每個發光二極管鏈接8位並行出口中的一個位。為什麼是數字8呢?因為這個傳輸是以字節進行傳輸,8個數位為一個字節。而實現這個過程的根本靈魂就是操作指令,即,程序。看下面相關的操作程序和解讀。見圖。 
以上程序先指定出計算機的時鐘、數據輸出口,並指定一個閘門輸出口(latch),和定義一個數位數為8位的二進制數字變量light。這個“閘門口”是我對這個輸出口latch的表達稱謂。 程序指定計算機的這三個口都是輸出口。然後進入無限循環程序。在這個無限循環程序中,light先被置零,然後執行函數程序renewsending()。這個函數程序先對那個閘門口進行“關閘”,然後,計算機內置的函數程序shiftOut開始啟動,向那寄存器輸出要傳輸的數據和時鐘脈衝,數據脈衝與時鐘脈衝信號在寄存器內進行邏輯“與”運算,所得出的結果就是要傳出的數據。當這個過程完成,閘門口開啟,所傳數據被複製到寄存器中的存儲寄存器中,並向作為這個存儲器的終端接受器的發光二極管傳輸數字信號電壓。當這個要傳輸的數據為零時,寄存器向二極管輸出的電壓為低電平,即為零,所以二極管不發光。這次的函數程序renewsending()指令完成後,再回到循環程序中,執行循環程序中的下一個指令,即,開啟計算機內置的bitSet程序。這個程序是對那個8位數據light進行寫入,從最低位開始,共寫八次,每次都向前進一位,並都是寫入二進制的1,而且,每次寫入後,都要再執行函數程序renewsending(),使得所寫入的數據都傳至寄存器中。 當1被寫入寄存器中,即,寄存器相應的並行連接口被賦予1,即,高電平時,發光二極管便發光,隨着數據1不斷依次地被寫入各個位數上,那些發光二極管也因此依次開始發光。當8次數傳輸完畢後,即,這8位二進制數是11111111,8盞發光二極管燈全亮,程序里的那循環程序又開始新一輪的循環,從一開始的清零運動開始,所有發光二極管都滅燈,一切又從頭開始,以此無限地進行往復。
這8位二進制數11111111等於十進制數字255。
我認為,這個程序的實質可以解釋PC中主板上的內存條的原理,和顯示卡中的顯示內存的工作原理。

|