Chip123 科技應用創新平台

標題: 請問倒數00就停怎寫? [打印本頁]

作者: hope1014    時間: 2008-11-26 06:56 PM
標題: 請問倒數00就停怎寫?
LIBRARY ieee;
" N7 e( [) D8 b6 c9 z, g8 B, ^; ]USE ieee.std_logic_1164.all;7 w- K( x& A, _% f
USE ieee.std_logic_unsigned.all;' l  F, d/ f7 d' f+ l& z# A
ENTITY counter_backwards60_seg2 IS1 s5 U- w! `, |2 H9 V7 ^2 H6 S; Q
        PORT(Clrn,Load,Ena,Clk        : IN  STD_LOGIC;5 [! n( f: @4 b
                 Ring          : OUT STD_LOGIC;                         
  Y8 o" K4 P/ G                 Q0,Q1         : OUT STD_LOGIC_VECTOR(3 downto 0)) ;                        8 X$ Y3 r6 {' X4 Y7 `9 H7 }, ], m# Y
END counter_backwards60_seg2;
/ {% O7 a# J% P- t2 v5 ?ARCHITECTURE arc OF counter_backwards60_seg2 IS
  c% ~( F: b  u7 ?* F2 E BEGIN- Q1 c5 B% E# ~" h: ?0 ?, G
  PROCESS (Clk)
4 W0 y4 O3 V4 ^$ P) Z     VARIABLE imper0 :STD_LOGIC_VECTOR(3 downto 0);
5 N8 h; Q: ~  ^     VARIABLE imper1 :STD_LOGIC_VECTOR(3 downto 0);2 R4 F7 @! @; k, S. z6 [
  BEGIN9 M) c6 {. }& @& s
        IF Clrn='0' THEN  imper1 := "0110"; imper0 := "0000";
4 V, ^+ U1 i& ^2 R: d2 y" j. i        ELSE IF (Clk'event AND Clk='1') THEN , }0 `) k. S5 V) i) N
            IF Load='0' THEN imper1:="0110"; imper0:="0000";               
: ?* }0 C, n3 d2 w5 a# j) Y            ELSIF Ena='1' THEN
4 H" s2 g/ c. N6 X/ q/ l               IF (imper0="1001" AND imper1="0101")THEN" D1 D! z  H4 N7 ~' k( O) u7 g
                  imper0 :="1000"; " e% }4 X/ B& t$ P0 Q
               ELSIF imper0 >"0000" THEN imper0 := imper0-1;
6 Z. W, Z' F) y) o$ `# H3 }               ELSE imper0:="1001";! t  x) U; w7 s+ \" Y2 _8 b
                    IF  imper1 >"0000" THEN imper1 := imper1-1;2 z: [0 R6 l, L2 k
                    ELSE imper1:="0101";                     
$ B& A- ^1 e- K) j/ U                    END IF;: z  i+ P2 ~5 Y- U
               END IF; 4 L9 W3 ~* p+ I
            END IF;
; U& s8 m7 Q; m$ ]7 K7 Q+ M7 m% }1 Q1 V7 k        END IF;9 k+ N7 U+ A* P( |
     END IF;               
0 c* H2 z; m* P. b! X0 UQ0 <= imper0; Q1 <= imper1; ) [. L7 Z) Y- a% n; W3 |
Ring <= not(imper0(0) or imper0(1) or imper0(2) or imper0(3) or imper1(0) or imper1(1) or imper1(2) or imper1(3));         4 [3 ?$ x) e$ J: M* ~
   END PROCESS ;3 L  r5 U2 x: `& `
END arc;

& s6 d) A6 {/ O: U3 P2 z& p" G$ J3 t$ p8 u
上面是我的倒數60秒程式
% f( |1 b' W0 H( n小弟不才! p* Z9 s& O. f8 Z, ]4 `# y+ A
不知道怎寫停止
9 T1 C0 `7 N% [4 T" v3 i只要數1次60就好
作者: spring69393    時間: 2008-11-27 09:37 PM
如果單純計數的話,宣告成整數型式比較好。 signal timer : integer range ;$ u! V6 x4 K, u2 P+ n5 J- B4 J1 e
要六十秒數一次的話,簡單點就 if timer = 0 then timer <= 0; 就好了,) r) i) N/ B$ w( m8 F% D! H5 T: B) I, M
除非你有什用途 ,不然就這樣就好了。
作者: hope1014    時間: 2008-11-28 05:05 PM
我是使用QuartusII
' ?" M* p( K1 K+ D4 ~1 P2 h跑一次的宣告是要放哪一行...?
9 i5 E, ?# T! Y: X還有一個問題想請教
; m! W( i: [* s+ o# ~* }就是counter_backwards60_seg2是我的分鐘
$ R; t/ _0 N! P8 D- F5 }$ `- m0 Hcounter_backwards60_seg是我的秒- e+ ]9 w9 G* J! _) C& Y- {
現在就是秒那邊 10→9秒的時候Co也會進位: w1 t  ~  {' o) d! h
秒的個位數有延遲 所以導致10→9秒的Co會進位) R3 ]& F& @% K. q5 K& @' E
程式分跟秒是依樣的 (Ring就是Co)
1 B: K, K: h- V3 }; {另外 分鐘怎從60開始: F4 r/ @9 e6 e
因為現在我是00:00開始倒數4 q' j4 A5 A5 ^- |7 w) B
我需要在counter_backwards60_seg2改哪邊?
, t1 V/ @8 C, l: C
" W% Y$ P$ H0 g& |8 Q( [/ r5 [: M  N
# k1 C% ?' F& [我奇摩即時通:xt_9000
4 k+ O0 ]" s+ [希望有好心人幫幫忙
3 g' T* ~& A( H2 S懵懂無知的大學生
作者: spring69393    時間: 2008-11-30 01:13 AM
剛學程式時寫的計數器,不過是上數的,基本上跟你要的下數差不多,只是反過來而已,
3 k' z/ a( F9 f看有沒有用可以參考一下。
作者: hope1014    時間: 2008-12-5 05:10 PM
感謝大大的回答2 s/ W. ]; n  d1 o& A, N" N
我想問說/ e4 F$ q8 C1 ?, B9 V8 |) C- {( y+ t
怎從"60"開始倒數?
" k& B2 `! m3 u60→59→58→57....→00
, W- @: |, m5 ?( ?2 o1 _8 _$ C因為我弄出來都是- J1 d& F' t& W! d: ^9 L9 B: ]
00→59→58→57....→00' e8 d  q0 Q& r: R
  d! d9 \$ @+ b/ i
+ G! t6 ~+ o2 A) H, _# Q2 v) X
希望有高手解一下疑惑
作者: spring69393    時間: 2008-12-6 03:06 AM
初始值要給六十呀,也就是rst 的地方不要給他00 ,給他60。
/ i3 g; [% r3 A6 Z, c9 p+ @( T8 N$ g; \! I( k/ [5 ?" Z
不過時鐘的話應該是給59才對,沒有從60在數回來的。
作者: hope1014    時間: 2008-12-6 08:22 PM
沒有啦
, J# E0 a* x7 t- o% {( o2 w7 D因為我要做60分鐘倒數
+ N$ w/ y2 ]* _8 b1 M% K所以要60:00 →59:59→59:58
  m- R. W4 g2 u) [我現在是00:00→59:59 @@"
作者: spring69393    時間: 2008-12-7 03:58 PM
if reset<='0' then, ~3 @6 M) `; |) X) w) e
     timer<=(others=>'0');  <<<  改這 60 00
作者: hope1014    時間: 2008-12-7 07:00 PM
我沒有設定res啊@@"  X: y$ q/ v5 S$ L
我是用Quartus II 電路圖接法
8 b# j3 y  B) k  {60:00(現在是00:00) →59:59→59:587 x: {* i. b9 l- O
: W4 i; n9 y) M7 o7 F
IF Clrn='0'  或者 IF Load='0'  就停止動作了啊@@: P  ~9 {( ~1 T1 S: R' ^* T; `; g
小弟比較笨拙~"~
作者: hope1014    時間: 2008-12-8 01:00 AM
LIBRARY ieee; # ~0 f' Q( o5 i# d( z7 |# Z* V( @
USE ieee.std_logic_1164.all;
: @6 f5 z" l" O+ d$ M2 dUSE ieee.std_logic_unsigned.all;6 l/ o, v  T& M) M3 e
ENTITY counter_backwards60_seg2 IS
. K9 M# y4 x+ ?4 X% Y3 |, J        PORT(Clk        : IN  STD_LOGIC;         # F: v" y) e+ t6 h1 D
                 Q0,Q1         : OUT STD_LOGIC_VECTOR(3 downto 0)) ;               
5 d+ b+ F1 g8 S4 Z7 Z( uEND counter_backwards60_seg2;
8 x( b% f, i, @( t% `ARCHITECTURE arc OF counter_backwards60_seg2 IS
( Z6 M9 b' u" Q BEGIN' y* r  b+ ^3 u5 N- B4 u
  PROCESS (Clk)
) p4 o" a& m5 n7 _4 o     VARIABLE imper0 :STD_LOGIC_VECTOR(3 downto 0);* A4 `) a3 e* s4 S/ t
     VARIABLE imper1 :STD_LOGIC_VECTOR(3 downto 0);   ( E; b5 X8 o7 z( H6 E
  BEGIN          - e8 f$ M# F7 c' G) }7 Q
       # \& T% F( T4 a, E
       IF (Clk'event AND Clk='1') THEN           . q+ `0 A5 O( I5 N9 I, ?
            
; n& J& `' |4 \+ Y               IF imper0 >"0000" THEN imper0 := imper0-1;
5 j0 z  m% P% ^8 A               ELSE imper0:="1001";& W5 B8 H; P+ M
               IF  imper1 >"0000" THEN imper1 := imper1-1;
! H# e4 d1 H0 o9 G               ELSE imper1:="0101";
                                 
/ ?" J1 ~: F- N1 R$ v7 x                    END IF;/ q% h- @  S7 \% d
               END IF;
5 f2 p. U8 K, T3 N, `' G             END IF;  6 r3 f' u0 C! m3 G( {: Z
         Q0 <= imper0; Q1 <= imper1;  
, Y9 {1 A' `/ d9 S$ s2 y   END PROCESS ;* W  e# z) C. K# i- z! h
END arc;/ `  R* X' i/ w  L1 i, q6 Q; m
以上我精簡了一些 也能跑模擬圖
" V1 C  l  t1 ~: W9 T4 p但現在重點是我該怎寫60→59→58.../ t- F( |$ y5 ~4 E7 R
初始值60要怎寫...
4 s" e' {$ k5 Q; m是要多2個input 然後給他一開始的值?/ h9 h& p5 n+ a$ p7 _# Z
但要怎寫啊@@...) C4 m. c4 J: ]- }% S

作者: hope1014    時間: 2008-12-8 09:32 PM
以上問題已經解決@@") d5 O( r( L( @( c6 F* C9 o$ D
但請問 我需要一個另外程式* f7 y9 H! z1 n
去控制暫停開始和暫停/ n+ }: ?2 @* J, f/ x& c, F" Q: r
LIBRARY ieee;
$ u! N' b7 E% x  ]USE ieee.std_logic_1164.all;
  g0 i& @  |: uUSE ieee.std_logic_unsigned.all;
9 j1 J6 S; Z; q0 u' UENTITY debounce_v IS
; Y3 ^' g9 z7 l' p0 w1 L        PORT(CLK,PB        : IN  STD_LOGIC;3 a% {. B) q3 [# m
                 PULSE        : OUT  STD_LOGIC ' S- W5 E3 {- m, `
                );4 O. d1 p2 p* ^- g1 r  _
END debounce_v;
( L  Z& Q1 q6 Z+ W7 T: U% yARCHITECTURE arc OF debounce_v IS4 ~' n6 u; {, M6 K
SIGNAL imper : STD_LOGIC;5 e, r6 F* R- \: p
BEGIN
$ k6 `( V1 \/ ]* h  PROCESS (CLK)
" f' T1 R- c/ P     VARIABLE counter : integer range 0 to 49;$ w2 h2 T! [0 i% c/ Y- k! b
  BEGIN
/ i) z9 E. i% ^* W; r   IF (CLK'event AND CLK='1') THEN) p- L2 N6 d, H
          IF counter = "1" and (PB = '1') THEN imper <= '1';
% `/ m& ]" ~, f      ELSE counter := counter-1; imper <= '0';  l: D7 u7 Y; p
      END IF;
& k! K# I: t! I$ G" J( I* z$ o   END IF;- m, P* L% w. R3 m0 w8 d: I
         PULSE <= imper;   # u7 u8 s" j& g# Z8 }
   END PROCESS ;3 I# \# b1 T+ j+ m
END arc;7 V# `- i" Z2 W$ o' j$ \
6 `7 l! I/ P: R9 s3 X- o
這是按一次減一次& L1 d! l$ g; S! p% U  x$ c
想要按一下開始 按一下暫停
( Q! Q7 q3 T, l7 N$ q+ J& [+ W- t2 T0 c
ps.轉自全華圖書
作者: spring69393    時間: 2008-12-9 09:39 AM
Quartus II 電路圖接法 我不會也,程式寫法就懂。
* Q: ^9 p8 z* \' O5 @# C+ _+ q: q! A' }5 c
你就建一個按鍵 跟上面的一樣,只是還要做一個暫存器,=0 就跑,= 1就停。
作者: hope1014    時間: 2008-12-11 08:38 PM
@@": ^, Y' ]0 A# X8 ^4 k6 H
有需要暫存器??% R. ?" W8 P4 }3 y8 p
那是震盪器→先接到開關→接到暫存器→計數器
1 K  c9 G5 f3 I* w這是樣嗎?
作者: hope1014    時間: 2008-12-12 10:23 PM
PROCESS (CLK)
! I. W( n( c( y# m% ]     VARIABLE counter : integer range 0 to 49;
+ H, V9 v) {! P1 d0 w  BEGIN
. I2 `* ?5 K& [  a4 D   IF (CLK'event AND CLK='1') THEN) q! Q/ ^# r" I; K
          IF counter = "1" and (PB = '1') THEN imper <= '1';3 D! R! p  _: Y) d9 E
      ELSE counter := counter-1; imper <= '0';% s' j: o2 Z# L8 D1 l
      END IF;
# \8 [& W. V+ s! d能幫我解釋一下這幾行是什麼意思嗎?
作者: spring69393    時間: 2008-12-14 09:56 PM
PROCESS (CLK) -- 有些書翻成敏感列,如果clk 的狀態有改變的話就重做以下動作9 {7 C" _  {9 @# z% C/ k0 n' @9 z
     VARIABLE counter : integer range 0 to 49;  -- 把counter設成 0 到49 的整數
& k! k6 }& F6 a: K  w, }  BEGIN                  
& _) y" p1 y& p6 x   IF (CLK'event AND CLK='1') THEN  -- 如果clk 正緣觸發
. g; T4 F. L& p. C          IF counter = "1" and (PB = '1') THEN imper <= '1';  ( u0 m# t, c- E/ B; n" h
                -- 如果counter = "1" 和 (PB = '1')就把  imper設為1* W5 K$ O( V: G3 t& G& {

3 [- y# J; y1 v7 H( v! v" M      ELSE counter := counter-1; imper <= '0'; --不然的話counter := counter-1; imper 為0. v& ^7 R! E; Z1 v9 C  t) R
      END IF;
作者: hope1014    時間: 2008-12-18 07:44 PM
spring69393 大大感謝您& t  q9 J- o, l9 d3 `
! [- }; ~: A0 X( A
按鍵開關 第一次 on時,開始計時。
; m. W) M, n# l2 G/ A' `7 E: |' b* f                 第二次 on時,停止計時。
9 s; z7 q* g0 V                 第三次 on時,開始計時。' ^  R( e/ Y+ l0 q# Y7 G
& @. `  I) J, B
這有哪位大大能幫忙@@
作者: spring69393    時間: 2008-12-21 12:53 PM
你就判斷暫存器是 高電位還低電位不就好了,一個計數一個停止呀,不是很簡單嗎@"@
作者: hope1014    時間: 2008-12-22 09:21 PM
是移位暫存器嗎?
: a- k3 ~9 s. n4 J% k平行輸入 / 平行輸出
- K* Q6 }, B7 L9 F2 L. m" w$ s7 b1 K平行輸入 / 串列輸出% K3 Z2 i& p% I) _, ?
串列輸入 / 平行輸出* j5 l1 P% s$ L1 [2 p, n
串列輸入 / 串列輸出
# p0 r: P2 [& s! M9 t0 j哪一個啊@@...
& \( G! H, N# H% t* }. z) p& M我都是看書自己學* \/ ^3 U) @" H+ E2 D
所以都不會咩
1 N5 n: w+ D0 E5 O; a1 [拜託 幫幫忙
作者: hope1014    時間: 2008-12-24 08:18 PM
真的有要用到暫存器?!
+ H9 C4 Q8 \: _- P今天問老師  8 J6 h7 n# @" T& f. E
可是老師沒說到暫存器的東西
8 r. w) j4 T, B( R/ d. l7 |  K' p反而是說
7 `! b4 r( t8 {3 R+ v; lIF CLK'event AND CLK='1
, d" ^; c4 J/ b& c# J( K8 X, ycounter := counter + 1 ; 1 g/ o: q- u& ^- {2 ]7 ~
; p* b% j( B2 {
抓counter (0)   ----第一個腳位?!
. h/ N( C. {) B* T" V給counter位元多一點之類的% d8 E9 n/ z& R7 b" p0 j
' s& ?* m! Z) G$ y$ p
00  01   10   11
/ C. F( p; A4 r最後腳位為0   ----Run
$ [$ e5 Y8 n) A3 a最後腳位為1   ----Stop
( X, h! a# h. B5 A
% f2 X9 o! B3 F1 {& s- @可是要怎弄勒@@
作者: spring69393    時間: 2008-12-25 08:12 PM
你說的是自動變速,跟你的要求的開關功能根本不一樣。% R8 @* W% W) }0 D2 X% F/ y8 b
至於怎麼做我也不知怎樣跟你說,給你程式你又看不懂,
& X9 L/ ~& ^0 a, ~/ l! |跟你說原理你又不去想,要用你懂的畫圖的我又不會,
& f  i$ O3 F$ o6 |; Q, O難解了!
作者: ssejack1    時間: 2008-12-26 09:37 AM
Key function# t% O) d. ]! x# a& l$ ]
按鍵開關 第一次 on時,開始計時。
* t0 |8 `6 G/ f+ j1 i1 ?% Z6 \                 第二次 on時,停止計時。3 w6 ?' M. f0 @  e) A6 h" X
                 第三次 on時,開始計時。: L/ N( D, A1 `) R* L& k4 g
未 synthesis,請自行 debug........
' v: p$ t& R: y' x1 y: I' ~
& D  o4 t+ y  ~* dLIBRARY ieee;
: k! b+ T; {* I( FUSE ieee.std_logic_1164.all;: t* O% ~0 }9 y4 c, ~7 v
USE ieee.std_logic_unsigned.all;
" L9 U* l6 ]3 U% Q/ `2 }8 CENTITY KeyFunction IS, m! U2 D  f8 j1 `; `4 r
        PORT(CLK,
/ c- ~! U1 [- d3 Y& O3 L+ z. D                 PB,% m9 r5 u5 R! P7 U
                 RSTn        : IN  STD_LOGIC;! ~3 @3 r. A5 h; J, j# A# U3 Y# L
                 START_COUNT,- X7 q3 t7 r" O1 H0 s1 x2 ?# ]
                 PAUSE
1 a1 {& }4 x) T7 T# E/ h8 K                              : OUT  STD_LOGIC
7 u' a9 x5 D' a* \' j  e& \. p                );
' `+ _8 G% c& k4 }5 O& YEND KeyFunction;0 Y& Y* Q- W! s, J
ARCHITECTURE arc OF debounce_v IS  N9 z  F2 \& a4 i
SIGNAL  currently_state : STD_LOGIC_VECTOR(2 downto 0);8 f) `7 O1 p7 ]) E6 M4 L* G
signal     pb_reg,debounce_counting,debounce_end    : std_logic;
0 `; e$ D& f( [& X5 Y- Qsignal debounce_counter : STD_LOGIC_VECTOR(15 downto 0);5 S0 ]7 y) E7 ^  G

' t6 B' `! f6 J* x* b. e" zconstant  debounce_time        : STD_LOGIC_VECTOR(15 downto 0):= "0000000000000000";
; J) e% d% L, `. U7 u* F: YBEGIN
3 F: Y: W! u! X" {9 P, [+ f  y* v: F$ |% `
--============================================================
% E6 Q  S! e* \# Z$ R& G" u! b-- get key push state. ( active high)* n7 J; G% p) f1 h
--============================================================$ V$ t& c" I+ P( j' V% p
  PROCESS (CLK,RSTn,PB,pb_reg,debounce_counting,debounce_end)
# `$ I; i. @0 p3 K0 o7 t/ W   BEGIN" K' a3 ~" G; V- [
   if( RSTn = '0') then
- }9 m4 u; S- r- C           pb_reg <= 1;
* D6 B& ~: K3 J. {7 z; i5 i+ D' J, @   elsif( CLK 'event and CLK ='1')then6 Q7 R5 g6 z3 h' c# B0 V
            if( PB='1' and pb_reg ='0')then$ q" I. F5 }8 |7 Y
                       debounce_counting <= '1';; a; K- b# V( ~6 F; L
            elsif( debounce_end = '1')then
# K, g( j, ]1 j                    debounce_counting <= '0';       
' B$ e; `; J" `$ R7 D- M            else
* U3 S0 i0 L$ b9 b                    debounce_counting <= debounce_counting;2 y+ d3 s6 W/ s
            end if;9 H1 }. r) s/ r
            pb_reg <= PB;  
% I9 Q9 }7 [2 D. `1 v   end if;
作者: ssejack1    時間: 2008-12-26 09:38 AM
--============================================================
4 w' s4 F0 L" P4 `' B5 y-- key debounce timer+ h4 ]! ]( V  J1 K0 R( s- U9 R$ \
--============================================================: j% u5 o& R; D# G9 _6 q
  PROCESS (CLK,RSTn,PB,pb_reg,debounce_counting,debounce_end)4 N- {% I. Q/ U2 W4 [5 H" t; ^8 K
   BEGIN3 W' I6 P; W2 `; v6 H
   if( RSTn = '0') then
! E7 q1 k0 o1 R; ~8 @: k              debounce_end <= '0';  x( I& \3 f2 c$ k+ b; q
           debounce_counter <= debounce_time;
+ F; h" N+ p; A1 p9 [   elsif( CLK 'event and CLK ='1')then
2 X; O' h7 ~- ^/ ^$ K( C            if( debounce_counting  ='1')then
' f" G1 X, u3 o$ g) ?1 `                    if( debounce_count = "1111111111111111")then) I: B0 z! z+ L6 `6 b6 {
                            debounce_end <= '1';& r: [8 m$ m# a* x) c8 V" g
                            debounce_counter <= debounce_time;& v& p. F( U. m6 f( J
                    else       
8 ]) S% l. A, V                            debounce_end <= '0';5 ?# b$ l$ @( C# f& r& J2 B' N
                               debounce_count = debounce_count+1 ;
+ [7 P! Z' C3 }5 B                       end if;        ; B2 \! _$ Q4 O8 ?9 K
            end if;  
9 h# e5 b. n4 j2 F- Y   end if;# B/ N6 _5 _) \5 `0 K" Z
           
" u. |' h( ^  L, T--============================================================
6 J& s* A  }4 D5 n-- key function control5 C) |" \4 Z1 f, M7 L8 g" ~( u
-- PAUSE -(key push)-> START_COUNT -(key push)-> PAUSE -(key push)-> START_COUNT* v3 I! b+ M" J
--============================================================8 u2 j" z! R# a3 d( M
  PROCESS (CLK,RSTn,pb_reg,debounce_end)* t0 g2 s# _, C
   BEGIN
' N4 R2 S7 p4 ]7 Z; G/ x7 l, N. a, p8 L   if( RSTn = '0') then
3 u/ v$ F8 \. _6 @0 x' a3 h9 w" l) h              currently_state <= "10";        -- pause$ t; V* Y# i5 b5 ~
   elsif( CLK 'event and CLK ='1')then
* L+ r, t' t  r+ F; u            if( debounce_end  ='1' and pb_reg ='1')then
- b% U. [7 K+ m$ T# `9 n# W9 w                    currently_state <= currently_state(0)& currently_state(1);
1 O% D7 R( C! x% i' o            end if;  . x/ o! [; g' v/ X1 {
   end if;        & g  @- q3 t5 k
                 START_COUNT        <= currently_state(0);* f) C6 D( i8 f; c2 p
                 PAUSE                <= currently_state(1);
; e6 \5 \2 ^/ w6 q, t+ X1 q" P/ ]3 B  g# J0 U* p1 T
   END PROCESS ;
: G6 r! Y- [( JEND arc;




歡迎光臨 Chip123 科技應用創新平台 (http://www.chip123.com/) Powered by Discuz! X3.2