Hình 1.26: Tổ chức bộ nhớ dữ liệu PIC16F877A
Bộ nhớ dữ liệu được chia thành nhiều bank (4 bank) gồm các thanh ghi chức năng đặc biệt. Mỗi bank dài đến 7Fh tương ứng với độ lớn 128 byte. Các bit ở vị trí thấp của mối bank dùng để chứa các thanh ghi đặc biệt.SFR (Special Function Register). Đầu thanh ghi đặc biệt là vùng thanh ghi đa mục đích.
Bit RP1 và RP0 trong thanh ghi STATUS dùng để chọn bank.
Thanh ghi chức năng đặc biệt và hoạt động của chúng:
Thanh ghi chức năng đặc biệt (SFR) dùng cho CPU và các modul ngoại vi, để kiểm soát hoạt động của thiết bị theo yêu cầu. Các thanh ghi đặc biệt này được thực thi như là RAM.
Thanh ghi chức năng đặc biệt được chia làm hai phần: Phần trung tâm và phần ngoại vi.
a. Thanh ghi STATUS: (địa chỉ bộ nhớ 03h, 83h, 103h và 183h)
Thanh ghi STATUS bao gồm trạng thái số của ALU, trạng thái Reset và các bit chọn bank cho bộ nhớ dữ liệu.
Thanh ghi STATUS có thể là đích tới cho bất cứ chỉ thị nào như các thanh ghi khác.
Hình 5: Thanh ghi STATUS -Bit IRP: bit dùng để chọn bank (chọn gián tiếp)
0: chọn bank 2, 3 1: chọn bank 0, 1
-Bit RP1, RP0: bit dùng để chọn bank (chọn trực tiếp) 00: chọn bank 0
01: chọn bank 1 10: chọn bank 2 11: chọn bank 3
-Bit TO ( time out bit) :cờ báo tràn bộ WDT 1: không xảy ra tràn
0: tràn xảy ra
-Bit PD (Power-down) 1: sau khi bật nguồn
0: khi kích hoạt lệnh SLEEP -Bit Z : cờ zero
1: kết quả bằng 0 0: kết quả bằng 1 -Bit DC (Digit Carry):
-Bit C(Carry)
b.Thanh ghi OPTION_REG (địa chỉ bộ nhớ 81h và 181h)
Hình 1.27: Thanh ghi OPTION_REG -Bit RBPU (Portb pull-up Enable bit)
1 : cho phép điện trở kéo lên ở portb;
0: không cho phép điện trở kéo lên
-Bit INTEDG (Interrupt Edge Select Bit): Nếu ngắt ngoài được cho phép, thì bit này xác định ngắt sẽ xảy ra khi tín hiệu ở chân RB0/INT là ở sườn lên hay sườn xuống
1 : sườn lên 0 : sườn xuống
-Bit TOCS (TMR0 Clock Source Select bit ) : bit này cho cho phép bộ định thời tăng giá trị hoặc là từ dao động nội, hoặc là từ dao động ngoài trên chân RA4/TOCKI
1: dao động ngoài 0: dao động nội
-Bit TOSE (TMR0 Source Edge Select bit) : bít này cho phép tín hiệu trên chân RA4/TOCKI tác động vào bộ định thời ở sườn lên hay sườn xuống
1: sườn xuống 0: sườn lên
-Bit PSA (Prescaler Assigment bit): bit này qui định bộ chia tần được gán cho bộ định thời(TMR0) hay bộ watch dog (WDT)
1: gán cho bộ WDT 0: gán cho bộ TMR0
-Bit PS0, PS1, PS2 (Prescaler Rate Select bit) ba bit này xác định hệ số của bộ chia tần,các tỉ số này như sau:
c. Thanh ghi điều khiển hoạt động ngắt INTCON (địa chỉ bộ nhớ 0Bh, 8Bh, 10Bh và 18Bh)
Hình 1.28: Thanh ghi INTCON
-Bit GIE (global interrupt enable bit): Bit cho phép hay không cho phép ngắt toàn cục
1 : cho phép tất cả các ngắt 0 : cấm tất cả các ngắt
-Bit PEIE (Peripheral Interrupt Enable bit) : bit cho phép ngắt ngoài.
1 : cho phép tất cả các ngắt ngoài 0 : cấm tất cả các ngắt ngoài
-Bit TMR0IE (TMR0 Overflow Interrupt Enable): bit này cho phép ngắt khi tràn bộ định thời
1 : cho phép ngắt
0 : cấm ngắt
-Bit INTE (INT External Interrupt Enable): bit cho phép ngắt ngoài trên chân RB0/INT
1 : cho phép ngắt 0 : cấm ngắt
-Bit RBIE (RB Port Change Interrupt Enable): bit cho phép ngắt khi có sự thay đổi trên portb
1 : cho phép ngắt 0 : cấm ngắt
-Bit TMR0IF (TMR0 Overflow Interrupt Flag): cờ ngắt khi tràn bộ định thời 1 : tràn bộ định thời
0 : chưa xảy ra tràn
-Bit INTF (INT External Interrupt Flag): cờ báo hiệu khi có ngắt ngoài 1 : có ngắt ngoài xảy ra
0 : không có ngắt ngoài
-Bit RBIF (RB Port Change Interrupt Flag): cờ báo hiệu có sự thay đổi trạng thái trên portb
1 : có thay đổi
0 : không có sự thay đổi 1.14. Kết luận chương:
Trong chương này em đã giới thiệu về cấu trúc phần cứng bên trong và các hoạt động đặc trưng của họ PIC dựa trên PIC16F84A, đây là loại có cấu trúc đơn giản nhất để bắt đầu với vi điều khiển PIC.
Từ những kiến thức đã biết về PIC16F84A, qua đó em tìm hiểu thêm một số chức năng chính của PIC16F877A, để ứng dụng cho phù hợp với yêu cầu việc thiết kế phần cứng.
Chương 3: