Trung tâm đào tạo thiết kế vi mạch Semicon


  • ĐĂNG KÝ TÀI KHOẢN ĐỂ TRUY CẬP NHIỀU TÀI LIỆU HƠN!
  • Create an account
    *
    *
    *
    *
    *
    Fields marked with an asterisk (*) are required.
semicon_lab.jpg

Phép toán trên BIT trong lập trình VĐK

E-mail Print PDF
Như chúng ta đã biết trong các MCU, các câu lệnh, thông tin được mã hóa về ngôn ngữ máy (mã nhị phân 0,1) và được lưu lại ở các thanh ghi trong các ô nhớ được gọi là BIT. Thường thì các MCU sẽ có các thanh ghi tương ứng với PORT và mỗi PORT sẽ có 8PIN tương ứng với 8BIT ô nhớ chứa mã nhị phân 0,1.

Vậy vấn đề mà chúng ta quan tâm ở đây là việc thực hiện các phép toán trên thanh ghi (Port) và phép toán trên BIT (Pin), phép toán nào tối ưu hơn hơn và thuận tiện hơn cho các bài toán của chúng ta.

Những kiến thức cơ bản mà các bạn cần nắm để có thể vững ở vấn đề này là:

1. 1 Thanh ghi = 1 Port = 1Byte = 8Bit = 8Pin

Định nghĩa

+ BIT0: Tất cả các BIT =0, BIT0 = 1 //0b00000001

+ BIT1: Tất cả các BIT =0, BIT1 = 1 //0b00000010

+….

2. Khi thực hiên phép toán tác động lên thanh ghi thì nó sẽ tác động lên các Bit chứa trên thanh ghi đó, điều này có nghĩa là khi bạn tác động vào 1Pin trên MCU bằng cách tác động thanh ghi thì sẽ ảnh hưởng đến 7Pin còn lại (1Port = 8Pin). Khi đó bài toán của bạn sẽ bị ảnh hưởng nếu trong 1Port bạn sửa dụng nhiều Pin và yêu cầu các Pin này hoạt động 1 cách độc lập với nhau.

Ví dụ:

P1DIR = 0x03 //P1.0 và P1.1 là ouput, ảnh hưởng P1.2 -> P1.7 là input.

P1DIR |= BIT0 + BIT1 //P1.0 và P1.1 là output, không ảnh hưởng các Pin khác
Hoặc:

P1OUT = 0x01// P1.0 được đưa lên mức 1, các Pin còn lại mức 0.

P1OUT |= BIT1// P1.0 được đưa lên mức 1, các Pin còn lại không ảnh hưởng.

3. Các phép toán Logic thường gặp:

a. Phép OR: (|)

 

Tác dụng: Trong MCU khi sử dụng “|= BITx” thì sẽ đưa BITx lên mức 1 và không ảnh hưởng đến các BIT còn lại.


Giải thích:

Khi OR với 0 thì không thay đổi trạng thái, 0 | 0 =1 và 1 | 0 = 1, ngược lại khi OR với 1 thì kết quả sẽ là 1. 0|1 = 1 và 1|1 = 1.
Khi áp dụng phép toán này vào MCU thì sẽ tác động lên BIT cần tác động và không ảnh hưởng đến các BIT còn lại:
Ví dụ:

P1OUT |= BIT1; // P1.0 được đưa lên mức 1, các Pin còn lại không ảnh hưởng.


b. Phép AND: (&)

 

Tác dụng:

+ Trong MCU khi sử dụng “&=~BITx thì sẽ xóa BITx đó về mức 0 và không ảnh hưởng đến các BIT còn lại.

+ Khi sử dụng “&BITx” thì sẽ kiểm tra trạng thái của BIT đó đang ở mức nào, nếu mức 0 thì kết quả là sai, 1 thì kết quả là đúng.

Giải thích:

Toán tử Not (~) sẽ đảo ngược trạng thái các mức logic 0->1 và 1-> 0.
Toán tử And (&) với 1 sẽ không làm thay đổi trạng thái Logic ban đầu: 1&1 =1 và 0&1 =0, Toán tử And (&) với 0 sẽ cho giá trị ban đầu về mức logic 0: 1&0 = 0 và 0&0 =0.

Khi áp dụng phép toán “&=~ sẽ chỉ tác động tới BIT đang xét và không ảnh hưởng đến các BIT còn lại.
Ví dụ:

P1OUT &= ~(BIT0 + BIT1); // Đảo trạng thái P1.0 và P1.1 không ảnh hưởng các PIN còn lại.

if (P2IN&BIT0) P1OUT |= BIT0; // kiểm tra nếu P2.0 ở mức 1 thì đưa P.1 lên mức 1.


c. Toán tử XOR (^)

 


Tác dụng: Trong MCU khi sử dụng ^=BITx sẽ đảo trạng thái BITx đang xét.

Ví dụ:

P1OUT ^= BIT0; //Đảo trạng thái chân P1.0

Giải thích:

Cách nhớ dễ nhất là: 2 bit giống nhau trả về 0, 2 bit khác nhau trả về 1

Bạn có đam mê ngành thiết kế vi mạch và bạn muốn có mức lương 1000 usd cùng lúc bạn

đang muốn tìm một Trung tâm để học vậy hãy đến với ngành vi mạch tại SEMICON

  HotLine: 0972 800 931 Ms Duyên

 

Last Updated ( Monday, 12 October 2015 09:46 )  

Related Articles

Chat Zalo