[問題] 求高手解說單晶片(8051)程式碼

看板ASM (組合語言)作者 (寸土寸金台北市信義區)時間15年前 (2009/08/31 04:48), 編輯推噓1(106)
留言7則, 2人參與, 最新討論串1/1
是這樣的,最近我在做關於紅綠燈小綠人矩陣圖型的報告 而我朋友剛好有用 mikroC 這套軟體寫出簡單的單晶片(8051)小綠人動態掃描的程式。 可是我看不太懂,希望有高手可以幫忙解說程式碼。 ------------------------------------------------------------------------------ void main() { int key,count; char s[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //borad all lack oil const char l[4][8]= { { 0b10011111, 0b10011111, 0b11001111, 0b11000111, 0b10000111, 0b11100111, 0b11010111, 0b11001011 } , { 0b10011111, 0b10011111, 0b11000111, 0b11001011, 0b10000011, 0b11000111, 0b11011011, 0b10011001 } , { 0b10011111, 0b10011111, 0b11000011, 0b11001101, 0b00100111, 0b11000111, 0b10111011, 0b00111001 } , { 0b10011111, 0b10011111, 0b11000111, 0b11001011, 0b10000011, 0b11000111, 0b11011011, 0b10011001 } }; do { for(key=0;key<20;key++) { for(count=0;count<8;count++) { p1=s[count]; //掃描各排 p2=l[key/5][count]; //送各排字型 delay_ms(2); } delay_ms(30); } } while(1); } ------------------------------------------------------------------------------ 以下是用 Proteus海神 模擬的結果(圖): http://tinyurl.com/nhoub2 ------------------------------------------------------------------------------ PS.另外可否請板友將寫此程式碼的過程轉換成"流程圖"(可用箭頭→述說就好) EX:開始→設定陣列→....→結束 讓我更好理解來製作報告 麻煩您 -- 老化四徵兆 zzzz * \○/ (○ └□ " ○□═ □> √√ ╦══╦ |\ 坐著一直睡 躺著睡不著 舊的一直提 說過就忘記 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.33.181.46 ※ 編輯: d062637776 來自: 114.33.181.46 (08/31 04:51)

08/31 06:49, , 1F
你這個實際跑起來可能會覺得畫面會閃
08/31 06:49, 1F

08/31 06:51, , 2F
它的做法很簡單,就是每一個film約46ms(其中30ms是空白)
08/31 06:51, 2F

08/31 06:51, , 3F
然後每2ms跑一個掃描線,每個畫面由八條掃描線組合而成
08/31 06:51, 3F

08/31 06:52, , 4F
全部的動作只有四張圖,就這樣
08/31 06:52, 4F

08/31 06:55, , 5F
最後,根據我對8051的了解,這個線路實際上應該是推不動
08/31 06:55, 5F

08/31 06:55, , 6F
也就是應該看不到模擬的畫面(led的亮度會很弱或是沒有)
08/31 06:55, 6F
有用海神模擬過了http://tinyurl.com/nhoub2 ※ 編輯: d062637776 來自: 114.33.181.46 (08/31 21:43)

08/31 21:56, , 7F
模擬也是我朋友拉的 程式是專為模擬而寫
08/31 21:56, 7F
文章代碼(AID): #1AckM9uF (ASM)
文章代碼(AID): #1AckM9uF (ASM)