- 最後登錄
- 2021-12-17
- 在線時間
- 9 小時
- 註冊時間
- 2010-10-24
- 閱讀權限
- 20
- 精華
- 0
- UID
- 8893386
- 帖子
- 644
- 積分
- 967 點
- 潛水值
- 10169 米
| 如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。 程式碼:- /*
- ref:
- http://http://en.wikipedia.org/wiki/Flip-flop_(electronics)
- */
- #include <stdio.h>
- typedef unsigned char STATE;
- typedef struct {
- STATE R;
- STATE S;
- } RS;
- #define P printf
- int main(int argc, char **argv)
- {
- RS rs[4] = {{0,0}, {1,0}, {0,1}, {1,1}};
- STATE Q[2] = {0, 1};
- STATE T[2] = {0, 1};
- int i, j;
-
- P("RS Flip-Flop\n");
- P("Qnext = S (+) R'Q, RS=0\n\n");
- for(i=0; i<2; ++i)
- {
- P("S R Q Qnext\n");
- P("-----------------\n");
- for(j=0; j<4; ++j)
- {
- if(j<3)
- P("%d %d %d %d\n", rs[j].S, rs[j].R, Q[i], rs[j].S | (!rs[j].R)*Q[i]);
- else
- P("%d %d %d (forbidden)\n", rs[j].S, rs[j].R, Q[i]);
- }
- P("\n");
- }
- P("Toggle Flip-Flop\n");
- P("Qnext = T (XOR) Q = TQ' (+) T'Q\n\n");
- P("T Q Qnext\n");
- P("-----------------\n");
- for(i=0; i<2; ++i)
- {
- for(j=0; j<2; ++j)
- P("%d %d %d\n", T[i], Q[j], !(T[i]==Q[j]));
- ///P("%d %d %d\n", T[i], Q[j], (T[i]*!Q[j] | !T[i]*Q[j]) );
- }
-
- return 0;
- }
複製代碼 執行結果:- $ gcc invert.c -Wall
- $ ./a.out
- RS Flip-Flop
- Qnext = S (+) R'Q, RS=0
- S R Q Qnext
- -----------------
- 0 0 0 0
- 0 1 0 0
- 1 0 0 1
- 1 1 0 (forbidden)
- S R Q Qnext
- -----------------
- 0 0 1 1
- 0 1 1 0
- 1 0 1 1
- 1 1 1 (forbidden)
- Toggle Flip-Flop
- Qnext = T (XOR) Q = TQ' (+) T'Q
- T Q Qnext
- -----------------
- 0 0 0
- 0 1 1
- 1 0 1
- 1 1 0
複製代碼 ... |
|