PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   救救我的8051吧 用KEIL C寫 (https://www.pcdvd.com.tw/showthread.php?t=647143)

print810 2006-08-23 05:54 PM

救救我的8051吧 用KEIL C寫
 
需要請求大家的協助
想了好久 還是不會

電路動作:
當5pin開關全部off時
8051的動作 P0.5為負緣觸發 P0.6一直送ck

當任何依各開關打開 則會以陣列或是查表的方式找到相對映的16bit的data送到P0.7
送的同時P0.5為負緣觸發 P0.6一直送ck
依各CK 就送1BIT的資料

abc630 2006-08-23 06:45 PM

引用:
作者print810
需要請求大家的協助
想了好久 還是不會

電路動作:
當5pin開關全部off時
8051的動作 P0.5為負緣觸發 P0.6一直送ck

當任何依各開關打開 則會以陣列或是查表的方式找到相對映的16bit的data送到P0.7
送的同時P0.5為負緣觸發 P0.6一直送ck
依各CK 就送1BIT的資料


有點忘了51c怎寫了... :ase

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啦... :laugh:
verilog一樣是肉腳.... :laugh:

print810 2006-08-23 08:56 PM

看不懂
我不知道一筆16bit的資料
要怎麼配合ck送到一隻腳位上

Wusir 2006-08-26 02:53 AM

引用:
作者print810
需要請求大家的協助
想了好久 還是不會

電路動作:
當5pin開關全部off時
8051的動作 P0.5為負緣觸發 P0.6一直送ck

當任何依各開關打開 則會以陣列或是查表的方式找到相對映的16bit的data送到P0.7
送的同時P0.5為負緣觸發 P0.6一直送ck
依各CK 就送1BIT的資料

樓主寫的程式應該是做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;
}


所有的時間均為GMT +8。 現在的時間是06:32 AM.

vBulletin Version 3.0.1
powered_by_vbulletin 2026。