Đồ án Đo và điều khiển nhiệt độ

PIC là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip Technology. Dòng PIC đầu tiên là PIC1650 được phát triển bởi Microelectronics Division thuộc General_Instrument. PIC bắt nguồn từ chữ viết tắt của “Programmable Intelligent Computer” (Máy tính khả trình thông minh) là một sản phẩm của hãng General Instruments đặt cho dòng sản phẩm đầu tiên của họ là PIC1650. Lúc này, PIC 1650 được dùng để giao tiếp với các thiết bị ngoại vi cho máy chủ 16 bit CP1600, vì vậy, người ta cũng gọi PIC với tên “Peripheral Interface Controller” (Bộ điều khiển giao tiếp ngoại vi).

doc63 trang | Chia sẻ: diunt88 | Lượt xem: 2464 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đồ án Đo và điều khiển nhiệt độ, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
LỜI CẢM ƠN Trước tiên em xin chân thành cảm ơn toàn thể thầy cô trường Cao Đẳng Kỷ Thuật Cao Thắng , những người đã tạo điều kiện cho em có cơ hội nghiên cứu và tìm hiểu sâu rộng về lĩnh vực điện tử, đặc biệt là thầy Nguyễn Trọng Khanh đã tận tình hướng dẫn và giúp đỡ chúng em trong thời gian thực hiện đề tài. Đồng thời chúng em cũng gửi lời cảm ơn tới gia đình và bạn bè đã giúp đỡ em trong thời gian qua. Có được sự giúp đỡ nhiệt tình đó cộng với sự cố gắng của bản thân nên em đã hoàn thành được đề tài đúng thời hạn. Với sự hiểu biết còn hạn chế và thời gian thực hiện đề tài không nhiều nên đề tài không tránh khỏi những sai sót. Rất cảm ơn sự hướng dẫn và góp ý của quý thầy cô và bạn bè cho đề tài được hoàn chỉnh hơn. Em xin chân thành cảm ơn! Sinh viên thực hiện Lý Nguyên Hà NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ((( Tp Hồ Chí Minh, ngày… tháng… năm 2009 Giáo viên hướng dẫn Ký tên Thầy Giáo Nguyễn Trọng Khanh NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN ((( Tp HCM, ngày… tháng… năm 2009 Giáo viên phản biện MỤC LỤC PHẦN 1 : LÝ THUYẾT I. Giới thiệu về vi điều khiển PIC 16F877A 1.1. Giới thiệu chung 1.2. Giới thiệu về PIC 16F8XX và PIC 16F877A 1.3. Sơ đồ chân , cấu trúc và chức năng PIC 16F877A loại 40 chân PDIP II. Cặp nhiệt điện 2.1. Buổi ban đầu của thiết bị đo nhiệt độ 2.2. Các loại cảm biến hiện tại 2.3. Thermocouple PHẦN 2 : THIẾT KẾ I. Cấu trúc phần cứng tổng quát II. Cấu trúc chi tiết 2.1. Khối nguồn 2.2. Khối hiển thị 2.3. Khối xử lý trung tâm 2.4. Khối cảm biến 2.5. Khối mạch điều khiển 2.6 Khối giao tiếp III. Lưu đồ giải thuât chương trình IV.Thông số các linh kiện sử dụng trong mạch V.chương trình  I. GIỚI THIỆU VỀ VI ĐIỀU KHIỂN PIC 16F877A 1.1. Giới thiệu chung 1.1.1 Tổng quan về họ Vi điều khiển PIC PIC là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip Technology. Dòng PIC đầu tiên là PIC1650 được phát triển bởi Microelectronics Division thuộc General_Instrument. PIC bắt nguồn từ chữ viết tắt của “Programmable Intelligent Computer” (Máy tính khả trình thông minh) là một sản phẩm của hãng General Instruments đặt cho dòng sản phẩm đầu tiên của họ là PIC1650. Lúc này, PIC 1650 được dùng để giao tiếp với các thiết bị ngoại vi cho máy chủ 16 bit CP1600, vì vậy, người ta cũng gọi PIC với tên “Peripheral Interface Controller” (Bộ điều khiển giao tiếp ngoại vi). CP1600 là một CPU tốt, nhưng lại kém về các hoạt động xuất nhập, và vì vậy PIC 8-bit được phát triển vào khoảng năm 1975 để hỗ trợ hoạt động xuất nhập cho CP1600. PIC sử dụng microcode đơn giản đặt trong ROM, và mặc dù, cụm từ RISC chưa được sử dụng thời bấy giờ, nhưng PIC thực sự là một vi điều khiển với kiến trúc RISC, chạy một lệnh một chu kỳ máy (4 chu kỳ của bộ dao động). Năm 1985 General Instruments bán bộ phận vi điện tử của họ, và chủ sở hữu mới hủy bỏ hầu hết các dự án – lúc đó quá lỗi thời. Tuy nhiên, PIC được bổ sung EPROM để tạo thành 1 bộ điều khiển vào ra khả trình. Ngày nay rất nhiều dòng PIC được xuất xưởng với hàng loạt các module ngoại vi tích hợp sẵn (như USART, PWM, ADC…), với bộ nhớ chương trình từ 512 Word đến 32K Word. 1.1.2. Một số đặc tính của Vi điều khiển PIC Hiện nay có khá nhiều dòng PIC và có rất nhiều khác biệt về phần cứng, nhưng chúng ta có thể điểm qua một vài nét như sau : 8/16 bit CPU, xây dựng theo kiến truc Harvard có sửa đổi Flash và ROM có thể tuỳ chọn từ 256 byte đến 256 Kbyte Các cổng Xuất/ Nhập (I/ O ports) (mức logic thường từ 0V đến 5.5V, ứng với logic 0 và logic 1) 8/16 bit Timer Các chuẩn giao tiếp nối tiếp đồng bộ/ khung đồng bộ USART Bộ chuyển đổi ADC Analog-to-digital converters, 10/12 bit Bộ so sánh điện áp (Voltage Comparator) Các module Capture/ Compare/ PWM LCD MSSP Peripheral dựng cho các giao tiếp I2 C, SPI, I2 S Bộ nhớ nội EPROM – có thể ghi/ xoá lớn tới 1 triệu lần Module Điều khiển động cơ, đọc encoder Hỗ trợ giao tiếp USB Hỗ trợ giao tiếp CAN Hỗ trợ giao tiếp LIN Hỗ trợ giao tiếp IrDA Một số dòng có tích hợp bộ RF (PIC16f639, và rfPIC) KEELOQ mờ hoá và giải mờ DSP những tính năng xử lý tín hiệu số (dsPIC) Đặc điểm thực thi tốc độ cao của RISC CPU của họ vi diều khiển PIC16F87XA : Chỉ gồm 35 lệnh đơn. Tất cả các lệnh là 1chu kỳ ngoại trừ chương trình con là 2 chu kỳ. Tốc độ hoạt động : *DC- 20MHz ngõ vào xung clock. *DC- 200ns chu kỳ lệnh. Độ rộng của bộ nhớ chương trình Flash là 8K x 14word, của bộ nhớ dữ liệu (RAM) là 368 x 8bytes, của bộ nhớ dữ liệu là EPROM (RAM) là 256 x 8bytes. 1.1.3. Những đặc tính ngoại vi - Timer0 : 8- bit định thời/ đếm với 8- bit prescaler - Timer1 : 16- bit định thời/ đếm với prescaler, có thể được tăng lên trong suốt chế độ Sleep qua thạch anh/ xung clock bên ngoài. - Timer2 : 8- bit định thời/đếm với 8- bit, prescaler và postscaler - Hai module Capture, Compare, PWM * Capture có độ rộng 16 bit, độ phân giải 12.5ns * Compare có độ rộng 16 bit, độ phân giải 200ns * Độ phân giải lớn nhất của PWM là 10bit. - Có 13 ngõ I/O có thể điều khiển trực tiếp - Dòng vào và dòng ra lớn : * 25mA dòng vào cho mỗi chân * 20mA dòng ra cho mỗi chân 1.1.4. Đặc điểm về tương tự - 10 bit, với 8 kênh của bộ chuyển đổi tương tự sang số (A/D). - Brown – out Reset (BOR). - Module so sánh về tương tự. * Hai bộ so sánh tương tự. * Module điện áp chuẩn VREF có thể lập trình trên PIC. - Có thể lập trình ngõ ra vào đến từ những ngõ vào của PIC và trên điện áp bên trong. - Những ngõ ra của bộ so sánh có thể sử dụng cho bên ngoài. 1.1.5. Các đặc điểm đặc biệt : - Có thể ghi/ xoá 100.000 lần với kiểu bộ nhớ chương trình Enhanced Flash. - 1.000.000 ghi/ xoá với kiểu bộ nhớ EPROM. - EPROM có thể lưu trữ dữ liệu hơn 40 năm. - Có thể tự lập trình lại dưới sự điều khiển của phần mềm. - Mạch lập trình nối tiếp qua 2 chân. - Nguồn đơn 5V cấp cho mạch lập trình nối tiếp. - Watchdog Timer (WDT) với bộ dao động RC tích hợp sẵn trên Chip cho hoạt động đáng tin cậy. - Có thể lập trình mờ bảo vệ. - Tiết kiệm năng lượng với chế độ Sleep. - Có thể lựa chọn bộ dao động. - Mạch dở sai (ICD : In- Circuit Debug) qua 2 chân 1.1.6. Công nghệ CMOS Năng lượng thấp, tốc độ cao Flash/ công nghệ EPROM Việc thiết kế hoàn toàn tĩnh Khoảng điện áp hoạt động từ 2V đến 5.5V Tiêu tốn năng lượng thấp. 1.2. Giới thiệu về PIC16F8XX và PIC16F877A PIC16F8X là nhóm PIC trong họ PIC16XX của họ Vi điều khiển 8-bit, tiêu hao năng lượng thấp, đáp ứng nhanh, chế tạo theo công nghệ CMOS, chống tĩnh điện tuyệt đối. Nhóm bao gồm các thiết bị sau: PIC16F83 PIC16CR83 PIC16F84 PIC16CR84 - Tất cả các PIC16/17 đều có cấu trúc RISC. PIC16CXX các đặc tính nổi bậc, 8 mức ngăn xếp Stack, nhiều nguồn ngắt tích hợp bên trong lẫn ngoài. Có cấu trúc Havard với các bus dữ liệu và bus thực thi chương trình riêng biệt nhau cho phép độ dài 1 lệnh là 14-bit và bus dữ liệu 8-bit cách biệt nhau. Tất cả các lệnh đều mất 1 chu kỳ lệnh ngoại trừ các lệnh rẽ nhánh chương trình mất 2 chu kỳ lệnh. Chỉ có 35 lệnh và 1 lượng lớn các thanh ghi cho phép đáp ứng cao trong ứng dụng. - Họ PIC16F8X có nhiều tính năng đặc biệt làm giảm thiểu các thiết bị ngoại vi, vì vậy kinh tế cao, có hệ thống nổi bật đáng tin cậy và sự tiêu thụ năng lượng thấp. Ở đây có 4 sự lựa chọn bộ dao dộng và chỉ có 1 chân kết nối bộ dao động RC nên có giải pháp tiết kiệm cao. Chế độ SLEEP tiết kiệm nguồn và có thể được đánh thức bởi các nguồn reset. Và còn nhiều phần khác đó được giới thiệu bên trên sẽ được nói rõ ở các phần kế tiếp. - PIC16F877A có 40/44 chân với sự phân chia cấu trúc như sau : + Có 5 port xuất/nhập + Có 8 kênh chuyển đổi A/D 10-bit + Có bộ nhớ gấp đôi so với PIC16F873A và PIC16F874A2.2.1. Tổ chức thanh ghi Bảng 1.1: Tóm tắt đặc điểm của PIC16F877A Tần số hoạt động  DC-20MHz   Reset và Delay  POR, BOR (PWRT, OST)   Bộ nhớ chương trình Flash (14-bit word)  8K   Bộ nhớ dữ liệu (byte)  368   Bộ nhớ dữ liệu EEPROM (byte)  256   Các ngắt  15   Các Port xuất/nhập  Port A, B, C, D, E   Timer  3   Module Capture/Compare/PWM  2   Giao tiếp nối tiếp  MSSP, USART   Giao tiếp song song  PSP   Module A/D 10-bit  8 kênh ngõ vào   Bộ so sánh tương tự  2   Tập lệnh  35 lệnh   Số chân  40 chân PDIP 44 chân PLCC 44 chân TQFP 44 chân QFN   1.3. Sơ đồ chân ,cấu trúc và chức năng PIC 16F877A loại 40 chân PDIP Hình 1.1: Sơ đồ chân Pic 16F877A loại 40 chân PDIP Chức năng các chân : * Chân OSC1/CLKI (13) : ngõ vào dao động thạch anh hoặc xung clock bên ngoài. - OSC1 : ngõ vào dao động thạch anh hoặc xung clock bên ngoài. Ngõ vào Schmit trigger khi được cấu tạo ở chế độ RC ; một cách khác của CMOS. - CLKI : ngõ vào nguồn xung bên ngoài. Luôn được kết hợp với chức năng OSC1. * Chân OSC2/CLKO (13) : ngõ vào dao động thạch anh hoặc xung clock - OSC2 : Ngõ ra dao động thạch anh. Kết nối đến thạch anh hoặc bộ cộng hưởng. - CLKO : ở chế độ RC, ngõ ra của OSC2, bằng tần số của OSC1 và chỉ ra tốc độ của chu kỳ lệnh. * Chân /VPP (1) : - MCLR : Hoạt động Reset ở mức thấp - VPP : ngõ vào áp lập trình * Chân RA0/AN0 (2) : - RA0 : xuất/nhập số - AN0 : ngõ vào tương tự 0 * Chân RA1/NA1 (3) : - RA1 : xuất/nhập số - AN1 : ngõ vào tương tự 1 * Chân RA2/NA2/VREF-/CVREF (4) : - RA2 : xuất/nhập số - AN2 : ngõ vào tương tự 2 - VREF -: ngõ vào điện áp chuẩn (thấp) của bộ A/D - CVREF: điện áp tham chiếu VREF ngõ ra bộ so sỏnh * Chân RA3/NA3/VREF+ (5) : - RA3 : xuất/nhập số - AN3 : ngõ vào tương tự 3 - VREF+ : ngõ vào điện áp chuẩn (cao) của bộ A/D * Chân RA4/TOCKI/C1OUT (6) : - RA4 : xuất/nhập số - mở khi được cấu tạo như ngõ ra - TOCKI : ngõ vào xung clock bên ngoài cho Timer 0 - C1 OUT : Ngõ ra bộ so sánh 1 * Chân RA5/AN4/ /C2OUT (7) : - RA5 : xuất/nhập số - AN4 : ngõ vào tương tự 4 - SS : ngõ vào chọn lựa SPI phụ - C2 OUT : ngõ ra bộ so sánh 2 * RB0/INT (33) : - RB0 : xuất/nhập số - INT : ngắt ngoài * RB1 (34) : xuất/nhập số * RB2 (35) : xuất/nhập số * RB3/PGC : - RB3 : xuất/nhập số - Chân cho phép lập trình điện áp thấp ICPS * RB4 (37), RB5 (38) : xuất/nhập số * RB6/PGC (39) : - RB6 : xuất/nhập số - PGC : mạch dũ sai và xung clock lập trỡnh ICSP * RB7/PGD (40) : - RB7 : xuất/nhập số - PGD : mạch dữ sai và dữ liệu lập trình ICSP * Chân RC0/T1 OCO/T1CKI (15) : - RC0 : xuất/nhập số - T1 OCO : ngõ vào bộ dao động Timer 1 - T1 CKI : ngõ vào xung clock bên ngoài Timer 1 * Chân RC1/T1 OSI/CCP2 (16) : - RC1 : xuất/nhập số - T1 OSI : ngõ vào bộ dao động Timer 1 - CCP2 : ngõ vào Capture 2, ngõ ra compare 2, ngõ ra PWM2 * Chân RC2/CCP1 (17) : - RC2 : xuất/nhập số - CCP1 : ngõ vào Capture 1, ngõ ra compare 1, ngõ ra PWM1 * Chân RC3/SCK/SCL (18): - RC3 : xuất/nhập số - SCK : ngõ vào xung clock nối tiếp đồng bộ/ngõ ra của chế độ SPI - SCL : ngõ vào xung clock nối tiếp đồng bộ/ ngõ ra của chế độ I2C * Chân RC4/SDI/SDA (23) : - RC4 : xuất/nhập số - SDI : dữ liệu vào SPI - SDA : xuất/nhập dữ liệu vào I2C * Chân RC5/SDO (24) : - RC5 : xuất/nhập số - SDO : dữ liệu ra SPI * Chân RC6/TX/CK (25) : - RC6 : xuất/nhập số - TX : truyền bất đồng bộ USART - CK : xung đồng bộ USART * Chân RC7/RX/DT (26) : - RC7 : xuất/nhập số - RX : nhận bất đồng USART - DT : dữ liệu đồng bộ USART * Chân RD0/PSP0 (19) : - RD0 : xuất/nhập số - PSP0 : dữ liệu port nhánh song song * Chân RD1/PSP1 (20) : - RD1 : xuất/nhập số - PSP1 : dữ liệu port nhánh song song * Các chân RD2/PSP2 (21), RD3/PSP3 (22), RD4/PSP (27), RD5/PSP5 (28), RD6/PSP6 (29), RD7/PSP7 (30) tương tự chân 19,20. * Chân RE0//AN6 (8) : - RE0 : xuất nhập số - RD : điều khiển việc đọc ở port nhánh song song - AN5 : ngõ vào tương tự 5 * Chân RE1/ /AN6 (9) : - RE1 : xuất/nhập số - WR : điều khiển việc ghi ở port nhánh song song - AN6 : ngõ vào tương tự 6 * Chân RE2/ /AN7 (10) : - RE2 : xuất/nhập số - CS : Chip lựa chọn sự điều khiển ở port nhánh song song - AN7 : ngõ vào tương tự 7 * Chân VDD(11,32), và VSS(12,31) : là các chân nguồn của PIC. Cấu trúc bên trong pic 16f877a:   2 MOÄT VAØI THOÂNG SOÁ VEÀ VI ÑIEÀU KHIEÅN PIC16F877A Ñaây laø vi ñieàu khieån thuoäc hoï PIC16Fxxx vôùi taäp leänh goàm 35 leänh coù ñoä daøi 14 bit. Moãi leänh ñeàu ñöôïc thöïc thi trong moät chu kì xung clock. Toác ñoä hoaït ñoäng toái ña cho pheùp laø 20 MHz vôùi moät chu kì leänh laø 200ns. Boä nhôù chöông trình 8Kx14 bit, boä nhôù döõ lieäu 368x8 byte RAM vaø boä nhôù döõ lieäu EEPROM vôùi dung löôïng 256x8 byte. Soá PORT I/O laø 5 vôùi 33 pin I/O. Caùc ñaëc tính ngoaïi vi bao goàmcaùc khoái chöùc naêng sau: Timer0: boä ñeám 8 bit vôùi boä chia taàn soá 8 bit. Timer1: boä ñeám 16 bit vôùi boä chia taàn soá, coù theå thöïc hieän chöùc naêng ñeám döïa vaøo xung clock ngoaïi vi ngay khi vi ñieàu khieån hoaït ñoäng ôû cheá ñoä sleep. Timer2: boä ñeám 8 bit vôùi boä chia taàn soá, boä postcaler. Hai boä Capture/so saùnh/ñieàu cheá ñoä roâng xung. Caùc chuaån giao tieáp noái tieáp SSP (Synchronous Serial Port), SPI vaø I2C. Chuaån giao tieáp noái tieáp USART vôùi 9 bit ñòa chæ. Coång giao tieáp song song PSP (Parallel Slave Port) vôùi caùc chaân ñieàu khieån RD, WR, CS ôû beân ngoaøi. Caùc ñaëc tính Analog: 8 keânh chuyeån ñoåi ADC 10 bit. Hai boä so saùnh. Beân caïnh ñoù laø moät vaøi ñaëc tính khaùc cuûa vi ñieàu khieån nhö: Boä nhôù flash vôùi khaû naêng ghi xoùa ñöôïc 100.000 laàn. Boä nhôù EEPROM vôùi khaû naêng ghi xoùa ñöôïc 1.000.000 laàn. Döõ lieäu boä nhôù EEPROM coù theå löu tröõ treân 40 naêm. Khaû naêng töï naïp chöông trình vôùi söï ñieàu khieån cuûa phaàn meàm. Naïp ñöôïc chöông trình ngay treân maïch ñieän ICSP (In Circuit Serial Programming) thoâng qua 2 chaân. Watchdog Timer vôùi boä dao ñoäng trong. Chöùc naêng baûo maät maõ chöông trình. Cheá ñoä Sleep. Coù theå hoaït ñoäng vôùi nhieàu daïng Oscillator khaùc nhau. 3 SÔ ÑOÀ KHOÁI VI ÑIEÀU KHIEÅN PIC16F877A  4 TOÅ CHÖÙC BOÄ NHÔÙ Caáu truùc boä nhôù cuûa vi ñieàu khieån PIC16F877A bao goàm boä nhôù chöông trình (Program memory) vaø boä nhôù döõ lieäu (Data Memory). 5 BOÄ NHÔÙ CHÖÔNG TRÌNH Boä nhôù chöông trình cuûa vi ñieàu khieån PIC16F877A laø boä nhôù flash, dung löôïng boä nhôù 8K word (1 word = 14 bit) vaø ñöôïc phaân thaønh nhieàu trang (töø page0 ñeán page 3) . Nhö vaäy boä nhôù chöông trình coù khaû naêng chöùa ñöôïc 8*1024 = 8192 leänh (vì moät leänh sau khi maõ hoùa seõ coù dung löôïng 1 word (14 bit). Ñeå maõ hoùa ñöôïc ñòa chæ cuûa 8K word boä nhôù chöông trình, boä ñeám chöông trình coù dung löôïng 13 bit (PC). Khi vi ñieàu khieån ñöôïc reset, boä ñeám chöông trình seõ chæ ñeán ñòa chæ 0000h (Reset vector). Khi coù ngaét xaûy ra, boä ñeám chöông trình seõ chæ ñeán ñòa chæ 0004h (Interrupt vector). Boä nhôù chöông trình khoâng bao goàm: Boä nhôù stack vaø khoâng ñöôïc ñòa chæ hoùa bôûi boä ñeám chöông trình. Boä nhôù stack seõ ñöôïc ñeà caäp cuï theå trong phaàn sau. 6 BOÄ NHÔÙ DÖÕ LIEÄU Boä nhôù döõ lieäu cuûa PIC laø boä nhôù EEPROM ñöôïc chia ra laøm nhieàu bank. Ñoái vôùi PIC16F877A boä nhôù döõ lieäu ñöôïc chia ra laøm 4 bank. Moãi bank coù dung löôïng 128 byte, bao goàm caùc thanh ghi coù chöùc naêng ñaëc bieät SFG (Special Function Register) naèm ôû caùc vuøng ñòa chæ thaáp vaø caùc thanh ghi muïc ñích chung GPR (General Purpose Register) naèm ôû vuøng ñòa chæ coøn laïi trong bank. Caùc thanh ghi SFR thöôøng xuyeân ñöôïc söû duïng (ví duï nhö thanh ghi STATUS) seõ ñöôïc ñaët ôû taát caø caùc bank cuûa boä nhôù döõ lieäu giuùp thuaän tieän trong quaù trình truy xuaát vaø laøm giaûm bôùt leänh cuûa chöông trình. Sô ñoà cuï theå cuûa boä nhôù döõ lieäu PIC16F877A nhö sau:  6.1 THANH GHI CHÖÙC NAÊNG ÑAËC BIEÄT SFR Ñaây laø caùc thanh ghi ñöôïc söû duïng bôûi CPU hoaëc ñöôïc duøng ñeå thieát laäp vaø ñieàu khieån caùc khoái chöùc naêng ñöôïc tích hôïp beân trong vi ñieàu khieån. Coù theå phaân thanh ghi SFR laøm hai loïai: thanh ghi SFR lieân quan ñeán caùc chöùc naêng beân trong (CPU) vaø thanh ghi SRF duøng ñeå thieát laäp vaø ñieàu khieån caùc khoái chöùc naêng beân ngoaøi (ví duï nhö ADC, PWM, …). Phaàn naøy seõ ñeà caäp ñeán caùc thanh ghi lieân quan ñeán caùc chöùc naêng beân trong. Caùc thanh ghi duøng ñeå thieát laäp vaø ñieàu khieån caùc khoái chöùc naêng seõ ñöôïc nhaéc ñeán khi ta ñeà caäp ñeán caùc khoái chöùc naêng ñoù. Thanh ghi STATUS (03h, 83h, 103h, 183h):thanh ghi chöùa keát quaû thöïc hieän pheùp toaùn cuûa khoái ALU, traïng thaùi reset vaø caùc bit choïn bank caàn truy xuaát trong boä nhôù döõ lieäu. Thanh ghi OPTION_REG (81h, 181h): thanh ghi naøy cho pheùp ñoïc vaø ghi, cho pheùp ñieàu khieån chöùc naêng pull-up cuûa caùc chaân trong PORTB, xaùc laäp caùc tham soá veà xung taùc ñoäng, caïnh taùc ñoäng cuûa ngaét ngoaïi vi vaø boä ñeám Timer0.  Thanh ghi INTCON (0Bh, 8Bh,10Bh, 18Bh):thanh ghi cho pheùp ñoïc vaø ghi, chöùa caùc bit ñieàu khieån vaø caùc bit côø hieäu khi timer0 bò traøn, ngaét ngoaïi vi RB0/INT vaø ngaét interrput-on-change taïi caùc chaân cuûa PORTB.  Thanh ghi PIE1 (8Ch): chöùa caùc bit ñieàu khieån chi tieát caùc ngaét cuûa caùc khoái chöùc naêng ngoaïi vi.  Thanh ghi PIR1 (0Ch) chöùa côø ngaét cuûa caùc khoái chöùc naêng ngoaïi vi, caùc ngaét naøy ñöôïc cho pheùp bôûi caùc bit ñieàu khieån chöùa trong thanh ghi PIE1.  Thanh ghi PIE2 (8Dh): chöùa caùc bit ñieàu khieån caùc ngaét cuûa caùc khoái chöùc naêng CCP2, SSP bus, ngaét cuûa boä so saùnh vaø ngaét ghi vaøo boä nhôù EEPROM.  Thanh ghi PIR2 (0Dh): chöùa caùc côø ngaét cuûa caùc khoái chöùc naêng ngoaïi vi, caùc ngaét naøy ñöôïc cho pheùp bôûi caùc bit ñieàu khieån chöùa trong thanh ghi PIE2.  Thanh ghi PCON (8Eh): chöùa caùc côø hieäu cho bieát traïng thaùi caùc cheá ñoä reset cuûa vi ñieàu khieån.  6.2 THANH GHI MUÏC ÑÍCH CHUNG GPR Caùc thanh ghi naøy coù theå ñöôïc truy xuaát tröïc tieáp hoaëc giaùn tieáp thoâng qua thanh ghi FSG (File Select Register). Ñaây laø caùc thanh ghi döõ lieäu thoâng thöôøng, ngöôøi söû duïng coù theå tuøy theo muïc ñích chöông trình maø coù theå duøng caùc thanh ghi naøy ñeå chöùa caùc bieán soá, haèng soá, keát quaû hoaëc caùc tham soá phuïc vuï cho chöông trình. 7 STACK Stack khoâng naèm trong boä nhôù chöông trình hay boä nhôù döõ lieäu maø laø moät vuøng nhôù ñaëc bieät khoâng cho pheùp ñoïc hay ghi. Khi leänh CALL ñöôïc thöïc hieän hay khi moät ngaét xaûy ra laøm chöông trình bò reõ nhaùnh, giaù trò cuûa boä ñeám chöông trình PC töï ñoäng ñöôïc vi ñieàu khieån caát vaøo trong stack. Khi moät trong caùc leänh RETURN, RETLW hat RETFIE ñöôïc thöïc thi, giaù trò PC seõ töï ñoäng ñöôïc laáy ra töø trong stack, vi ñieàu khieån seõ thöïc hieän tieáp chöông trình theo ñuùng qui trình ñònh tröôùc. Boä nhôù Stack trong vi ñieàu khieån PIC hoï 16F87xA coù khaû naêng chöùa ñöôïc 8 ñòa chæ vaø hoaït ñoäng theo cô cheá xoay voøng. Nghóa laø giaù trò caát vaøo boä nhôù Stack laàn thöù 9 seõ ghi ñeø leân giaù trò caát vaøo Stack laàn ñaàu tieân vaø giaù trò caát vaøo boä nhôù Stack laàn thöù 10 seõ ghi ñeø leân giaù tri6 caát vaøo Stack laàn thöù 2. Caàn chuù yù laø khoâng coù côø hieäu naøo cho bieát traïng thaùi stack, do ñoù ta khoâng bieát ñöôïc khi naøo stack traøn. Beân caïnh ñoù taäp leänh cuûa vi ñieàu khieån doøng PIC cuõng khoâng coù leänh POP hay PUSH, caùc thao taùc vôùi boä nhôù stack seõ hoaøn toaøn ñöôïc ñieàu khieån bôûi CPU. 8 CAÙC COÅNG XUAÁT NHAÄP CUÛA PIC16F877A Coång xuaát nhaäp (I/O port) chính laø phöông tieän maø vi ñieàu khieån duøng ñeå töông taùc vôùi theá giôùi beân ngoaøi. Söï töông taùc naøy raát ña daïng vaø thoâng qua quaù trình töông taùc ñoù, chöùc naêng cuûa vi ñieàu khieån ñöôïc theå hieän moät caùch roõ raøng. Moät coång xuaát nhaäp cuûa vi ñieàu khieån bao goàm nhieàu chaân (I/O pin), tuøy theo caùch boá trí vaø chöùc naêng cuûa vi ñieàu khieån m