Tải bản đầy đủ (.doc) (71 trang)

Báo cáo KIT THỰC tập PIC

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 (1.97 MB, 71 trang )

KIT THỰC TẬP PIC

GVHD:LẠI NGUYỄN DUY

Chương 1:
CẤU TRÚC BÊN TRONG CỦA VI ĐIỀU
KHIỂN PIC 16F877A
1.1 Sơ lược về Vi điều khiển PIC 16F877A:
PIC 16F877A là dòng PIC phổ biến nhất hiện nay (đủ mạnh về tính năng,
bộ nhớ đủ cho hầu hết các ứng dụng thông thường).Cấu trúc tổng quát của
PIC 16F877A như sau:
-8 K Flash ROM.
-368 Bytes RAM.
-256 Bytes EEPROM.
-5 ports (A, B, C, D, E) vào ra với tín hiệu điều khiển độc lập.
-2 bộ định thời 8 bits (Timer 0 và Timer 2).
-Một bộ định thời 16 bits (Timer1) có thể hoạt động trong chế độ tiết
kiệm năng lượng (Sleep Mode )với nguồn xung clock ngoài.
-2 bộ CCP( Capture / Compare/ PWM).
-1 bộ biến đổi AD 10 bits, 6 ngõ vào.
-2 bộ so sánh tương tự (Compartor).
-1 bộ định thời giám sát (WatchDog Timer).
-Một cổng song song 8 bits với các tín hiệu điều khiển.
-Một cổng nối tiếp.
-15 nguồn ngắt.
-Có chế độ tiết kiệm năng lượng.
-Nạp chương trình bằng cổng nối tiếp ICSP.
-35 tập lệnh có độ dài 14 bits.
-Tần số hoạt động tối đa 20MHz.

SVTH:VÕ THANH BÌNH


NGÔ QUANG ĐẠT

3


KIT THỰC TẬP PIC

GVHD:LẠI NGUYỄN DUY

1.2 Sơ lược về các chân của PIC 16F877A:

Hình 1.1

Hình 1.2

SVTH:VÕ THANH BÌNH
NGÔ QUANG ĐẠT

4


KIT THỰC TẬP PIC

SVTH:VÕ THANH BÌNH
NGÔ QUANG ĐẠT

GVHD:LẠI NGUYỄN DUY

5



KIT THỰC TẬP PIC

SVTH:VÕ THANH BÌNH
NGÔ QUANG ĐẠT

GVHD:LẠI NGUYỄN DUY

6


KIT THỰC TẬP PIC

SVTH:VÕ THANH BÌNH
NGÔ QUANG ĐẠT

GVHD:LẠI NGUYỄN DUY

7


KIT THỰC TẬP PIC

GVHD:LẠI NGUYỄN DUY

Hình 1.3

SVTH:VÕ THANH BÌNH
NGÔ QUANG ĐẠT


8


KIT THỰC TẬP PIC

GVHD:LẠI NGUYỄN DUY

1.3 Một số điểm đặc biệt của CPU:
1.3.1 Dao động:
PIC16F877A có thể hoạt động trong bốn chế độ dao động khác nhau:

Trong các chế độ LP,XT và HS chúng
ta sử dụng thạch anh dao động nối
vào các chân OSC1 và OSC2 để tạo
dao động.

Hình 1.4
Việc lựa chọn tụ trong dao động thạch anh dựa vào bảng sau:

Lưu ý: Tụ có giá trị lớn sẽ tăng tính ổn định của dao động nhưng cũng làm
tăng thời gian khởi động.
SVTH:VÕ THANH BÌNH
NGÔ QUANG ĐẠT

9


KIT THỰC TẬP PIC

GVHD:LẠI NGUYỄN DUY


Chế độ dao động RC được sử dụng như một giải pháp tiết kiệm trong các
ứng dụng không cần sự chính xác về thời gian.

* Cách tính chu kì máy:
Ví dụ ta sử dụng thạch anh 10Mhz. Khi đó:
Tần số dao động của thạch anh là Fosc = 10Mhz
→ Chu kỳ dao đông của thạch anh là Tosc = 1/Tosc= 1/10*106 (s)
Chu kỳ máy:
T_instruction = 4*Tosc = 4/10*106(s) = 0.4 µs = 400 ns
1.3.2 Reset:
PIC16F877A có thể bị reset bởi nhiều nguyên nhân khác nhau như:

SVTH:VÕ THANH BÌNH
NGÔ QUANG ĐẠT

10


KIT THỰC TẬP PIC

SVTH:VÕ THANH BÌNH
NGÔ QUANG ĐẠT

GVHD:LẠI NGUYỄN DUY

11


KIT THỰC TẬP PIC


GVHD:LẠI NGUYỄN DUY

1.3.3 MCLR:
PIC16F877A có một bộ lọc nhiễu ở phần MCLR. Bộ lọc nhiễu này

sẽ
phát hiện và bỏ qua các tín hiệu nhiễu.
Ngõ vào MCLR trên chân 4 của PIC16F877A .Khi đưa chân này
xuống thấp thì các thanh ghi bên trong VĐK sẽ được tải những giá trị
thích hợp để khởi động lại hệ thống.
(Lưu ý: reset do WDT không làm chân MCLR cuống mức thấp).

1.3.4 Interrupts:
PIC16F877A có nhiều nguồn ngắt khác nhau. Đây là một số ngắt tiêu
biểu:
- Ngắt ngoài xảy ra trên chân INT.
- Ngắt do Timer0.
- Ngắt do Timer1.
- Ngắt do Timer2.
- Ngắt do thay đổi trạng thái trên các chân PortB.
- Ngắt so sánh điện thế.
- Ngắt do Port song song.
- Ngắt USART.
- Ngắt nhận dữ liệu.
- Ngắt truyền dữ liệu .
- Ngắt chuyển đổi ADC.
- Ngắt màn hình LCD.
- Ngắt hoàn tất ghi EEPROM.
- Ngắt module CCP.

- Ngắt Module SSP.

SVTH:VÕ THANH BÌNH
NGÔ QUANG ĐẠT

12


KIT THỰC TẬP PIC

GVHD:LẠI NGUYỄN DUY

* Các thanh ghi chức năng ngắt: INTCON,PIE1,PIR1, PIE2,PIR2 (các
thanh ghi này sẽ được nghiên cứu ở các phần sau).

1.3.5 Chế độ nguồn thấp Sleep (Power down Mode) :
Đây là chế độ hoạt động của vi điều khiển khi
lệnh SLEEP được thực thi. Khi đó nếu được cho phép hoạt
động, bộ đếm của WDT sẽ bò xóa nhưng WDT vẫn tiếp
tục hoạt động, bit PD (STATUS<3>) được reset về 0, bit TO
được set, oscillator ngưng tác động và các PORT giữ
nguyên trạng thái như trước khi lệnh SLEEP được thực thi.
Do khi ở chế độ SLEEP, dòng cung cấp cho vi điều khiển
là rất nhỏ nên ta cần thực hiện các bước sau trước
khi vi điều khiển thực thi lệnh SLEEP:
Đưa tất cả các pin về trạng thái VDD hoặc VSS .
Tạm ngưng hoạt động cuả khối A/D và không cho
phép các xung clock từ bên ngoài tác động vào vi
điều khiển.
Để ý đến chức năng kéo lên điện trở ở PORTB.

Pin MCLR phải ở mức logic cao.

Đánh thức vi điều khiển.
-Tác động của reset ngoại vi thông qua pin MCLR .
-Tác động của WDT khi bò tràn.
-Tác động từ các ngắt ngoại vi từ PORTB (PORTB
Interrupt on change hoặc pin INT). Các bit PD và TO được
dùng để thể hiện trạng thái của vi điều khiển và để
phát hiện nguồn tác động làm reset vi điều khiển. Bit
PD được set khi vi điều khiển được cấp nguồn và được
SVTH:VÕ THANH BÌNH
NGƠ QUANG ĐẠT

13


KIT THỰC TẬP PIC

GVHD:LẠI NGUYỄN DUY

reset về 0 khi vi điều khiển ở chế độ sleep. Bit TO được
reset về 0 khi WDT tác động do bộ đếm bò tràn.
Ngoài ra còn có một số nguồn tác động
khác từ các chức năng ngoại vi bao gồm:
-Đọc hay ghi dữ liệu thông qua PSP (Parallel Slave Port).
-Ngắt Timer1 khi hoạt động ở chế độ đếm bất đồng
bộ.
-Ngắt CCP khi hoạt động ở chế độ Capture.
-Các hiện tượng đặc biệt làm reset Timer1 khi hoạt
động ở chế độ đếm bất đồng

bộ dùng nguồn xung clock ở bên ngoài).
- Ngắt SSP khi bit Start/Stop được phát hiện.
-SSP hoạt động ở chế độ Slave mode khi truyền hoặc
nhận dữ liệu.
-Tác động của USART từ các pin RX hay TX khi hoạt
động ở chế độ Slave mode đồng bộ.
-Khối chuyển đổi A/D khi nguồn xung clock hoạt động ở
dạng RC.
-Hoàn tất quá trình ghi vào EEPROM.
-Ngõ ra bộ so sánh thay đổi trạng thái. Các tác động
ngoại vi khác không có tác dụng đánh thức vi điều
khiển vì khi ở chế độ sleep các xung clock cung cấp cho
vi điều khiển ngưng hoạt động. Bên cạnh đó cần cho
phép các ngắt hoạt động trước khi lệnh SLEEP được
thực thi để bảo đảm tác động của các ngắt. Việc
đánh thức vi điều khiển từ các ngắt vẫn được thực thi
bất chấp trạng thái của bit GIE. Nếu bit GIE mang giá trò
0, vi điều khiển sẽ thực thi lệnh tiếp theo sau lệnh SLEEP
của chương trình (vì chương trình ngắt không được cho
phép thực thi). Nếu bit GIE được set trước khi lệnh SLEEP
được thực thi, vi điều khiển sẽ thực thi lệnh tiếp theo
của chương trình và sau đó nhảy tới đòa chỉ chứa
chương trình ngắt (0004h). Trong trường hợp lệnh tiếp theo
không đóng vai trò quan trọng trong chương trình, ta cần
đặt thêm lệnh NOP sau lệnh SLEEP để bỏ qua tác động
của lệnh này, đồng thời giúp ta dễ dàng hơn trong
việc kiểm soát hoạt động của chương trình ngắt. Tuy
nhiên cũng có một số điểm cần lưu ý như sau:
Nếu ngắt xảy ra trước khi lệnh SLEEP được thực thi,
lệnh SLEEP sẽ không được thực thi và thay vào đó là

lệnh NOP, đồng thời các tác động của lệnh SLEEP
cũng sẽ được bỏ qua.
Nếu ngắt xảy ra trong khi hay sau khi lệnh SLEEP
được thực thi, vi điều khiển lập tức được đánh thức từ

SVTH:VÕ THANH BÌNH
NGƠ QUANG ĐẠT

14


KIT THỰC TẬP PIC

GVHD:LẠI NGUYỄN DUY

chế độ sleep, và lệnh SLEEP sẽ được thực thi ngay sau
khi vi điều khiển được đánh thức.
Để kiểm tra xem lệnh SLEEP đã được thực thi hay
chưa, ta kiểm tra bit PD . Nếu bit PD vẫn mang giá trò 1
tức là lệnh SLEEP đã không được thực thi và thay vào
đó là lệnh NOP.
Bên cạnh đó ta cần xóa WDT để chắc chắn rằng WDT
đã được xóa trước khi thực thi lệnh SLEEP, qua đó cho
phép ta xác đònh được thời điểm vi điều khiển được
đánh thức do tác động của WDT.

SVTH:VÕ THANH BÌNH
NGƠ QUANG ĐẠT

15



KIT THỰC TẬP PIC

GVHD:LẠI NGUYỄN DUY

1.3.6 Bộ định thời giám sát (Watch Dog Timer -WDT):
Giả sử bạn viết một chương trình, bạn mong đợi chương trình này sẽ chạy
nếu không có gì trục trặc xảy ra thì nó sẽ không bao giờ dừng lại, như vậy bạn
phải làm một vòng lặp để khi chương trình chạy đến điểm cuối thì nó lại quay trở
về điểm bắt đầu. Nhưng mà hãy xem một trường hợp: Giả sử chương trình kiểm
tra một chân input, nếu nó lên mức cao thì con Pic sẽ tiếp tục kiểm tra một chân
input thứ hai có lên mức cao hay không, nếu chân input thứ hai không lên mức
cao, con Pic sẽ ngồi đó chờ và nó sẽ chỉ thoát ra khỏi chỗ ngồi của nó nếu chân
input thứ hai lên mức cao.
Bây giờ hãy xem một trường hợp khác, giả sử như bạn viết một chương
trình, bạn compiled nó thành công, và ngay cả bạn đã cho chạy mô phỏng từng
bước, từng bước một trên máy tính, bằng MPLAB chẳng hạn, có vẽ như mọi
chuyện đều tốt, bạn đem nạp vào con Pic. Sau một thời gian chạy thử, con Pic
thình lình bị kẹt vào nơi nào đó trong chương trình mà không thể thoát ra được
trạng thái hiện tại. Điều gì là cần thiết để giải quyết hai trường hợp trên, reset lại
hay vẫn để cho nó bị kẹt không thoát ra được ?, đó là mụch đích của mạch
watchdog.
Mạch watchdog thì không phải là mới mẽ gì, có rất nhiều microprocessors và
microcontrollers đã có mạch watchdog, nhưng mà nó làm việc ra sao?.
Bên trong con Pic có một mạch RC, mạch này cung cấp 1 xung Clock độc
lập với bất kỳ xung Clock nào cung cấp cho Pic. Khi Watchdog Timer (viết tắt là
WDT) được cho phép (enabLed), nó sẽ đếm bắt đầu từ 00 và tăng lên 1 cho đến
FFh, khi nó tăng từ FFh đến 00 ( FFh+1) thì con Pic sẽ bị Reset bất kể đang làm
gì, chỉ có 1 cách là ngăn không cho WDT đếm tới 00.

Khi con Pic bị kẹt không thể thoát ra khỏi tình trạng hiện tại thì WDT vẫn
tiếp tục đếm mà không bị bất kỳ điều gì ngăn cấm nó đếm tới FF và đến FF+1, vì
vậy nó sẽ reset con Pic làm cho chương trình phải khởi động lại từ đầu.
Để sử dụng WDT chúng ta cần làm 3 việc.
Thứ nhất, cần thời gian bao lâu để reset WDT?.
Thứ hai, làm sao xoá WDT?.
Cuối cùng, chúng ta phải nói cho con Pic biết chương trình cho phép WDT hoạt
động.

SVTH:VÕ THANH BÌNH
NGÔ QUANG ĐẠT

16


KIT THỰC TẬP PIC

GVHD:LẠI NGUYỄN DUY

1.4. Tổ chức bộ nhớ:
PIC16F877A có tất cả 3 khối bộ nhớ riêng biệt bao gồm: Bộ nhớ chương
trình, Bộ nhớ dữ liệu và Bộ nhớ EEPROM.

1.4.1 Bộ nhớ chương trình
PIC16F877A có bộ đếm chương trình dài 13 bits có thể định địa chỉ cho khoảng
không gian nhớ 8K x 14bits. Không gian bộ nhớ này được chia làm 4 trang, có
địa chỉ từ 0005h đến 1FFFh.
Mọi sự truy cập ngoài vùng không gian nhớ này sẽ không có tác dụng.
Ngoài ra, bộ nhớ chương trình còn bao gồm một ngăn xếp (Stack) 8 mức.
Vector Reset được đặt tại địa chỉ 0000h và vector ngắt được đặt tại địa chỉ

0004h.
1.4.2 Bộ nhớ dữ liệu

SVTH:VÕ THANH BÌNH
NGÔ QUANG ĐẠT

17


KIT THỰC TẬP PIC

GVHD:LẠI NGUYỄN DUY

Bộ nhớ dữ liệu bao gồm 4 Bank: Bank 0, Bank1, Bank2 và Bank3. Mỗi
bank có dung lượng 128 Bytes, bao gồm vùng Ram đa mục đích (GPR) và vùng
thanh ghi chức năng đặc biệt (SFR).
SVTH:VÕ THANH BÌNH
NGÔ QUANG ĐẠT

18


KIT THỰC TẬP PIC

GVHD:LẠI NGUYỄN DUY

Các Bank này được lựa chọn bằng 2 bit ở thanh ghi STATUS là
RP0(Status<5>) và RP1(Status<6>).
BẢNG 1.5


1.4.2.1 Vùng Ram đa mục đích
Vùng RAM đa mục đích có chiều rộng 8 bit và có thể được truy nhập trực tiếp
hoặc gián tiếp thông qua thanh ghi FSR. Vùng RAM đa mục đích đựơc phân
phối ở các Bank như sau:
- Bank 0: 96 Bytes từ địa chì 20h đến địa chỉ 7Fh.
- Bank 1: 80 Bytes từ địa chì A0h đến địa chỉ EFh.
- Bank 2: 96 Bytes từ địa chì 110h đến địa chỉ 16Fh.
- Bank 1: 96 Bytes từ địa chì 190h đến địa chỉ 1EFh.
1.4.2.2 Vùng Ram thanh ghi chức năng đặc biệt
Các thanh ghi chức năng đặc biệt được sử dụng bởi bộ xử lí trung tâm
CPU hoặc các module ngoại vi để điều khiển hoạt động của VĐK. Các thanh ghi
chức năng đặc biệt này được chia làm 2 loại: loại thứ nhất dùng cho các chức
năng của CPU, loại thứ 2 dùng cho các chức năng ngoại vi.

SVTH:VÕ THANH BÌNH
NGÔ QUANG ĐẠT

19


KIT THỰC TẬP PIC

GVHD:LẠI NGUYỄN DUY

Bảng tóm tắt các thanh ghi chức năng đặc biệt:

SVTH:VÕ THANH BÌNH
NGÔ QUANG ĐẠT

20



KIT THỰC TẬP PIC

GVHD:LẠI NGUYỄN DUY

1.4.2.3 Các thanh ghi chức năng đặc biệt
1.4.2.3.1 Thanh gi trạng thái (status register)
Thanh ghi trạng thái chứa các trạng thái số học của bộ ALU, trạng thái Reset và
các bit chọn Bank của bộ nhớ dữ liệu.

SVTH:VÕ THANH BÌNH
NGÔ QUANG ĐẠT

21


KIT THỰC TẬP PIC

GVHD:LẠI NGUYỄN DUY

Bit 6 – 5
trực tiếp)

RP1 – RP0: bit lựa chọn bank thanh ghi (Dùng trong định điạ chỉ

Bit 4

TO: time out bit
1: Lệnh xóa WDT hoặc Sleep xảy ra.

0: WDT hoạt động.
PD: Power down bit
1: Sau khi nguồn tăng hoặc có lệnh xóa WDT
0: Thực thi lệnh Sleep
Z: bit Zero
1: Khi kết quả của một phép toán bằng 0.
0: Khi kết quả của một phép toán khác 0.
DC: Digit Carry
1: Có một số nhớ được sinh ra bởi phép cộng hoặc phép trừ 4 bit

Bit 3
Bit 2
Bit 1
thấp.
Bit 0

0: không có số nhớ sinh ra.
C: cờ nhớ (Carry Flag)
1: Có một số nhớ sinh ra bởi phép cộng hoặc phép trừ.
0: Không có số nhớ sinh ra.

1.4.2.3.2 Thanh ghi tùy chọn (Option _Reg Register)

Bit 7
Bit 6
Bit 5
Bit 4
Bit 3

RBPU: bit cho phép PORTB được kéo lên nguồn

1: Không cho phép PORTB kéo lên nguồn.
0: Cho phép PORTB kéo lên nguồn.
INTEDG: bit lựa chọn cạnh tác động ngắt
1: Ngắt sẽ được tác động bởi cạnh lên của chân RB0/INT
0: Ngắt sẽ được tác động bởi cạnh xuống của chân RB0/INT
T0CS: bit lựa chọn nguồn xung Clock cho Timer 0
1: Xung Clock cung cấp bởi nguồn ngoài qua chân RA4/T0CKI
0: Xung Clock cung cấp bởi nguồn dao động nội.
T0SE: bit lựa chọn cạnh nào của xung clock tác động lên timer 0
1: cạnh xuống
0: cạnh lên
PSA: bit quyết định tốc độ đếm PS2:PS0 sẽ tác động lên Timer 0
hay WDT
1: tốc độ đếm PS2:PS0 sẽ tác động lên WDT
0: tốc độ đếm PS2:PS0 sẽ tác động lên Timer 0

SVTH:VÕ THANH BÌNH
NGÔ QUANG ĐẠT

22


KIT THỰC TẬP PIC

Bit 2-0

GVHD:LẠI NGUYỄN DUY

PS2:PS0: Dùng để lựa chọn tốc độ đếm
Thời gian tràn WDT

18 ms
36ms
72ms
144ms
288ms
576ms
1.1s
2.2s

1.4.2.3.3 Thanh ghi điều khiển ngắt INTCON (Interrupt Control Register):

Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0

GIE: bit cho phép ngắt toàn cục
1: Cho phép ngắt toàn cục
0: không cho phép ngắt
PEIE: bit cho phép ngắt ngọai vi
1: cho phép ngắt ngoại vi
0: không cho phép
TMR0IE: bit cho phép ngắt khi timer 0 tràn
1: cho phép
0: không cho phép
INTE:bit cho phép ngắt ngoài RB0/INT

1: cho phép
0: không cho phép
RBIE: cho phép ngắt khi trạng thái PORTB thay đổi
1: cho phép
0: không cho phép
TMR0IF: cờ báo ngắt Timer 0
1: Timer0 tràn
0: timer 0 chưa tràn
INTF: cờ báo ngắt ngoài RB0/INT
1: có ngắt
0: không xảy ra ngắt.
RBIF: cờ báo ngắt khi có thay đổi trạng thái PORTB
1: có thay đồi
0: không có thay đổi xảy ra trên PORTB

1.4.2.3.4 Thanh ghi cho phép ngắt ngoại vi 1:

SVTH:VÕ THANH BÌNH
NGÔ QUANG ĐẠT

23


KIT THỰC TẬP PIC

GVHD:LẠI NGUYỄN DUY

Chú ý: Bit PEIE (INTCON<6>) phải được set để cho phép bất kì ngắt ngọai
vi nào xảy ra.
Bit 7

PSPIE: bit cho phép ngắt đọc/ ghi Port song song
1: cho phép
0: không cho phép
Bit 6
ADIE: bit cho phép ngắt chuyển đổi A/D
1: cho phép
0: không cho phép
Bit 5
RCIE: bit cho phép ngắt nhận USART
1: cho phép
0: không cho phép
Bit 4
TXIE: bit cho phép ngắt truyền USART
1: cho phép
0: không cho phép
Bit 3
SSPIE: bit cho phép ngắt Port nối tiếp đồng bộ
1: cho phép
0: không cho phép
Bit 2
CCP1IE: bit cho phép ngắt module CCP1
1: cho phép ngắt
0: không cho phép
Bit 1
TMR2IE: bit cho phép ngắt khi thanh ghi TMR2 bẳng thanh ghi
PR2
1: cho phép
0: không cho phép
Bit 0
TMR1IE: bit cho phép ngắt tràn TMR1

1: cho phép
0: không cho phép

SVTH:VÕ THANH BÌNH
NGÔ QUANG ĐẠT

24


KIT THỰC TẬP PIC

GVHD:LẠI NGUYỄN DUY

1.4.2.3.4 Thanh ghi cờ của các ngắt ngoại vi 1:

Bit 7
Bit 6
Bit 5
Bit 4
Bit 3

Bit 2

PSPIF: cờ ngắt đọc ghi của Port song song
1: một hoạt động đọc/ghi đã diễn ra (phải xóa bằng phần mềm)
0: không có hoạt động đọc/ghi.
ADIF: cờ báo ngắt chuyển đổi A/D
1: một quá trình chuyển đổi A/D đã hoàn thành
0: chuyển đổi A/D chưa hoàn tất
RCIF: cờ báo ngắt nhận USART

1: Buffer nhận USARt đầy
0: Buffer nhận USART trống.
TXIF: cờ báo ngắt phát USART
1: buffer truyền USART trống
0: buffer truyền USART đầy
SSPIF: cờ báo ngắt port nối tiếp đồng bộ (ngắt SSP)
1: ngắt SSP xảy ra và phải được xóa bằng phần mềm trước khi trở
lại chương trình chính từ chương trình phục vụ ngắt.
0: không có nắgt xảy ra
CCP1IF: cờ báo ngắt CCP1
Chế độ Capture (Bắt giữ):
1: một capture thanh ghi TMR1 xảy ra( phải được xóa bằng phần

mềm)
0: không xảy ra capture thanh ghi TMR1
Chế độ Compare ( So sánh):
1: một thuật toán so sánh thanh ghi TMR1 xảy ra ( phải được xóa
bằng phần mềm)
0: không xảy ra thuật toán so sánh
Chế độ PWM: không sử dụng trog chế độ này
Bit 1
TMR2IF: cờ báo ngắt xảy ra khi giá trị trong thanh ghi TMR2 bằng
trong thanh ghi PR2
1: giá trị trong thanh ghi TMR2 bằng thanh ghi PR2 (phải được
xóa bằng phần mềm)
0: giá trị trong thanh ghi TMR2 chưa bằng thanh ghi PR2
Bit 0
TMR1IF: cờ báo tràn thanh ghi TMR1
1: thanh ghi TMR1 tràn (phải được xóa bắng phần mềm)
0: thanh ghi TMR1 chưa tràn


SVTH:VÕ THANH BÌNH
NGÔ QUANG ĐẠT

25


KIT THỰC TẬP PIC

GVHD:LẠI NGUYỄN DUY

1.4.2.3.5 Thanh ghi cho phép ngắt ngoại vi 2:

Chú ý: Bit PEIE (INTCON<6>) phải được set để cho phép bất kì ngắt ngoại
vi nào xảy ra.
Bit 7,5,2,1
Bit 6
Bit 4
Bit 3
Bit 0

Unimplemented : read as ‘0’
CMIE: bi cho phép ngắt do bộ so sánh điện thế
1: cho phép
0: không cho phép
EEIE: bi cho phép ngắt do ghi EEPROM
1: cho phép
0: không cho phép
BCLIE: bit cho phép ngắt do xung đột bus
1: cho phép

0: không cho phép
CCP2IE: cho phép ngắt d0 module CCP2
1: cho phép
0: không cho phép

1.4.2.3.6 Thanh ghi cờ của các ngắt ngọai vi 2:

Bit 7,5,2,1
Bit 6

Unimplemented : read as ‘0’
CMIF: cờ báo ngắt do bộ so sánh
1: ngõ vào bộ so sánh đã thay đổi (phải được xóa bằng phần mềm)
0: ngõ vào bộ so sánh không thay đổi.
Bit 4
EEIF: cờ báo ngắt ghi EEPROM
1: ghi EEPROM hoàn tất (phải được xóa bằng phần mềm)
0: ghi EEPROM chưa hoàn tất.
Bit 3
BCLIF: cờ báo ngắt do xung đột bus
1: xung đột bus đã xuất hiện
0: không có xung đột bus xảy ra
Bit 0
CCP2IF: cờ báo ngắt CPP2
Chế độ Capture (bắt giữ):
1: một sự bắt giữ thanh ghi TMR1 đã xảy ra (phải được xóa bằng
phần mềm)
0: không xảy ra capture thnh ghi TMR1
Chế độ Compare (So sánh):
SVTH:VÕ THANH BÌNH

NGÔ QUANG ĐẠT

26


KIT THỰC TẬP PIC

GVHD:LẠI NGUYỄN DUY

1: một thuật toán so sánh trong thanh ghi TMR1 xảy ra( phải được
xóa bằng phần mềm)
0: không xảy ra thuật toán so sánh
1.4.2.3.7 Thanh ghi điều khiển nguồn (Power control register):

Bit 7-2
Bit 1
Bit 0

Unimplemented : read as ‘0’
POR:
BOR:
1.4.2.4 PCL và PCLATH:

Bộ đếm chương trình PC (program counter) có độ dài 13 bit, được dùng để chứa
địa chỉ của lệnh được thực thi kế tiếp. Byte thấp chứa trong thanh ghi PCL có thể
đọc/ghi một cách trực tiếp. Các bit cao (bit 12:8) chứa trong thanh ghi PCLATH ,
không thể đọc nhưng có thể ghi gián tiếp bằng cách sử dụng thanh ghi PCLATH.
Khi có bất kỳ sự Reset nào xảy ra , các bit cao của bộ đếm chương trình PC sẽ bị
xóa. Xem them hai ví dụ sau đây để hiểu thêm về hoạt động của bộ đếm chương
trình PC.

1.4.2.5 Ngăn xếp Stack:
SVTH:VÕ THANH BÌNH
NGÔ QUANG ĐẠT

27


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×