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

Đồ án ngôi nhà thông minh

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 (2.19 MB, 110 trang )

Đồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Thầy Thượng Văn Bé

CHƯƠNG DẪN NHẬP
I. Đặt vấn đề:
Ngày nay với sự phát triển của công nghiệp vi điện tử, kỹ thuật số các hệ
thống điều khiển dần được tự động hóa.Với các kỹ thuật tiên tiến như vi xử lý,
vi mạch số…được ứng dụng vào lãnh vực điều khiển, thì các hệ thống điều
khiển cơ khí thô sơ, với tốc độ xử lý chậm chạm ít chính xác được thay thế
bằng các hệ thống điều khiển tự động với các lệnh chương trình đã được thiết
lập trước.
Sau thời gian học tập môn vi xử lý, với sự chỉ dẫn tận tình của Thầy, Cô.
Được sự đồng ý của khoa Điện Tử - Tin Học Trường Cao Đẳng Kỹ Thuật Cao
Thắng nhằm ứng ứng những kiến thức đã học vào thực tế qua đồ án tốt nghiệp
của mình,nhóm chúng em quyết định làm đề tài “ NGÔI NHÀ TỰ ĐỘNG”.
II. Giới hạn đề tài:
Với thời gian gần năm tuần thực hiện đề tài cũng như trình độ chuyên
môn có hạn, chúng em đã cố gắng hết sức để hoàn thành đồ án này nhưng chỉ
giải quyết được những vấn đề sau:
 Hệ Thống Cửa Tự Động
 Đo nhiệt độ trong phòng hiên thị bằng LCD, điều khiển thiết bị và
cảnh báo.
 Tự động bật đèn ngoài sân khi trời tối.
III. Mục đích nghiên cứu :
Mục đích trước hết khi thực hiện đề tài này là để hoàn tất chương trình
môn học để đủ điều kiện ra trường. Cụ thể khi nghiên cứu đề tài là chúng em
muốn phát huy những thành quả ứng dụng của vi điều khiển để váo một mạch
thực tế. Nó còn là tập tài liệu tham khảo cho các bạn sinh viên khóa sau.
Ngoài ra quá trình thực hiện đề tài là một cơ hội để chúng em tự kiểm tra
lại những kiến thức đã học ở trường. Đồng thời phát huy tính sáng tạo, khả


năng giải những vấn đề do nhu cầu đặt ra.
IV.Đối tượng nghiên cứu
- Các phương án điều khiển và xử lý dữ liệu cho hệ thống cửa tự động
-Tìm hiểu về vi xử lý PIC16F877A
- Tìm hiểu phương pháp lập trình CCS
- Tìm hiểu về cảm biến nhiệt độ LM35

SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý

Trang 5


Đồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Thầy Thượng Văn Bé

CHƯƠNG II :
VI ĐIỀU KHIỂN PIC16F877A







I : CẤU TRÚC PHẦN CỨNG CỦA PIC16F877A
II : BỘ ĐỊNH THỜI
III : MODULE CCP (Capture – Compare – PWM)
IV : BỘ BIẾN ĐỔI ADC 10 BIT
V : ĐIỆN THẾ THAM CHIẾU VÀ CÁC BỘ SO SÁNH ĐIỆN

VI: TRÌNH BIÊN DỊCH PCWH 3.227 NGÔN NGỮ LẬP TRÌNH C
(CCSC):

I : CẤU TRÚC PHẦN CỨNG CỦA PIC16F877A
1
21.1 Sơ lược về vi điều khiển PIC16F877A:
PIC 16F877A là dòng PIC phổ biến nhất hiện nay (đủ mạnh về tính năng,
40 chân, 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:
0 - 8 K Flash ROM.
1 - 368 Bytes RAM.
2 - 256 Bytes EEPROM.
3 - 5 ports (A, B, C, D, E) vào ra với tín hiệu điều khiển độc lập.
4 - 2 bộ định thời 8 bits (Timer 0 và Timer 2).
5 - Một bộ định thời 16 bits (Timer 1) 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.
6 - 2 bô CCP( Capture / Compare/ PWM).
7 - 1 bộ biến đổi AD 10 bits, 8 ngõ vào.
8 - 2 bộ so sánh tương tự (Compartor).
9 - 1 bộ định thời giám sát (WatchDog Timer).
10 - Một cổng song song 8 bits với các tín hiệu điều khiển.
11 - Một cổng nối tiếp.
12 - 15 nguồn ngắt.
13 - Có chế độ tiết kiệm năng lượng.
14 - Nạp chương trình bằng cổng nối tiếp ICSP(In-Circuit Serial
Programming)
15 - Được chế tạo bằng công nghệ CMOS

SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý


Trang 6


Đồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Thầy Thượng Văn Bé

16 - 35 tập lệnh có độ dài 14 bits.
17 - Tần số hoạt động tối đa 20MHz
18
Sơ lược chân PIC 16f877A.

SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý

Trang 7


Đồ Án Tốt Nghiệp Khóa 2006-2009

SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý

GVHD: Thầy Thượng Văn Bé

Trang 8


Đồ Án Tốt Nghiệp Khóa 2006-2009

SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý


GVHD: Thầy Thượng Văn Bé

Trang 9


Đồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Thầy Thượng Văn Bé

PIC16F877A là họ vi điều khiển có 40 chân, mỗi chân có một chức năng khác
nhau.Trong đó có một số chân đa công dụng: mỗi chân có thể hoạt động như một
đường xuất nhập hoặc là một chân chức năng đặc biệt dùng để giao tiếp với các
thiết bị ngoại vi.

SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý

Trang 10


Đồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Thầy Thượng Văn Bé

Sơ đồ Khối PIC

SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý

Trang 11



Đồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Thầy Thượng Văn Bé

1.2 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.

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.
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
→ChukỳdaođộngcủathạchanhlàTosc=1/Tosc=1/10*106 (s)

SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý


Trang 12


Đồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Thầy Thượng Văn Bé

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ư:

1.3.3 : MCRL
PIC16F877A có một bộ lọc nhiễu ở phần 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 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 xuống mức thấp).

SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý

Trang 13


Đồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Thầy Thượng Văn Bé

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 :
1- Ngắt ngoài xảy ra trên chân INT.
2- Ngắt do Timer0.
3- Ngắt do Timer1.
4- Ngắt do Timer2.
5- Ngắt do thay đổi trạng thái trên các chân PortB.
6- Ngắt so sánh điện thế.
7- Ngắt do Port song song.
8- Ngắt USART.
9- Ngắt nhận dữ liệu.
10- Ngắt truyền dữ liệu .
11- Ngắt chuyển đổi ADC.
12- Ngắt màn hình LCD.
13- Ngắt hoàn tất ghi EEPROM.
14- Ngắt module CCP.
15- Ngắt Module SSP.
* 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).

SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý

Trang 14


Đồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Thầy Thượng Văn Bé

1.3.5 Chế độ nguồn thấp Sleep (Power down Mode) :
Đây là chế độ hoạt động của VĐK 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ề không, bit TO được set, oscillator
ngưng hoạt độ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 VĐK là rất nhỏ nên ta cần thực hiện
các bước sau trước khi VĐK thực thi lệnh sleep.
1• Đưa tất cả các chân về trạng thái V DD hoặc VSS.
2• Cần đảm bảo rằng không có mạch ngoại vi nào được điều khiển bởi
dòng điện của VĐK vì dòng điện nhỏ không đủ khả năng cung cấp
cho các mạch ngoại vi hoạt động.
3• Tạm ngưng hoạt động của khối A/D và không cho phép các xung clock
bên ngoài tác dụng vào VĐK.

Để
ý chức năng điện trở kéo lên của PORTB.
4
5• Pin phải ở mức logic cao.
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ục đí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.

SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý

Trang 15


Đồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Thầy Thượng Văn Bé

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.
1• Thứ nhất, cần thời gian bao lâu để reset WDT ?
2• Thứ hai, làm sao xoá WDT ?
3• 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
độn

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 8 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.

SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý

Trang 16


Đồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Thầy Thượng Văn Bé

1.4.2 Bộ nhớ dữ liệu:
Bản đồ cấu trúc PIC 16F877A

SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý


Trang 17


Đồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Thầy Thượng Văn Bé

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: Nguyễn Thanh Huy & Hoàng Cao Quý

Trang 18


Đồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Thầy Thượng Văn Bé

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>).
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:
1- Bank 0: 96 Bytes từ địa chỉ 20h đến địa chỉ 7Fh.
2- Bank 1: 80 Bytes từ địa chỉ A0h đến địa chỉ EFh.
3- Bank 2: 96 Bytes từ địa chỉ 110h đến địa chỉ 16Fh.
4- Bank 3: 96 Bytes từ địa chỉ 190h đến địa chỉ 1EFh.


1.4.2.2 Vùng 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.

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

SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý

Trang 19


Đồ Án Tốt Nghiệp Khóa 2006-2009

SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý

GVHD: Thầy Thượng Văn Bé

Trang 20


Đồ Án Tốt Nghiệp Khóa 2006-2009

SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý

GVHD: Thầy Thượng Văn Bé

Trang 21



Đồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Thầy Thượng Văn Bé

1.4.3 Các thanh ghi chức năng đặc biệt:
SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý

Trang 22


Đồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Thầy Thượng Văn Bé

1.4.3.1 Thanh ghi 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.

Bit 7 IRP: Bit lựa chọn bank thanh ghi (Sử dụng cho định địa chỉ gián tiếp).
1 = Bank 2, 3 (100h – 1FFh )
0 = Bank 0, 1 (00h – FFh)
Bit 6 – 5 RP1 – RP0: Bit lựa chọn bank thanh ghi (Dùng trong định điạ chỉ
trực tiếp).
11 = Bank 3 ( 180h – 1FFh)
10 = Bank 2 (100h – 17Fh)
01 = Bank 1 (80h – FFh)
00 = Bank 0 (00h – 7Fh)
Each bank is 128 bytes
Bit 4 TO: Bit báo hiệu hoạt động của WDT.

1: Lệnh xóa WDT hoặc Sleep xảy ra.
0: WDT hoạt động.
Bit 3 PD: Bit báo công suất thấp ( 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.
Bit 2 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.
Bit 1 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 thấp.
0: Không có số nhớ sinh ra.
Bit 0 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.3.2 Thanh ghi tùy chọn (Option _Reg Register):
SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý

Trang 23


Đồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Thầy Thượng Văn Bé

Thanh ghi tùy chọn chứa các bit điều khiển để cấu hình cho các chứa năng
như: ngắt ngoài, Timer 0 chức năng kéo lên Vdd của các chân Port B, và thời gian
chờ của WDT

Bit 7 : 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:ChophépPORTBkéolênnguồn.
Bit 6 INTEDG: Bit lựa chọn cạnh tác động ngắt (INTERRUPT EDGE)
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
Bit 5 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.
Bit 4 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
Bit 3 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
Bit 2-0 PS2:PS0: Dùng để lựa chọn tốc độ đếm của timer hay WDT

1.4.3.3 Thanh ghi điều khiển ngắt INTCON (Interrupt Control Register):
SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý

Trang 24


Đồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Thầy Thượng Văn Bé

Bit 7 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

Bit 6 PEIE: Bit cho phép ngắt khi ghi vào EEPROM hoàn tất.
1: Cho phép ngắt ghi vào EEPROM hoạt động
0:KhôngchophépngắtghivàoEEPROMhoạtđộng
Bit 5 TMR0IE: Bit cho phép ngắt khi timer 0 tràn
1: Cho phép ngắt khi timer 0 tràn
0: Không cho phép ngắt khi timer 0 tràn
Bit 4 INTE: Bit cho phép ngắt ngoại vi trên chân RB0/INT
1: Cho phép ngắt ngoại vi
0: Không cho phép ngắt ngoại vi
Bit 3 RBIE: Cho phép ngắt khi trạng thái PORTB thay đổi
1: Cho phép
0: Không cho phép
Bit 2 TMR0IF: Cờ báo ngắt Timer 0
1: Timer 0 tràn
0: Timer 0 chưa tràn
Bit 1 INTF: Cờ báo ngắt ngoài RB0/INT
1: Có ngắt
0: Không xảy ra ngắt.
Bit 0 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.3.4 Thanh ghi cho phép ngắt ngoại vi 1(PIE1 Register):
SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý

Trang 25


Đồ Án Tốt Nghiệp Khóa 2006-2009


GVHD: Thầy Thượng Văn Bé

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:Chophé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 xảy ra khi 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

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

SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý

Trang 26


Đồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Thầy Thượng Văn Bé

Bit 7 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.
Bit 6 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
Bit 5 RCIF: Cờ báo ngắt nhận USART
1: Buffer nhận USART đầy
0: Buffer nhận USART trống.
Bit 4 TXIF: Cờ báo ngắt phát USART
1: Buffer truyền USART trống
0: Buffer truyền USART đầy
Bit 3 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ó ngắt xảy ra
Bit2 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: Khi các giá trị so sánh trong thanh ghi TMR1 được thỏa ( phải được xóa bằng
phần mềm)
0: Khi các giá trị so sánh trong thanh ghi TMR1 không được thỏa
Chế độ PWM: Không sử dụng trong 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)
SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý

Trang 27


Đồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Thầy Thượng Văn Bé

0: Thanh ghi TMR1 chưa tràn
1.4.3.6 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 ngọai vi nào
xảy ra.
Bit 7,5,2,1 Unimplemented : read as ‘0’
Bit 6 CMIE: Bit cho phép ngắt do bộ so sánh điện thế
1: Cho phép
0: Không cho phép
Bit 4 EEIE: Bit cho phép ngắt do ghi EEPROM

1: Cho phép
0: Không cho phép
Bit 3 BCLIE: Bit cho phép ngắt do xung đột bus
1: Cho phép
0: Không cho phép
Bit 0 CCP2IE: Cho phép ngắt module CCP2
1: Cho phép
0:Khôngchophép
1.4.3.7 Thanh ghi cờ của các ngắt ngoại vi 2:

Bit 7,5,2,1 Unimplemented : read as ‘0’
Bit 6 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.
SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý

Trang 28


Đồ Án Tốt Nghiệp Khóa 2006-2009

GVHD: Thầy Thượng Văn Bé

Bit 3 BCLIF: Cờ báo ngắt do xung đột bus
1: Xung đột bus đã xuất hiện trong chế độ SSP
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 thanh ghi TMR1
Chế độ Compare (So sánh):
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.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
thêm hai ví dụ sau đây để hiểu thêm về
hoạt động của bộ đếm chương trình
PC.

1.4.5 Ngăn xếp Stack:
Stack cho phép 8 lệnh gọi chương trình con và ngắt hoạt động. Stack chứa
địa chỉ mà chương trình chính sẽ quay về thực hiện từ sau chương trình con hay
ngắt. Đối với PIC16F877A Stack có độ sâu 8 lớp. Stack không nằm trong cả bộ
nhớ chương trình lẫn bộ nhớ dữ liệu.
1.4.6 Địa chỉ trực tiếp và địa chỉ gián tiếp, thanh ghi INF và thanh ghi FSR:
Thanh ghi INF không phải là một thanh ghi vật lí. Nó chứa giá trị của thanh

ghi có địa chỉ nằm ở thanh ghi FSR.
SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý

Trang 29


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

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