Thanh ghi trạng thái của AVR

Một phần của tài liệu Nghiên cứu thiết kế chế tạo bộ điều khiển led ma trận bằng smartphone chạy hệ điều hành android (Trang 52 - 53)

Nằm trong vùng nhớ I/O, thanh ghi SREG có địa chỉ I/O là 0x003F và địa chỉ bộ nhớ là 0x005F (thường đây là vị trí cuối cùng của vùng nhớ I/O) là một trong số các thanh ghi quan trọng nhất của AVR. Thanh ghi SREG chứa 8 bit cờ (flag) chỉ trạng thái của bộ xử lí, tất cả các bit này đều bị xóa sau khi reset, các bit này cũng có thể được đọc và ghi bởi chương trình. Chức năng của từng bit được mô tả như sau:

Hình 2.7: Cấu trúc thanh ghi trạng thái của AVR.

Bit 0 – C (Carry Flag: Cờ nhớ): Là bit nhớ trong các phép đại số hoặc logic,

ví dụ thanh ghi R1 chứa giá trị 200, R2 chứa 70, chúng ta thực hiện phép cộng có nhớ: ADC R1, R2, sau phép cộng, kết quả sẽ được lưu lại trong thanh ghi R1, trong khi kết quả thực là 270 mà thanh ghi R1 lại chỉ có khả năng chứa tối đa giá trị 255

(vì có 8 bit) nên trong trường hợp này, giá trị lưu lại trong R1 thực chất chỉ là 14, đồng thời cờ C được set lên 1 (vì 270 = 100001110, trong đó 8 bit sau 00001110 = 14 sẽ được lưu lại trong R1).

Bit 1 – Z (Zero Flag: Cờ 0): Cờ này được set nếu kết quả phép toán đại số hay

phép logic bằng 0.

Bit 2 – N (Negative Flag: Cờ âm): Cờ này được set nếu kết quả phép toán đại

số hay phép logic là số âm.

Bit 3 – V (Two’s complement Overflow Flag: Cờ tràn của bù 2): Hoạt động

của cờ này liên quan đến kiến thức số nhị phân (phần bù). Bù 1 một số trong hệ nhị phân mà nó chính là bù cơ số trừ 1 của một số khác. Một số bù 1 có thể có được do đảo tất cả các bit có trong số nhị phân (đổi 1 thành 0 và ngược lại).

Bit 4 – S (Sign Bit: Bit dấu): Bit S là kết quả phép XOR giữa một cờ N và V,

S = N xor V.

Bit 5 – H (Half Carry Flag: Cờ nhờ nữa): Cờ H là cờ nhớ trong một vài phép

toán đại số và phép logic, cờ này hiệu quả đối với các phép toán với số BCD.

Bit 6 – T (Bit Copy Storage): Được sử dụng trong hai Instruction BLD (Bit

LoaD) và BST (Bit STorage). Làm nơi trung gian trong các lệnh BLD và BST.

Bit 7 – I (Global Interrupt Enable): Cho phép ngắt toàn bộ bit này phải được

set lên 1 nếu trong chương trình có sử dụng ngắt. Sau khi set bit này, bạn muốn kích hoạt loại ngắt nào cần set các bit ngắt riêng của ngắt đó. Hai instruction dùng riêng để set và clear bit I là SEI và CLI.

Tất cả các bit trong thanh ghi SREG đều có thể được xóa thông qua các instruction không toán hạng CLx và set bởi SEx, trong đó x là tên của bit. Ví dụ CLT là xóa Bit T và SEI là set bit I.[2]

Một phần của tài liệu Nghiên cứu thiết kế chế tạo bộ điều khiển led ma trận bằng smartphone chạy hệ điều hành android (Trang 52 - 53)