Hctl-2020晶片測試 |
答題得分者是:addn
|
boomexist
一般會員 發表:1 回覆:6 積分:1 註冊:2007-12-06 發送簡訊給我 |
|
addn
高階會員 發表:64 回覆:221 積分:202 註冊:2005-03-21 發送簡訊給我 |
|
boomexist
一般會員 發表:1 回覆:6 積分:1 註冊:2007-12-06 發送簡訊給我 |
|
addn
高階會員 發表:64 回覆:221 積分:202 註冊:2005-03-21 發送簡訊給我 |
|
boomexist
一般會員 發表:1 回覆:6 積分:1 註冊:2007-12-06 發送簡訊給我 |
|
addn
高階會員 發表:64 回覆:221 積分:202 註冊:2005-03-21 發送簡訊給我 |
您好
1.我說的石英震盪器是四支腳的那種,不是石英晶體請參考 http://delphi.ktop.com.tw/board.php?cid=173&fid=1167&tid=67466 2.OE,SEL,CLK的關西就如表figure10所示,inhibit signal為1時表示鎖住latch 為0時則解除latch,分析一下figure11那個圖就可了解其動作原理 讀值時需完整跑完step1->step2->step3程序 figure10表裡說的RESET是將figure11輸出清為0的意思,不是計數器的RESET 3.可以用示波器來觀測,讓馬達跑你系統的最快速度,然後觀測encoder的CHA or CHB 還是建議將DATASHEET看懂先
編輯記錄
addn 重新編輯於 2007-12-07 21:39:36, 註解 無‧
|
boomexist
一般會員 發表:1 回覆:6 積分:1 註冊:2007-12-06 發送簡訊給我 |
你好!!addn
我們有用KeilC51寫程式了!!但感覺還是怪怪的不知哪有錯您可以幫我們看一下哪有錯嗎 我們用2020D0~D7接至8051P2,由P0顯示,2020 sel腳位接至8051 P1,2020 oe腳位接至8051 P2,2020 clk街一顆2隻腳石英震盪器(我們目前只有兩隻腳的,clk接石英一隻腳再串接30P電容後接地,石英另一隻腳也串接30P電容後接地)因為目前不知是電路還是程式方面哪個有問題!!! #include #include #define baudrate 4800 sbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2=P1^2; sbit P1_3=P1^3; sbit P1_4=P1^4; sbit P1_5=P1^5; sbit P1_6=P1^6; sbit P1_7=P1^7; sbit P2_0=P2^0; sbit P2_1=P2^1; sbit P2_2=P2^2; sbit P2_3=P2^3; sbit P2_4=P2^4; sbit P2_5=P2^5; sbit P2_6=P2^6; sbit P2_7=P2^7; sbit P0_0=P0^0; sbit P0_1=P0^1; sbit P0_2=P0^2; sbit P0_3=P0^3; sbit P0_4=P0^4; sbit P0_5=P0^5; sbit P0_6=P0^6; sbit P0_7=P0^7; int i; int ED[20]; void com_initalize(void) { TMOD=0x21; TH1=256-(28800/(baudrate)); TR1=1; SCON=0x52; } void IntTimer(void) { TL0=(65536-100)%6; TH0=(65536-100)/256; TR0=1; } void main(void) { P1_0=1; //SEL P1_1=1; //OE P1_2=1; //RESET P1_2=0; P1_2=1; P1_3=1; //test com_initalize(); IntTimer(); IE=0xA2; while(1) { //P1_3=0; P1_1=0; //當oe等於0存值 ED[0]=P2_0;//我把2022的D0~D7先接至8051的P2 ED[1]=P2_1; ED[2]=P2_2; ED[3]=P2_3; ED[4]=P2_4; ED[5]=P2_5; ED[6]=P2_6; ED[7]=P2_7; P0_0=ED[0];//之後用8051的P0先顯示低八位元 P0_1=ED[1]; P0_2=ED[2]; P0_3=ED[3]; P0_4=ED[4]; P0_5=ED[5]; P0_6=ED[6]; P0_7=ED[7]; P1_0=0; //當P1為0時 ED[8]=P2_0; //我把2022的D0~D7先接至8051的P2 ED[9]=P2_1; ED[10]=P2_2; ED[11]=P2_3; ED[12]=P2_4; ED[13]=P2_5; ED[14]=P2_6; ED[15]=P2_7; P0_0=ED[8]; //之後用8051的P0先顯示高八位元 P0_1=ED[9]; P0_2=ED[10]; P0_3=ED[11]; P0_4=ED[12]; P0_5=ED[13]; P0_6=ED[14]; P0_7=ED[15]; P1_1=1; //P1_3=0; for (i=0;i<=10000;i ) {} } } |
addn
高階會員 發表:64 回覆:221 積分:202 註冊:2005-03-21 發送簡訊給我 |
|
boomexist
一般會員 發表:1 回覆:6 積分:1 註冊:2007-12-06 發送簡訊給我 |
|
addn
高階會員 發表:64 回覆:221 積分:202 註冊:2005-03-21 發送簡訊給我 |
|
boomexist
一般會員 發表:1 回覆:6 積分:1 註冊:2007-12-06 發送簡訊給我 |
|
addn
高階會員 發表:64 回覆:221 積分:202 註冊:2005-03-21 發送簡訊給我 |
|
boomexist
一般會員 發表:1 回覆:6 積分:1 註冊:2007-12-06 發送簡訊給我 |
你好addn
由於我們買完石英震盪器才看到您的回覆所以我們買到的是20MHZ(不知道會不會跟您說的14MHZ有差)很謝謝你,現在我們可以讓燈閃爍了 但只用低八位元顯示而若用高八位元顯示以下是我寫的程式您可以幫我們看一下這樣寫OK嗎? /*之前的是只用低八位元,而在 /*到*/之間是高八位元請問這樣寫對嗎 還有抱歉我還是有點不懂您說的RESET是什麼意思,以及DATASHEET上說的RESET是說HCTL2020內部邏輯會RESET還是我們要用HCTL20202的RESET腳位給他在那個時各輸入RESET呢? #include #include #define baudrate 4800 sbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2=P1^2; sbit P1_3=P1^3; sbit P1_4=P1^4; sbit P1_5=P1^5; sbit P1_6=P1^6; sbit P1_7=P1^7; sbit P2_0=P2^0; sbit P2_1=P2^1; sbit P2_2=P2^2; sbit P2_3=P2^3; sbit P2_4=P2^4; sbit P2_5=P2^5; sbit P2_6=P2^6; sbit P2_7=P2^7; sbit P0_0=P0^0; sbit P0_1=P0^1; sbit P0_2=P0^2; sbit P0_3=P0^3; sbit P0_4=P0^4; sbit P0_5=P0^5; sbit P0_6=P0^6; sbit P0_7=P0^7; int i; int ED[20]; void com_initalize(void) { TMOD=0x21; TH1=256-(28800/(baudrate)); TR1=1; SCON=0x52; } void IntTimer(void) { TL0=(65536-100)%6; TH0=(65536-100)/256; TR0=1; } void main(void) { P1_0=1; //SEL P1_1=1; //OE P1_2=1; //RES P1_2=0; P1_2=1; P1_3=1; //test com_initalize(); IntTimer(); IE=0xA2; while(1) { P1_3=0; for (i=0;i<=10000;i ) {} P1_1=0; //當oe等於0存值 ED[0]=P2_0;//我把2020的D0~D7先接至8051的P2 ED[1]=P2_1; ED[2]=P2_2; ED[3]=P2_3; ED[4]=P2_4; ED[5]=P2_5; ED[6]=P2_6; ED[7]=P2_7; P0_0=ED[0];//之後用8051的P0先顯示低八位元 P0_1=ED[1]; P0_2=ED[2]; P0_3=ED[3]; P0_4=ED[4]; P0_5=ED[5]; P0_6=ED[6]; P0_7=ED[7]; /*P1_0=0; //當P1為0時 ED[8]=P2_0; //我把2020的D0~D7先接至8051的P2 ED[9]=P2_1; ED[10]=P2_2; ED[11]=P2_3; ED[12]=P2_4; ED[13]=P2_5; ED[14]=P2_6; ED[15]=P2_7; P0_0=ED[8]; //之後用8051的P0先顯示高八位元 P0_1=ED[9]; P0_2=ED[10]; P0_3=ED[11]; P0_4=ED[12]; P0_5=ED[13]; P0_6=ED[14]; P0_7=ED[15]; P1_2=0; P1_2=1; P1_0=1;*/ P1_1=1; P1_3=1; for (i=0;i<=10000;i ) {} } } |
addn
高階會員 發表:64 回覆:221 積分:202 註冊:2005-03-21 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |