PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

回應
 
主題工具
print810
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的資料
     
      
舊 2006-08-23, 05:54 PM #1
回應時引用此文章
print810離線中  
abc630
Power Member
 

加入日期: Feb 2003
文章: 601
引用:
作者print810
需要請求大家的協助
想了好久 還是不會

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

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


有點忘了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一樣是肉腳....
 
舊 2006-08-23, 06:45 PM #2
回應時引用此文章
abc630離線中  
print810
New Member
 

加入日期: Sep 2003
文章: 2
看不懂
我不知道一筆16bit的資料
要怎麼配合ck送到一隻腳位上
舊 2006-08-23, 08:56 PM #3
回應時引用此文章
print810離線中  
Wusir
*停權中*
 

加入日期: Dec 2000
您的住址: 崑崙山旁
文章: 95
引用:
作者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;
}
舊 2006-08-26, 02:53 AM #4
回應時引用此文章
Wusir離線中  


回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



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


vBulletin Version 3.0.1
powered_by_vbulletin 2026。