hctl-2020的測試使用 |
答題得分者是:addn
|
love73522
一般會員 ![]() ![]() 發表:1 回覆:15 積分:3 註冊:2006-12-14 發送簡訊給我 |
|
㊣
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
|
love73522
一般會員 ![]() ![]() 發表:1 回覆:15 積分:3 註冊:2006-12-14 發送簡訊給我 |
|
addn
高階會員 ![]() ![]() ![]() ![]() 發表:64 回覆:221 積分:202 註冊:2005-03-21 發送簡訊給我 |
|
㊣
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
|
love73522
一般會員 ![]() ![]() 發表:1 回覆:15 積分:3 註冊:2006-12-14 發送簡訊給我 |
|
doubletime
一般會員 ![]() ![]() 發表:4 回覆:17 積分:9 註冊:2004-11-27 發送簡訊給我 |
------
http://tw.myblog.yahoo.com/sn903209ss 您的指教是我成長的動力! |
love73522
一般會員 ![]() ![]() 發表:1 回覆:15 積分:3 註冊:2006-12-14 發送簡訊給我 |
|
doubletime
一般會員 ![]() ![]() 發表:4 回覆:17 積分:9 註冊:2004-11-27 發送簡訊給我 |
|
addn
高階會員 ![]() ![]() ![]() ![]() 發表:64 回覆:221 積分:202 註冊:2005-03-21 發送簡訊給我 |
|
love73522
一般會員 ![]() ![]() 發表:1 回覆:15 積分:3 註冊:2006-12-14 發送簡訊給我 |
|
addn
高階會員 ![]() ![]() ![]() ![]() 發表:64 回覆:221 積分:202 註冊:2005-03-21 發送簡訊給我 |
|
love73522
一般會員 ![]() ![]() 發表:1 回覆:15 積分:3 註冊:2006-12-14 發送簡訊給我 |
|
addn
高階會員 ![]() ![]() ![]() ![]() 發表:64 回覆:221 積分:202 註冊:2005-03-21 發送簡訊給我 |
您好
那回到用手動的方式來測試了 SEL1,SEL2,/OE接指撥開關(要經除彈跳處理),平時要維持HI /RST接指撥開關,power on後先reset一下,平時為HI D0~D7最好接一栓鎖器在接LED,直接接LED應該也可以,不過我沒試過 測試流程 POWER ON->RESET->轉動光盤產生AB相訊號-> 用指撥開關產生讀取動作(觀察LED值有無產生相對的增減動作) 不過這種手動不好因為讀取程序有好幾個動作,用指撥開關來產生時序 往往會忘了現在是做到哪一個動作了,實際做過你就知道了 所以才會建議用單晶片來做, 大概就這樣你參考看看 |
love73522
一般會員 ![]() ![]() 發表:1 回覆:15 積分:3 註冊:2006-12-14 發送簡訊給我 |
|
doubletime
一般會員 ![]() ![]() 發表:4 回覆:17 積分:9 註冊:2004-11-27 發送簡訊給我 |
|
addn
高階會員 ![]() ![]() ![]() ![]() 發表:64 回覆:221 積分:202 註冊:2005-03-21 發送簡訊給我 |
您好
請參考下列程式 副程式讀取2022計數值,然後儲存於記憶體中 你的測試主程式要在適當的時候去CALL副程式 然後把記憶體的內容顯示出來就好了 顯示的方式有LED,LCD,或用UART送出去再由電腦接手顯示...... 方法很多 ---------------------------------------------------------------------------- 2022 PIN <->51 PIN SEL1 <-> P3.5 SEL2 <-> P3.6 OE <-> P3.7 D0~D7<-> P0~P7 -------------------------------------------------------------------------- 51 CODE Buf_MSB EQU 20H Buf_2ND EQU 21H Buf_3RD EQU 22H Buf_LSB EQU 23H ;------------------------- SEL1 REG P3.5 SEL2 REG P3.6 OE REG P3.7 ;------------------------- . . . ORG 000H . . CLR SEL1 SETB SEL2 SETB OE . . . ;---------------------------------- ;讀取計數值副程式 ;將32Bit計數值儲存於資料記憶體位置 ;20H,21H,22H,23H ;---------------------------------- Read_Count: CLR OE MOV Buf_MSB,P0 SETB SEL1 SETB SEL2 MOV Buf_2ND,P0 CLR SEL1 CLR SEL2 MOV Buf_3RD,P0 SETB SEL1 CLR SEL2 MOV Buf_LSB,P0 SETB OE CLR SEL1 SETB SEL2 RET |
love73522
一般會員 ![]() ![]() 發表:1 回覆:15 積分:3 註冊:2006-12-14 發送簡訊給我 |
|
addn
高階會員 ![]() ![]() ![]() ![]() 發表:64 回覆:221 積分:202 註冊:2005-03-21 發送簡訊給我 |
您好
SEL1,SEL2,OE用sbit宣告 Buf_MSB,Buf_2ND,Buf_3RD,Buf_LSB用unsigned char宣告 main() . . . SEL1=0; SEL2=1; OE=1; . . . void Read_Count(void) { OE=0; Buf_MSB=P0; SEL1=1; SEL2=1; Buf_2ND=P0; SEL1=0; SEL2=0; Buf_3RD=P0; SEL1=1; SEL2=0; Buf_LSB=P0; OE=1; SEL1=0; SEL2=1; } . . |
love73522
一般會員 ![]() ![]() 發表:1 回覆:15 積分:3 註冊:2006-12-14 發送簡訊給我 |
|
addn
高階會員 ![]() ![]() ![]() ![]() 發表:64 回覆:221 積分:202 註冊:2005-03-21 發送簡訊給我 |
|
love73522
一般會員 ![]() ![]() 發表:1 回覆:15 積分:3 註冊:2006-12-14 發送簡訊給我 |
|
love73522
一般會員 ![]() ![]() 發表:1 回覆:15 積分:3 註冊:2006-12-14 發送簡訊給我 |
你好 addn:
我的光學尺在移動的時候我的LED似乎沒辦法可以正確的讀資料 以下是我的程式: main() { SEL1=0; SEL2=1; OE=1; delay_1m(1); Read_Count(); } void Read_Count(void) { OE=0; Buf_MSB=P0; SEL1=1; SEL2=1; Buf_2nd=P0; SEL1=0; SEL2=0; Buf_3nd=P0; SEL1=1; SEL2=0; Buf_LSB=P0; SEL1=0; SEL2=1; OE=1; } void delay_1m(unsigned int dly) { int count; while(dly > 0 ) { count=120; while (count>0) count--; dly--; } } LED顯示出來都是一起亮感覺無法抓到正確的訊號 |
addn
高階會員 ![]() ![]() ![]() ![]() 發表:64 回覆:221 積分:202 註冊:2005-03-21 發送簡訊給我 |
|
love73522
一般會員 ![]() ![]() 發表:1 回覆:15 積分:3 註冊:2006-12-14 發送簡訊給我 |
你好 addn:
不好意思.上次程式沒貼全部給你.以下是我完整的程式: #include sbit SEL1=0x90; sbit SEL2=0x91; sbit OE=0x92; unsigned char Buf_MSB; unsigned char Buf_2nd; unsigned char Buf_3nd; unsigned char Buf_LSB; void delay_1m(unsigned int dly ) ; void Read_Count(void); main() { loop: SEL1=0; SEL2=1; OE=1; delay_1m(1); Read_Count(); goto loop; } void Read_Count(void) { OE=0; Buf_MSB=P0; SEL1=1; SEL2=1; Buf_2nd=P0; SEL1=0; SEL2=0; Buf_3nd=P0; SEL1=1; SEL2=0; Buf_LSB=P0; OE=1; SEL1=0; SEL2=1; } void delay_1m(unsigned int dly) { int count; while(dly > 0 ) { count=120; while (count>0) count--; dly--; } } 至於你說的顯示MSB.2nd......等.我有點不懂什麼意思>< |
addn
高階會員 ![]() ![]() ![]() ![]() 發表:64 回覆:221 積分:202 註冊:2005-03-21 發送簡訊給我 |
|
love73522
一般會員 ![]() ![]() 發表:1 回覆:15 積分:3 註冊:2006-12-14 發送簡訊給我 |
|
love73522
一般會員 ![]() ![]() 發表:1 回覆:15 積分:3 註冊:2006-12-14 發送簡訊給我 |
|
addn
高階會員 ![]() ![]() ![]() ![]() 發表:64 回覆:221 積分:202 註冊:2005-03-21 發送簡訊給我 |
|
love73522
一般會員 ![]() ![]() 發表:1 回覆:15 積分:3 註冊:2006-12-14 發送簡訊給我 |
|
love73522
一般會員 ![]() ![]() 發表:1 回覆:15 積分:3 註冊:2006-12-14 發送簡訊給我 |
你好 addn:
我之前有跟你問過8051跟hctl2022的問題 我接7段顯示器怎麼好像都不會驅動 以下是我的程式.請你幫我看看問題出在哪>< #include sbit SEL1=0x90; sbit SEL2=0x91; sbit OE=0x92; int i=0,scan; static const char Table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; unsigned char Buf_MSB; unsigned char Buf_2nd; unsigned char Buf_3nd; unsigned char Buf_LSB; void delay(unsigned int dly ) ; void Read_Count(void); main() { while(1) { SEL1=0; SEL2=1; OE=1; delay(1); Read_Count(); scan=200; while(scan>0) { i=(Buf_MSB & 0x00f); P3=Table[i]; P2=0xfe; delay(100); i=(Buf_MSB & 0x00f0)>>4; P3=Table[i]; P2=0xfd; delay(100); i=(Buf_MSB & 0x0f00)>>8; P3=Table[i]; P2=0xfb; delay(100); i=(Buf_MSB & 0xf000)>>12 ; P3=Table[i]; P2=0xf7; delay(100); scan--; } } } void Read_Count(void) { OE=0; Buf_MSB=P0; SEL1=1; SEL2=1; Buf_2nd=P0; SEL1=0; SEL2=0; Buf_3nd=P0; SEL1=1; SEL2=0; Buf_LSB=P0; OE=1; } void delay(unsigned int dly) { int count; while(dly > 0 ) { count=120; while (count>0) count--; dly--; } 麻煩你指導一下 剛開始學做單晶片控制遇到好多問題 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |