Đồ án tốt nghiệp: Khảo sát vi điều khiển PIC16F877A giao tiếp máy tính - SV Đặng Anh Duy

Tìm hiểu cấu trúc, chức năng và ứng dụng vi điều khiển PIC16F877A trong giao tiếp máy tính qua đồ án tốt nghiệp. Phân tích chi tiết bộ nhớ, thanh ghi và giao

Người đăng

Ẩn danh
65
0
0

Phí lưu trữ

30 Point

Tóm tắt

I. Tổng quan về vi điều khiển PIC16F877A và giao tiếp máy tính

Vi điều khiển PIC16F877A là dòng chip phổ biến nhất trong họ PIC của Microchip Technology. Chip có 40 chân, bộ nhớ Flash 8KB và 5 cổng vào ra. PIC16F877A được thiết kế với công nghệ CMOS tiết kiệm năng lượng. Tần số hoạt động tối đa đạt 20MHz. Chip tích hợp nhiều module ngoại vi quan trọng. Chúng bao gồm bộ chuyển đổi ADC 10-bit, các Timer và module giao tiếp nối tiếp USART. Trong đồ án tốt nghiệp, PIC16F877A thường được lựa chọn để xây dựng hệ thống giao tiếp với máy tính. Mục tiêu là truyền nhận dữ liệu giữa vi điều khiển và phần mềm máy tính. Quá trình này đòi hỏi hiểu biết sâu về cấu trúc phần cứng và giao thức truyền thông. Bài viết khảo sát chi tiết các yếu tố kỹ thuật liên quan đến ứng dụng này.

1.1. Cấu trúc phần cứng cơ bản của PIC16F877A

PIC16F877A có kiến trúc Harvard với bus lệnh và bus dữ liệu riêng biệt. Bộ nhớ chương trình Flash 8KB lưu trữ mã nguồn chạy. Bộ nhớ RAM 368 byte phục vụ lưu trữ tạm thời dữ liệu. Chip có 5 cổng Port A, B, C, D, E với tín hiệu điều khiển độc lập. Mỗi port có thanh ghi hướng dữ liệu TRIS riêng biệt. Các chân có thể cấu hình là ngõ vào hoặc ngõ ra số. Một số chân đa công dụng, vừa làm I/O vừa là chân chức năng đặc biệt. Chân RC6 và RC7 chuyên dụng cho giao tiếp nối tiếp USART. Cấu trúc này cho phép kết nối linh hoạt với nhiều thiết bị ngoại vi khác nhau.

1.2. Vai trò của giao tiếp máy tính trong đồ án tốt nghiệp

Giao tiếp máy tính đóng vai trò trung tâm trong nhiều đồ án tốt nghiệp kỹ thuật. Máy tính đóng vai trò thiết bị chủ điều khiển và giám sát hệ thống. Vi điều khiển PIC16F877A thu thập dữ liệu từ cảm biến và thực thi lệnh. Dữ liệu được truyền lên máy tính để xử lý và hiển thị. Phần mềm máy tính thường viết bằng C# với giao diện thân thiện. Công cụ giả lập cổng COM như Terminal hỗ trợ giao tiếp ở tầng thấp. Mô hình này áp dụng rộng rãi trong hệ thống giám sát nhiệt độ, đếm sản phẩm và điều khiển tự động. Hiểu rõ nguyên lý giao tiếp là điều kiện tiên quyết để triển khai đồ án thành công.

II. Phân tích module giao tiếp USART trên PIC16F877A

USART là viết tắt của Universal Synchronous Asynchronous Receiver Transmitter. Đây là module giao tiếp nối tiếp tích hợp sẵn trong PIC16F877A. Module hỗ trợ ba chế độ hoạt động chính. Chế độ bất đồng bộ được sử dụng phổ biến nhất trong giao tiếp với máy tính. Chế độ đồng bộ master và đồng bộ slave phục vụ giao tiếp giữa các vi điều khiển. Hai chân RC6/TX/CK và RC7/RX/DT đảm nhận vai trò truyền và nhận dữ liệu. Tốc độ truyền Baud Rate được cấu hình qua bộ tạo BRG 8-bit. Các thanh ghi TXSTA và RCSTA điều khiển hoạt động của module. Thanh ghi SPEN trong RCSTA cho phép kích hoạt cổng nối tiếp. Cần cấu hình đúng TRISC bit 6 và 7 để sử dụng chức năng USART. Việc hiểu rõ từng bit điều khiển là yếu tố quyết định độ ổn định của hệ thống.

2.1. Cấu hình thanh ghi TXSTA và RCSTA

Thanh ghi TXSTA điều khiển phần truyền dữ liệu của module USART. Bit TXEN cho phép truyền dữ liệu khi được đặt ở mức 1. Bit SYNC chọn chế độ đồng bộ hoặc bất đồng bộ. Bit BRGH điều chỉnh tốc độ Baud Rate ở chế độ cao hoặc thấp. Thanh ghi RCSTA điều khiển phần nhận dữ liệu. Bit SPEN kích hoạt cổng nối tiếp seri khi đặt ở mức 1. Bit CREN cho phép nhận dữ liệu liên tục. Bit FERR và OERR báo lỗi khung và lỗi tràn khi nhận. Việc cấu hình đúng các bit này đảm bảo dữ liệu truyền nhận không bị lỗi. Mỗi ứng dụng cụ thể đòi hỏi thiết lập riêng phù hợp với yêu cầu kỹ thuật.

2.2. Thiết lập tốc độ Baud Rate cho giao tiếp

Baud Rate là số bit dữ liệu truyền trong mỗi giây qua đường nối tiếp. Giá trị phổ biến là 9600 bps cho giao tiếp với máy tính. PIC16F877A sử dụng bộ tạo Baud Rate Generator 8-bit tích hợp sẵn. Công thức tính phụ thuộc vào tần số thạch anh và bit BRGH. Với clock 4MHz và BRGH bằng 1, giá trị SPBRG được tính toán cụ thể. Cài đặt sai Baud Rate dẫn đến dữ liệu nhận bị lỗi và không đọc được. Cả thiết bị truyền và nhận phải sử dụng cùng tốc độ Baud Rate. Phần mềm mô phỏng Proteus giúp kiểm tra cấu hình trước khi chạy thực tế. Đồng bộ tốc độ là bước quan trọng không thể bỏ qua khi thiết kế hệ thống giao tiếp.

III. Phương pháp triển khai giao tiếp PIC16F877A với máy tính

Triển khai giao tiếp PIC16F877A với máy tính yêu cầu nhiều bước kỹ thuật. Đầu tiên là lập trình vi điều khiển bằng ngôn ngữ C với trình biên dịch CCS. Phần mềm sử dụng các lệnh use rs232 để cấu hình giao tiếp nối tiếp. Cổng COM ảo qua chip MAX232 chuyển đổi mức tín hiệu TTL sang RS232. Máy tính nhận dữ liệu qua cổng COM vật lý hoặc USB sang COM. Phần mềm máy tính viết bằng C# sử dụng thư viện SerialPort. Giao diện người dùng hiển thị dữ liệu thời gian thực từ vi điều khiển. Quy trình truyền dữ liệu có thể dùng ngắt INT_RDA để xử lý tự động. Mỗi ký tự nhận được kích hoạt hàm ngắt tương ứng. Phương pháp này đảm bảo dữ liệu không bị mất trong quá trình truyền nhận liên tục. Hệ thống được kiểm chứng bằng phần mềm mô phỏng Proteus trước khi chạy thực tế.

3.1. Lập trình vi điều khiển bằng ngôn ngữ C với CCS Compiler

Trình biên dịch CCS C Compiler là công cụ phổ biến lập trình dòng PIC. Phần mềm hỗ trợ các lệnh tiền xử lý như include và device directive. Câu lệnh use rs232 cấu hình nhanh giao tiếp nối tiếp với tham số Baud Rate. Ngắt INT_RDA được ưu tiên cao nhất để xử lý dữ liệu nhận. Hàm getch() đọc từng ký tự từ bộ đệm nhận. Hàm putc() và printf truyền dữ liệu từ vi điều khiển lên máy tính. Chương trình cần khởi tạo đúng tần số clock với use delay. Cấu hình fast_io giúp tối ưu tốc độ truy cập cổng I/O. Mã nguồn phải xử lý lỗi tràn bộ đệm và kiểm tra tính hợp lệ dữ liệu. Viết code rõ ràng và có chú thích giúp bảo trì dễ dàng về sau.

3.2. Thiết kế phần mềm máy tính bằng ngôn ngữ C Sharp

Ngôn ngữ C Sharp là lựa chọn hàng đầu để viết phần mềm giao tiếp máy tính. C Sharp có ưu điểm đơn giản, hiện đại và hướng đối tượng. Thư viện SerialPort trong .NET Framework cung cấp đầy đủ phương thức truyền nhận. Thuộc tính PortName chọn cổng COM tương ứng với thiết bị. BaudRate, DataBits, Parity và StopBits được thiết lập trùng với vi điều khiển. Sự kiện DataReceived kích hoạt khi có dữ liệu mới từ PIC gửi đến. Giao diện Windows Forms hiển thị dữ liệu dạng số hoặc đồ thị trực quan. Phần mềm cũng gửi lệnh điều khiển từ máy tính xuống vi điều khiển. Xử lý ngoại lệ try-catch ngăn chương trình dừng đột ngột khi mất kết nối. Công cụ giả lập Terminal hỗ trợ kiểm thử giao tiếp ở giai đoạn phát triển ban đầu.

IV. Kết luận và ứng dụng thực tế của hệ thống giao tiếp

Bài viết đã khảo sát toàn diện vi điều khiển PIC16F877A trong ứng dụng giao tiếp máy tính. Cấu trúc phần cứng mạnh mẽ với 40 chân và nhiều module ngoại vi tích hợp. Module USART cung cấp giải pháp giao tiếp nối tiếp đáng tin cậy. Phương pháp triển khai kết hợp lập trình C trên PIC và C Sharp trên máy tính. Hệ thống truyền nhận dữ liệu hoạt động ổn định với tốc độ Baud Rate 9600 bps. Phần mềm Proteus mô phỏng hiệu quả trước khi triển khai phần cứng thực tế.Ứng dụng thực tế bao gồm hệ thống giám sát nhiệt độ và đếm sản phẩm tự động. Đồ án minh chứng khả năng tích hợp phần cứng và phần mềm trong kỹ thuật điều khiển. Kiến thức từ khảo sát này là nền tảng cho các dự án IoT và tự động hóa phức tạp hơn. PIC16F877A vẫn là lựa chọn tối ưu cho sinh viên và kỹ sư mới bắt đầu.

4.1. Ứng dụng giám sát và điều khiển từ xa

Hệ thống giao tiếp PIC16F877A với máy tính áp dụng rộng rãi trong giám sát từ xa. Cảm biến nhiệt độ LM35 kết nối với ngõ ADC thu thập dữ liệu môi trường. Vi điều khiển xử lý và truyền giá trị nhiệt độ lên máy tính liên tục. Phần mềm máy tính hiển thị nhiệt độ thời gian thực và cảnh báo khi vượt ngưỡng. Hệ thống đếm sản phẩm sử dụng cảm biến quang trên băng chuyền. Dữ liệu đếm được gửi lên máy tính để thống kê và báo cáo.Ứng dụng mở rộng bao gồm giám sát mực nước, độ ẩm và ánh sáng. Mô hình này phù hợp cho phòng thí nghiệm và nhà máy sản xuất nhỏ. Kết nối không dây qua module Bluetooth hoặc WiFi mở rộng phạm vi giám sát.

4.2. Hướng phát triển và mở rộng hệ thống

Hệ thống giao tiếp PIC16F877A có tiềm năng mở rộng đáng kể trong tương lai. Thay thế giao tiếp nối tiếp bằng giao thức TCP/IP cho kết nối mạng Internet. Tích hợp module WiFi ESP8266 hoặc ESP32 kết nối trực tiếp với đám mây. Lưu trữ dữ liệu vào cơ sở dữ liệu SQL Server trên máy tính phục vụ phân tích. Nâng cấp phần mềm máy tính thành ứng dụng web quản lý tập trung đa thiết bị. Sử dụng giao thức MQTT cho truyền thông IoT hiệu suất cao và tiết kiệm băng thông. Kết hợp nhiều PIC16F877A thành mạng cảm biến không dây phân tán. Phát triển ứng dụng di động giám sát và điều khiển từ smartphone. Hướng đi này đáp ứng xu hướng công nghiệp 4.0 và IoT hiện đại ngày nay.

29/05/2026

Trích đoạn nội dung tài liệu

ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI CHƯƠNG I : CẤU TRÚC PHẦN CỨNG CỦA PIC16F877A 1.1Sơ 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: - 8 K Flash ROM. - 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 (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. - 1 bộ biến đổi ADC 10 bits, 8 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. - 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. - Được chế tạo bằng công nghệ CMOS. - 35 tập lệnh có độ dài 14 bits. - Tần số hoạt động tối đa 20MHz. SVTH:ĐẶNG ANH DUY MSSV:20762046 1 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI Sơ đồ khối PIC16F877A.2 Sơ lược về các chân pic 16F877A 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:ĐẶNG ANH DUY MSSV:20762046 2 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI SVTH:ĐẶNG ANH DUY MSSV:20762046 3 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI 1.3 Bộ nhớ dữ liệu: Bảng đồ cấu trúc bộ nhớ dữ liệu P16F877A 1.4 Các thanh ghi chức năng đặc biệt: 1.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. SVTH:ĐẶNG ANH DUY MSSV:20762046 4 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI Bit 7 IRP: Bit lựa chọn bank thanh ghi (Sử dụng cho định địa chỉ gián 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.2 Thanh ghi tùy chọn (Option _Reg Register): 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 SVTH:ĐẶNG ANH DUY MSSV:20762046 5 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI Bit 7 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. 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.3 Thanh ghi điều khiển ngắt INTCON (Interrupt Control Register): 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ông cho phép ngắt ghi vào EEPROM hoạ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 SVTH:ĐẶNG ANH DUY MSSV:20762046 6 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢ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 Thanh ghi cho phép ngắt ngoại vi 1(PIE1 Register): 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 SVTH:ĐẶNG ANH DUY MSSV:20762046 7 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI 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.5 Thanh ghi cờ của các ngắt ngoại vi 1: 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 Bit 2 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): SVTH:ĐẶNG ANH DUY MSSV:20762046 8 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI 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) 0: Thanh ghi TMR1 chưa tràn 1.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ông cho phép SVTH:ĐẶNG ANH DUY MSSV:20762046 9 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI 1.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. 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 .5 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. SVTH:ĐẶNG ANH DUY MSSV:20762046 10 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI 1.1 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.2 Đị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ội dung được bảo vệ bản quyền — Tải xuống đầy đủ