CODE 6.2 | 전가산기 실습
| 01 | void setup() { |
| 02 | pinMode(10, OUTPUT); // 합(Sum) 출력 핀 |
| 03 | pinMode(11, OUTPUT); // 출력 자리올림수(Cout) 핀 |
| 04 | pinMode(2, INPUT_PULLUP); // 입력 A |
| 05 | pinMode(3, INPUT_PULLUP); // 입력 B |
| 06 | pinMode(4, INPUT_PULLUP); // 입력 Cin (하위 자리올림) |
| 07 | } |
| 08 | |
| 09 | void loop() { |
| 10 | // 버튼 입력을 논리 상태(1/0)로 변환 |
| 11 | int A = (digitalRead(2) == LOW); |
| 12 | int B = (digitalRead(3) == LOW); |
| 13 | int Cin = (digitalRead(4) == LOW); |
| 14 | // [전가산기 논리 판별 과정] |
| 15 | // 1. 합(S): 세 입력의 배타적 논리합(XOR) |
| 16 | int S = A ^ B ^ Cin; |
| 17 | // 2. 출력 자리올림수(Cout): A, B가 모두 1이거나, 한쪽이 1이면서 Cin이 1일 때 발생 |
| 18 | int Cout = (A && B) || (Cin && (A ^ B)); |
| 19 | // 결과 출력 |
| 20 | digitalWrite(10, S); |
| 21 | digitalWrite(11, Cout); |
| 22 | } |
댓글 없음:
댓글 쓰기