![]() |
||
|
New Member
加入日期: Sep 2003
文章: 2
|
救救我的8051吧 用KEIL C寫
需要請求大家的協助
想了好久 還是不會 電路動作: 當5pin開關全部off時 8051的動作 P0.5為負緣觸發 P0.6一直送ck 當任何依各開關打開 則會以陣列或是查表的方式找到相對映的16bit的data送到P0.7 送的同時P0.5為負緣觸發 P0.6一直送ck 依各CK 就送1BIT的資料 |
|||||||
|
|
|
Power Member
![]() ![]() 加入日期: Feb 2003
文章: 601
|
引用:
有點忘了51c怎寫了... void data_tx(char *ptr) { while(*ptr !='\0') { P0.7=*ptr; Delay(?); ++ptr; } } void main(void) ( case(sw) 0: 1: data_tx(?); 2: 3: 4: 5: } 不懂你的P0.5負緣觸發是什麼意思....是觸發人還是被觸發? P0.6一直送clk可以考慮用計數中斷去寫.... 我51c還沒寫熟就跳verilog啦... verilog一樣是肉腳.... ![]()
__________________
改8rda+南北橋散熱&顯示卡散熱&北橋電壓 [心得]改善第四台畫質概念 [集中]SD卡讀/寫速度測試(請大家幫忙補完) 何謂變頻?簡單說明! KYOSHO MINI-Z 宜蘭區徵求同好㍿ |
|||
|
|
|
New Member
加入日期: Sep 2003
文章: 2
|
看不懂
我不知道一筆16bit的資料 要怎麼配合ck送到一隻腳位上 |
|
|
|
*停權中*
加入日期: Dec 2000 您的住址: 崑崙山旁
文章: 95
|
引用:
樓主寫的程式應該是做SPI串列傳輸的動作吧! 其實SPI還算簡單,只有4支腳,就你腳位的定義,P0.5是chip select,P0.6是Clock,P0.7是 Data Out,另外還有一支Data In你沒定義,其中chip select是Low動作,沒有要傳資料時是 設為High,當要傳送資料時才設為Low,所以一開始要先設為Low,然後再經由Clock觸發將 Data Out腳資料送出,下面的程式是傳8bit資料,傳送資料的關鍵就在Clock的邊緣觸發, 由下面程式來看是當Clock在0變1的瞬間(正緣觸發)將一個bit送出,那做八次就可送出8bit, 依此類推做16次就是16bit,另外要注意是資料傳送順序是由高位元開始傳,如果有問題可以 去找有內建SPI的MCU的datasheet,應該會有詳細的解說和時序圖. void DataOut(BYTE bByte) { BYTE i; for(i=0;i<8;i++) { P0.6=0; P0.7=bByte&0x80; bByte<<=1; P0.6=1; } P0.7=1; } |
|
|
|