Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (942.72 KB, 13 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
Mạch kiểm tra chẵn lẻ 4 bit là một mạch điện tử được sử dụng để xác định tính chẵn hoặc lẻ của một số nhị phân 4 bit. Mạch này thường sử dụng cáccổng logic để phân tích số lượng bit 1 trong một từ nhị phân và xác định xem tổng số bit 1 là chẵn hay lẻ.
Mạch hoạt động như sau:
Khi một từ nhị phân 4 bit được đưa vào mạch, mạch sẽ phân tích vàđưa ra kết quả là 1 nếu tổng số bit 1 là chẵn (đối với mạch chẵn) hoặc 0 nếu tổng số bit 1 là lẻ (đối với mạch chẵn)
Đối với mạch lẻ, kết quả sẽ ngược lại: 1 nếu tổng số bit 1 là lẻ và 0 nếu tổng số bit 1 là chẵn.
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">#include "Gate.h"int main() { char stopme; //Setting labels
ExOrGate exor1 (" EXOR1 "); ExOrGate exor2 (" EXOR2 "); ExOrGate exor3 (" EXOR3 "); Connector c1 (&exor1, &exor3); Connector c2 (&exor2, &exor3); /*exor1.setNextPin(1);
exor1.setNextPin(0); exor2.setNextPin(1); exor2.setNextPin(1); */
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">
// The output shows order of operators
cout << " Ngo vao 1: "<< exor1.getPinA()<< endl; cout << " Ngo vao 2: "<< exor1.getPinB()<< endl; cout << " Ngo vao 3: "<< exor2.getPinA()<< endl; cout << " Ngo vao 4: "<< exor2.getPinB()<< endl; cout << " Ngo ra EXOR : "<< exor3.getOutput()<< endl; cin >> stopme; //holds open window under some conditions. return 0;
#ifndef GATE_H_#define GATE_H_#include <string.h>#include <iostream>using namespace std;class LogicGate {public:
LogicGate(string n){ label = n;
}
string getLabel(){ return label; }
bool getOutput(){
output = performGateLogic(); return output;
}
virtual bool performGateLogic(){
cout << "ERROR! performGateLogic BASE" << endl; return false;
}
virtual void setNextPin(bool source) {
cout << "ERROR! setNextPin BASE" << endl; }
string label; bool output;};
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">class BinaryGate : public LogicGate {public:
BinaryGate(string n) : LogicGate(n) { pinATaken = false;
pinBTaken = false; }
return pinA; }
return pinB; }
virtual void setNextPin(bool source) { if (pinATaken == false) {
pinA = source;
this->pinATaken = true; }
else if (pinBTaken == false) { pinB = source;
this->pinBTaken = true; }
}private:
bool pinA, pinATaken, pinB, pinBTaken;};
class ExOrGate : public BinaryGate {public:
ExOrGate(string n) : BinaryGate(n) {}; virtual bool performGateLogic() { bool a = getPinA();
bool b = getPinB();
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">
if ((a == 1 && b == 0) || (a==0 && b==1) ) { return true;
} else {
return false; }
}};
class Connector{public:
Connector(LogicGate *fgate, LogicGate *tgate) { fromgate = fgate;
togate = tgate;
tgate->setNextPin(fromgate->getOutput()); }
LogicGate *getFrom() { return fromgate; }
LogicGate *getTo() { return togate; }
LogicGate *fromgate, *togate;};
#endif /* GATE_H_ */
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8"><i><b>Mở CODE COMPOSER STUDIO lên chọn File → New → Project như</b></i>
hình bên dưới
<i> Trong hộp thoại New Project chọn C/C++ → C++Project →Next</i>
<i>Đặt tên cho Project, tại mục Executable → Empty Project và mục </i>
<i>Toolchains → MinGW GCC nhấn Finish để hoàn tất</i>
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9"><i><b>Tiến hành tạo File Gate.h. Bấm chuột phải vào chọn New → Header </b></i>
<i>File, đặt tên Gate.h và nhấn Finish.</i>
<i><b>Tiếp tục tạo File main.cpp. Bấm chuột phải vào chọn New → Source </b></i>
<i>File, đặt tên main.cpp và nhấn Finish.</i>
<i>Nhập code cho file main.cpp</i>
<i>Nhập code cho file Gate.cpp</i>
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11"><i>Nhấp chuột phải vào lthdt và chọn Build Project kiểm tra chương trình</i>
có lỗi hay không. Nếu lỗi hãy chỉnh sửa và tiếp tục kiểm tra đến khi hết lỗi.
<b>Tại mục C/C++ Application chọn lthdt Debug sau đó tại mục main chọn</b>
<i>Browser ở phần C/C++ Application để lấy địa chỉ chứa file chạy của lthdt.</i>
<i>Chọn file lthdt.exe theo đường dẫn. Chọn Open → Run</i>
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">Nhập ngõ vào nhị phân để kiểm tra ngõ ra chẳn lẻ.
<b>NHẬN XÉT: Mạch chạy đúng theo yêu cầu, kiểm tra được tính chẳn lẻ </b>
của đầu vào (input).
</div>