Chuong 3 gioi thieu pic 16f877a

37 232 0
Chuong 3 gioi thieu pic 16f877a

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi CHƯƠNG III: GIỚI THIỆU VI ĐIỀU KHIỂN PIC 16F877A I.Giới thiệu vi điều khiển PIC: PIC viết tắt “Programable Intelligent Computer”, tạm dịch “máy tính thông minh khả trình” hãng Genenral Instrument đặt tên cho vi điều khiển họ PIC1650 thiết kế để dùng làm thiết bị ngoại vi cho vi điều khiển CP1600 Vi điều khiển sau hãng Microchip nghiên cứu phát triển thêm từ hình thành nên dòng vi điều khiển PIC ngày Cách phân lọai PIC theo chữ cái: Các họ PIC xxCxxx đưa vào nhóm, gọi OPT (One Time Programmable) : nạp chương trình cho lần Nhóm thứ hai có chữ F LF:chúng ta gọi nhóm nhóm Flash ,nhóm cho phép ghi xóa nhiều lần mạch điện tử thông thường Cách phân lọai PIC theo hai số sản phẩm : -Loại thứ dòng PIC (Base_line), gồm PIC 12Cxxx, có độ dài lệnh 12 bit -Loại thứ hai dòng PIC 10F, 12F , 16F, gọi dòng phổ thông (Mid Range), có độ dài lệnh 14 bit -Loại thứ ba dóng PIC 18F (High End) , độ dài lệnh 16 bit PIC 16F877A dòng PIC phổ biến , đủ mạnh tính năng, nhớ đủ cho ứng dụng thông thường II Vi điều khiển PIC16F877A : II.1 Tổ chức phần cứng : Tổ chức phần cứng vi điều khiển thiết kế theo hai kiến trúc: Harvard Von Neumann.Tổ chức phần cứng PIC16F877A thết kế theo kiến trúc Harvard SVTH:Lê Minh Tâm-Lê Ngọc Thương 31 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi Kiến trúc Harvard Von Neumann Trên hình vẽ ta thấy, cấu trúc Von Neumann nhớ chương trình nhớ liệu nằm chung nhớ CPU truy cập vào hai nhớ thông qua bus, thời điểm CPU truy cập vào hai nhớ Đối với cấu trúc Harvard, nhớ liệu nhớ chương trình tổ chức riêng Do đó, thời điểm, CPU tương tác với hai nhớ, tốc độ xử lý vi điều khiển nhanh Vì PIC16F877A thiết kế với kiến trúc Harvard nên có tập lệnh rút gọn RISC (reduced instruction set computer) nên tập lệnh PIC16F877A lệnh nhân, chia mà phép nhân chia thay thực liên tiếp nhiều phép cộng trừ cần lệnh ADD lệnh SUBB đủ II.2 Tính : Đây vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit Mỗi lệnh thực thi chu kì xung clock Tốc độ hoạt động tối đa cho phép 20 MHz với chu kì lệnh 200ns Bộ nhớ chương trình 8Kx14 bit, nhớ liệu 368 byte RAM nhớ liệu EEPROM với dung lượng 256byte Số PORT I/O với 33 pin I/O Các đặc tính ngoại vi bao gồm khối chức sau: Timer0: đếm bit với chia tần số bit Timer1: đếm 16 bit với chia tần số, thực chức đếm dựa vào xung clock ngoại vi vi điều khiển hoạt động chế độ sleep Timer2: đếm bit với chia tần số, postcaler SVTH:Lê Minh Tâm-Lê Ngọc Thương 32 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi Hai Capture/so sánh/điều chế độ rông xung Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI I2C Chuẩn giao tiếp nối tiếp USART với bit địa Cổng giao tiếp song song PSP (Parallel Slave Port) với chân điều khiển RD, WR, CS bên Các đặc tính Analog: kênh chuyển đổi ADC 10 bit Hai so sánh Bên cạnh vài đặc tính khác vi điều khiển như: Bộ nhớ flash với khả ghi xóa 100.000 lần Bộ nhớ EEPROM với khả ghi xóa 1.000.000 lần Dữ liệu nhớ EEPROM lưu trữ 40 năm Khả tự nạp chương trình với điều khiển phần mềm Nạp chương trình mạch điện ICSP (In Circuit Serial Programming) thông qua chân Watchdog Timer với dao động Chức bảo mật mã chương trình Chế độ Sleep Có thể hoạt động với nhiều dạng Oscillator khác So sánh PIC với 8051: Chức Bộ nhớ chương trình Bộ nhớ liệu Port vào/ra AT9C51 4KB 128B RAM port, với 32 chân PIC16F877A 8K x 14bit 368B RAM, 256B EEPROM port, với 33 chân vào/ra Bộ định thời Mạch giao tiếp vào/ra 16 bit UART bit, 16 bit USART giao tiếp song song PSP giao tiếp nối tiếp đồng Capture/sosánh/PWM Chuyển đổi tương tự sang số Tập lệnh Ngắt SSP Không có Không có 10 bit 53 lệnh 35 lệnh nguồn tạo ngắt có 15 nguồn tạo ngắt không ưu SVTH:Lê Minh Tâm-Lê Ngọc Thương 33 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi ưu tiên tiên II.3 Sơ đồ khối tính chân PIC16F877A: II.3.1 Sơ đồ khối : SVTH:Lê Minh Tâm-Lê Ngọc Thương 34 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi Như nói , vi điều khiển PIC có kiến trúc Harvard, CPU truy cập chương trình liệu hai bus riêng biệt, nên làm tăng đáng kể băng thông so với kiến trúc Von Neumann CPU truy cập chương trình liệu bus Việc tách riêng nhớ chương trình nhớ liệu cho phép số bit từ lệnh khác với số bit liệu Ở PIC 16F877A, từ lệnh dài 14 bit , từ liệu bit PIC 16F877A chứa ALU bit ghi làm việc WR (working register) ALU đơn vị tính toán số học logic, thực hiên phép tình số đại số Boole ghi làm việc WR ghi liệu ALU thực phép cộng, trừ, dịch bit phép toán logic SVTH:Lê Minh Tâm-Lê Ngọc Thương 35 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi II.3.2 Sơ đồ chân PIC16F877A: II.3.3 Tính chân : Tên Chân Loại Mô tả chức OSC1/CLKI 13 I Dao động tinh thể lối vào dao động OSC2/CLKO 14 O Dao động tinh thể lối xung nhịp MCLR/Vpp I/P RA0/AN0 I/O Vào/ số Lối vào analog RA1/AN1 I/O Vào/ số Lối vào analog Vào số lối vào analog Lối vào điện áp chuẩn V-ref ADC Lối Vref so sánh Lối vào reset Lối vào điện áp nạp trình Vpp RA2/AN2/V-reff/CVRef I/O RA3/AN3/V+Ref I/O Vào/ số Lối vào analog Lối vào điện áp chuẩn V-ref ADC RA4/TOCKI/C1OUT I/O Vào/ra số cực máng ngỏ Lối vào xung cho timer Lối so sánh RA5/SS/AN4/C2OUT I/O Vào/ra số lối vào chọn SOI Lối vào SVTH:Lê Minh Tâm-Lê Ngọc Thương 36 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi analog lối so sánh RB0/INT 33 I/O Vào/ra số Lối vào ngắt RB1 34 I/O Vào/ra số RB2 35 I/O Vào/ra số RB3/PGM 36 I/O Vào/ra số Nạp trình LVP RB4 37 I/O Vào/ra số RB5 38 I/O Vào/ra số RB6 39 I/O Vào/ra số Xung nhịp nạp trình ICSP RB7 40 I/O Vào/ra số Dữ nạp trình ICSP RC0/T1OSO/T1CKI 15 I/O Vào/ra số Tạo dao động timer Xung nhịp cho timer RC1/T1OSI/CCP2 16 I/O Vào/ra số Tạo timer1 Lối vào Capture Lối Compare2 Lối PWM2 RC2/CCP1 17 I/O Vào/ra số Lối vào Vào/ra số Capture1 Lối PWM1 RC3/SCK/SCL 18 I/O Vào/ra số Nhịp đồng choSPI I2C RC4/SDI/SDA 23 I/O Vào/ra số Vào liệu SPI Vào/ra liệu I2C RC5/SDO 24 I/O Vào/ra số Ra liệu SPI RC6/TX/CK 25 I/O Vào/ra số Cổng truyền thông không đồng Xung nhịp truyền đồng RC7/RX/DT 26 I/O Vào/ra số Cổng nhận không đồng Dữ liệu đồng RD0 19 I/O Vào/ra số Cổng song song tớ RD1 20 I/O Vào/ra số Cổng song song tớ RD2 21 I/O Vào/ra số Cổng song song tớ RD3 22 I/O Vào/ra số Cổng song song tớ RD4 27 I/O Vào/ra số Cổng song song tớ RD5 28 I/O Vào/ra số Cổng song song tớ RD6 29 I/O Vào/ra số Cổng song song tớ SVTH:Lê Minh Tâm-Lê Ngọc Thương 37 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi RD7 30 I/O Vào/ra sô Cổng song song tớ RE0/RD/AN5 I/O Vào/ra số Điều khiển RD cổng song song RE1/WR/AN6 I/O Vào/ra số Điều khiển WR cổng song song RE2/CS/AN7 I/O Vào/ra số Điều khiển CS cổng song song Vss 12,31 I/O Đất chung cho lối vàp/ra analog Vdd 11,32 I/O Cấp nguồn dương II.4 Tổ chức nhớ Có nhớ riêng biệt vi điều khiển PIC16F877A gồm: Bộ nhớ liệu, nhớ chương trình , nhớ EEPROM II.4.1 Bộ nhớ chương trình Bộ nhớ chương trình vi điều khiển PIC16F877A nhớ flash, dung lượng nhớ 8K word (1 word = 14 bit) phân thành nhiều trang (từ page0 đến page 3) Như nhớ chương trình có khả chứa 8*1024 = 8192 lệnh (vì lệnh sau mã hóa có dung lượng word (14 bit) Khi vi điều khiển reset, đếm chương trình đến địa 0000h (Reset vector) Khi có ngắt xảy ra, đếm chương trình đến địa 0004h (Interrupt vector) Bộ nhớ chương trình không bao gồm nhớ stack không địa hóa đếm chương trình SVTH:Lê Minh Tâm-Lê Ngọc Thương 38 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi Bộ nhớ chương trình PIC16F877A II.4.2 Bộ nhớ liệu Bộ nhớ liệu chia thành bank, bank có dung lượng 128 byte RAM tĩnh Mỗi bank bao gồm ghi có chức đặc biệt SFR (Special Function Register) nằm vùng địa thấp, ghi mục đích chung GPR (General Purpose Register) nằm vùng địa cao Các ghi SFR thường xuyên sử dụng STATUS, INTCON, FSR bố trí tất bank giúp thuận tiện trình truy xuất SVTH:Lê Minh Tâm-Lê Ngọc Thương 39 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi Sơ đồ tổ chức nhớ liệu PIC16F877A * Stack Stack không nằm nhớ chương trình hay nhớ liệu mà vùng nhớ đặc biệt không cho phép đọc hay ghi Khi lệnh CALL thực hay ngắt xảy làm chương trình bị rẽ nhánh, giá trị đếm chương trình PC tự động vi điều khiển cất vào stack Khi lệnh RETURN, RETLW hat RETFIE thực thi, giá trị PC tự SVTH:Lê Minh Tâm-Lê Ngọc Thương 40 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi nhận liệu Bit OERR phải xóa phần mềm cách xóa set cờ CREN Bit FERR (RCSTA) set để báo lỗi khung liệu nhận tức không nhận bit stop Ở chế độ nhận bit, bit thứ đưa vào bit RX9D ghi RCSTA bit cần đọc trước đọc bit liệu ghi RCREG đọc ghi RCREG làm thay đổi giá trị bit RX9D Các bước cần tiến hành để nhận liệu: Tạo xung truyền baud cách nạp giá trị vào ghi điều khiển RSBRD bit điều khiển tốc độ baud BRGH Cho chế độ bất đồng hoạt động cách xóa bit SYNC set bit SPEN Set bit RCIE cần sử dụng ngắt Set bit RX9 sử dụng chế độ truyền bit Set bit CREN phép truyền liệu (lúc bit TXIF set) Sau liệu nhận, cờ RCIF set ngắt kích hoạt (nếu RCIE set) Đọc bit thứ ghi RCSTA chế độ bit liệu Đọc bit liệu ghi RCREG Nếu có lỗi truyền nhận, xóa lỗi cách xóa bit CREN 10 Nếu sử dụng ngắt nhận kiểm tra lại bit GIE PEIE ghi INTCON II.9.2 USART đồng USART đồng kích hoạt cách set bit SYNC hoạt động kiểu bán song công (half-duplex) Cổng giao tiếp chân RC7/RX/DT RC6/TX/CK cho phép bởằng cách set bit SPEN USART đồng có chế độ hoạt động Master chọn cách set bit CSRC TXSTA Slave chọn cách xóa bit CSRC TXSTA Điểm khác biệt hai chế độ chế độ Master lấy xung clock từ tạo xung baud BRG chế độ Slave lấy xung clock từ bên qua chân RC6/TX/CK Các ghi liên quan tới trình truyền nhận liệu USART: Thanh ghi INTCON (địa 0Bh, 8Bh,10Bh, 18Bh): cho phép tất ngắt Thanh ghi PIR1 (địa 0Ch): chứa cờ hiệu TXIF Thanh ghi PIE1 (địa 8Ch): chứa bit cho phép ngắt truyền TXIE SVTH:Lê Minh Tâm-Lê Ngọc Thương 53 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi Thanh ghi RCSTA (địa 18h): chứa bit cho phép cổng truyền liệu (chân RC7/RX/DT RC6/TX/CK) Thanh ghi TXREG (địa 19h): ghi chứa liệu cần truyền Thanh ghi TXSTA (địa 98h): ghi xác lập thông số cho việc truyền Thanh ghi SPBRG (địa 99h): xác định tốc độ baud II.9.2.1Truyền liệu chế độ Master Trình tự truyền liệu ghi, cờ hiệu giống chế độ USART truyền bất đồng Các bước cần tiến hành để truyền liệu: Tạo xung truyền baud cách nạp giá trị vào ghi điều khiển RSBRD bit điều khiển tốc độ baud BRGH Cho chế độ đồng hoạt động cách set bit SYNC set bit SPEN Set bit TXIE cần sử dụng ngắt Set bit TX9 sử dụng chế độ truyền bit Set bit TXEN phép truyền liệu (lúc bit TXIF set) Nếu gửi bit liệu ghi bit thứ vào TX9D Đưa bit liệu vào ghi TXREG Nếu sử dụng ngắt truyền kiểm tra lại bit GIE PEIE ghi INTCON II.9.2.2 Nhận liệu chế độ Master Trình tự nhận liệu ghi, cờ hiệu giống chế độ USART nhận bất đồng Các bước cần tiến hành để nhận liệu: Tạo xung truyền baud cách nạp giá trị vào ghi điều khiển RSBRD bit điều khiển tốc độ baud BRGH Cho chế độ bất đồng hoạt động cách xóa bit SYNC set bit SPEN Xóa bit CREN SREN Set bit RCIE cần sử dụng ngắt Set bit RX9 sử dụng chế độ truyền bit Nếu nhận word liệu set bit SREN, nhận chuỗi liệu set bit CREN SVTH:Lê Minh Tâm-Lê Ngọc Thương 54 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi Sau liệu nhận, cờ RCIF set ngắt kích hoạt (nếu RCIE set) Đọc bit thứ ghi RCSTA chế độ bit liệu Đọc bit liệu ghi RCREG 10 Nếu có lỗi truyền nhận, xóa lỗi cách xóa bit CREN 11 Nếu sử dụng ngắt nhận kiểm tra lại bit GIE PEIE ghi INTCON USART chế độ Slave Chế độ khác với chế độ truyền nhận USART chỗ họat động PIC16F877A chế độ ngủ (sleep mode), xung clock nhận từ chân RC6/TX/CK Truyền liệu chế độ Slave Nếu hai từ ghi vào ghi TXREG trước lênh ngủ (sleep) thực thi trình xảy sau: Từ liệu đưa vào ghi TSR để truyền Từ liệu thứ hai nằm ghi TXREG Cờ hiệu TXIF không set Sau từ dịch khỏi ghi TSR, ghi TXREG tiếp tục truyền từ thứ hai vào ghi TSR cờ hiệu TXIF set Nếu ngắt truyền cho phép ngắt đánh thức vi điều khiển, đếm chương trình tới địa chứa chương trình ngắt (0004h) Các bước tiến hành truyền liệu: Set bit SYNC, SPEN, xóa bit CSRC Xóa bit CREN, SREN Set bit TXIE sử dụng ngắt Nếu định dang liệu bit set bit TX9 Set bit TXEN Nếu gửi bit liệu ghi bit thứ vào TX9D Đưa bit liệu vào ghi TXREG SVTH:Lê Minh Tâm-Lê Ngọc Thương 55 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi Nếu sử dụng ngắt truyền kiểm tra lại bit GIE PEIE ghi INTCON Nhận liệu chế độ Slave Ở chế độ không chịu tác động bit SREN Khi bit CREN set trước lệnh ngủ thực thi, từ tiếp tục nhận Sau liệu đưa từ ghi RSR vào ghi RCREG bit RCIF set Nếu bit RCIE set, ngắt thực thi vi điều khiển đánh thức, đếm chương trình tới địa chứa chương trình ngắt (0004h) để thực thi ngắt Các bước tiến hành nhận liệu: Set bit SYNC, SPEN, xóa bit CSRC Set bit RCIE sử dụng ngắt Nếu định dang liệu bit set bit RX9 Set bit CREN để bắt đầu nhận liệu Cờ RCIF set nhận từ liệu, ngắt kích hoạt Nếu gửi bit liệu đọc bit thứ ghi RCSTA Đọc bit liệu vào ghi RCREG Nếu có lỗi xảy truyền nhận xóa bit CREN để xóa lỗi Nếu sử dụng ngắt truyền kiểm tra lại bit GIE PEIE ghi INTCON II.10 I²C PIC16F877A có giao tiếp đồng MSSP (Master Synchronous Serial Port) Bộ giao tiếp họat động theo kiểu SPI (Serial Peripheral Interface) I²C SVTH:Lê Minh Tâm-Lê Ngọc Thương 56 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi Bộ MSSP kiểu I²C hoạt động dạng chủ (Master) tớ (Slave), sử dụng chân RC3/SCK/SCL làm chân Serial clock (SCL) chân RC4/SDI/SDA làm chân Serial data (SDA) Ta phải cài đặt chế độ xuất nhập cho hai chân ghi TRISC Giao tiếp I²C sử dụng ghi PIC16F877A là: MSSP Control Register (SSPCON): điều khiển MSSP MSSP Control Register (SSPCON2): điều khiển MSSP MSSP Status Register (SSPSTAT): chứa trạng thái hoạt động MSSP Serial Receive/Transmit Buffer Register (SSPBUF): đệm MSSP Shift Register (SSPSR): ghi dịch truyền nhận liệu MSSP Address Register (SSPADD): chứa địa giao diện MSSP Thanh ghi SSPCON, SSPCON2 cho phép đọc ghi Thanh ghi SSPSTAT cho đọc ghi bit đầu Thanh ghi SSPBUF chứa liệu truyền nhận ghi đệm cho ghi SSPSR Thanh ghi SSPADD chứa địa thiết bị ngoại vi cần truy xuất liệu I²C hoạt động slave mode Ở master mode, ghi SSPADD chứa giá trị tạo tốc độ baud cho xung clock dùng cho truyền nhận Bộ MSSP hoạt động bit cho phép SSPEN (SSPCON) set, bốn bit cuối ghi SSPCON dùng để chọn chế độ hoạt động cho I²C là: I²C Master mode, clock = OSC/4 (SSPADD + 1) I²C Slave mode (7-bit địa chỉ) I²C Slave mode (10-bit địa chỉ) I²C Slave mode (7-bit địa chỉ) với cho phép ngắt start stop bit I²C Slave mode (10-bit địa chỉ) với cho phép ngắt start stop bit I²C Firmware Controlled Master mode * I²C Master mode I²C master mode xác lập cách đưa giá trị thích hợp vào bit SSPM ghi SSPCON set bit SSPEN Ở chế độ này, chân SCL SDA điều khiển phần cứng MSSP SVTH:Lê Minh Tâm-Lê Ngọc Thương 57 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi Sơ đồ khối MSSP (I²C master mode) Ở chế độ này, vi điều khiển tao xung start, stop xung giao tiếp nối tiếp Xung tạo từ BRG Giá trị xác định tần số baud lấy từ bit thấp ghi SSPADD Khi liệu đưa vào ghi SSPBUF, bit BF set vào BRG tự động đếm tự động nạp lại tràn Sơ đồ khối BRG I²C master mode SVTH:Lê Minh Tâm-Lê Ngọc Thương 58 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi * Điều kiện Start Để tạo điều kiện start, trước hết bit cho phép tạo điều kiện start SEN (Start Condition Enabled) (SSPCON2) chân SDA, SCL mức cao, tao tốc độ baud nạp giá trị từ bit thấp SSPADD bắt đầu đếm Sau khoảng thời gian TBRG, chân SDA đưa xuống mức thấp SCL mức cao – điều kiện start thực Khi bit S (SSPSTAT) set Sau tạo điều kiện start, bit SEN tự động xóa, BRG tự động nạp lại Giản đồ xung điều kiện start I²C master mode Trong trường hợp điều kiện start không hình thành cờ BCLIF (Bus Collision Interrupt Flag) set I²C trạng thái tạm ngưng hoạt động * Điều kiện Start lặp lại (Repeated Start) Để tao diều kiện start lặp lại, bit RSEN (Receive Enable ) (SSPCON2) phải set, I²C trạng thái tạm ngưng hoạt động, chân SCL đưa xuống mức thấp, chân SDA đưa lên mức cao, tao tốc độ baud nạp giá trị ghi SSPADD bắt đầu đếm Sau khoảng thời gian TBRG, chân SCL đưa lên mức cao khoảng thởi gian TBRG Trong khoảng thởi gian T BRG kế tiếp, chân SDA đưa xuống mức thấp SCL mức cao Tiếp theo, bit RSEN (SSPCON2) tự động xóa, BRG không nạp lại, SDA giữ mức thấp, điều kiện start lặp lại hình thành S (SSPSTAT) set Lúc đưa địa slave vào ghi SSPBUF SVTH:Lê Minh Tâm-Lê Ngọc Thương 59 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi Giản đồ xung điều kiện start lặp lại I²C master mode * Điều kiện Stop Khi muốn kết thúc trình truyền nhận liệu, vi điều khiển tạo xung stop cách set bit PEN (Stop Condition Enable) (SSPCON2), chân SDA đưa xuống mức thấp, tao tốc độ baud nạp giá trị ghi SSPADD bắt đầu đếm Sau truyền nhận xong bit thứ 9, chân SCL giữ mức thấp sau cạnh xuống thứ Sau khoảng thời gian TBRG, chân SCL đưa lên mức cao khoảng thởi gian TBRG Sau chân SDA đưa lên mức cao, bit P (Stop bit ) (SSPSTAT) set, sau khoảng thời gian T BRG bit PEN (SSPCON2) xóa cờ SSPIF set Giản đồ xung điều kiện stop I²C master mode * Điều kiện ACK (Acknowledge) SVTH:Lê Minh Tâm-Lê Ngọc Thương 60 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi Điều kiện ACK Not ACK dùng để bên nhận báo cho bên truyền biết bên nhận nhận bit liệu Nếu muốn gửi xung Not ACK set bit ACKDT (Acknowledge Data bit ) (SSPCON2) gửi xung ACK xóa bit Để gửi điều kiện phải set bit ACKEN (Acknowledge Sequence Enable) (SSPCON2) Khi bit set, chân SCL đưa xuống mức thấp, xung ACK đưa vào chân SDA, BRG bắt đầu đếm xuống Sau khoảng thời gian T BRG, chân SCL đưa lên mức cao khoảng thởi gian T BRG Sau bit ACKEN xóa, MSSP ngưng hoạt động, chờ lệnh Giản đồ xung điều kiện ACK I²C master mode II.10.1 Truyền liệu Xung clock phát từ chân SCL liệu đưa từ chân SDA Byte gửi phải byte địa xác định slave với bit Byte địa đưa vào ghi SSPBUF, cờ BF (Buffer Full Status) tự động set, BRG tự động đếm Khi đó, bit SSPBUF dịch theo cạng xuống xung clock sau điều kiện start Sau cạnh xuống xung clock thứ 8, cờ BF xóa, master ngưng tác động lên chân SDA để chờ tín hiệu ACK từ slave có địa trùng với địa vừa truyền Bit ACK đưa vào bit ACKSTAT (Acknowledge Status) (SSPCON2) Tại cạnh xuống thứ SCL, cờ SSPIF (Synchronous Serial Port Interrupt Flag) (PIR1) set Sau liệu đưa vào ghi SSPBUF để chuẩn bị gửi Quá trình gửi tương tự trình gửi byte địa SVTH:Lê Minh Tâm-Lê Ngọc Thương 61 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi Giản đồ xung truyền liệu I²C master mode Muốn kết thức trình truyền, sau nhận xung ACK, master gửi điều kiện stop để dừng trình truyền II.10.2 Nhận liệu Trước tiên, phải truyền địa slave với bit Quá trình truyền nói Tiếp theo, ta phải set bit RCEN (SSPCON2) phép nhận BRG bắt đầu đếm Sau slave truyền điều kiện ACK, bắt đầu truyền liệu Master nhận liệu vào ghi dịch SSPSR Sau cạnh xuống thứ – nhận đủ bit liệu, cờ hiệu cho phép nhận RCEN xóa, cờ BF SSPIF set, BRG dừng, SCL đưa mức thấp, MSSP ngưng hoạt động chờ lệnh Lúc liệu ghi SSPSR đưa vào ghi SSPBUF, cờ BF xóa, master gửi xung ACK cách set bit ACKEN Muốn dừng viện nhận liệu, sau nhận byte liệu cuối, master không truyền xung ACK mà truyền xung Not ACK cách set bit ACKDT set bit ACKEN SVTH:Lê Minh Tâm-Lê Ngọc Thương 62 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi Giản đồ xung nhận liệu I²C master mode SVTH:Lê Minh Tâm-Lê Ngọc Thương 63 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi Bit điều khiển ngắt RB0/INT nằm ghi INTCON, ghi chứa bit cho phép ngắt toàn cục GIE (Global Interrupt Enable) INTCON , bit cho phép ngắt ngoại vi PEIE (Peripheral Interrupt Enable) INTCON Bit điều khiển ngắt khác nằm ghi PIE1 PIE2, cờ ngắt nằm ghi PIR1 PIR2 Trong thời điểm có chương trình ngắt thực thi, chương trình ngắt kết thúc lệnh RETFIE (Return from Interrupt) để trở chương trình Khi chương trình ngắt thực thi, bit GIE tự động xóa, địa chương trình cất vào stack đếm chương trình đến địa 0004h Khi lệnh RETFIE thực thi bit GIE tự động set để tiếp tục cho phép ngắt Trước thực thi chương trình ngắt, nội dung số ghi SFR STATUS, PCLATH cần lưu lại nạp lại nội dung sau thực thi xong chương trình ngắt Ta phải làm thực chương trình ngắt, nội dung ghi thay đổi trở vể chương trình chính, chương trình hoạt động không xác Các cờ hiệu dùng để kiểm tra ngắt xảy cờ ngắt phải xóa phần phềm sau thực xong chương trình ngắt cờ SVTH:Lê Minh Tâm-Lê Ngọc Thương 64 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi II.11 Ngắt PIC16F877A có 15 nguồn ngắt điều khiển ghi INTCON, ngắt điều khiển bit cho phép cờ ngắt riêng Các cờ ngắt hoạt động bình thường thỏa mãn điều kiện ngắt, không phụ thuộc vào bit cho phép Sơ đồ logic tất ngắt PIC16F877A - Ngắt chân INT - Ngắt tràn Timer - Ngắt tràn Timer - Ngắt tràn Timer - Ngắt thay đổi trạng thái chân Port B - Ngắt so sánh điện - Ngắt Port song song - Ngắt USART - Ngắt nhận liệu SVTH:Lê Minh Tâm-Lê Ngọc Thương 65 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi - Ngắt truyền liệu - Ngắt chuyển đổi A/D - Ngắt hình LCD - Ngắt hòan tất ghi EEPROM - Ngắt moduleCCS - Ngắt module SSP Bit điều khiển ngắt RB0/INT nằm ghi INTCON, ghi chứa bit cho phép ngắt toàn cục GIE (Global Interrupt Enable) INTCON , bit cho phép ngắt ngoại vi PEIE (Peripheral Interrupt Enable) INTCON Bit điều khiển ngắt khác nằm ghi PIE1 PIE2, cờ ngắt nằm ghi PIR1 PIR2 Trong thời điểm có chương trình ngắt thực thi, chương trình ngắt kết thúc lệnh RETFIE (Return from Interrupt) để trở chương trình Khi chương trình ngắt thực thi, bit GIE tự động xóa, địa chương trình cất vào stack đếm chương trình đến địa 0004h Khi lệnh RETFIE thực thi bit GIE tự động set để tiếp tục cho phép ngắt Trước thực thi chương trình ngắt, nội dung số ghi SFR STATUS, PCLATH cần lưu lại nạp lại nội dung sau thực thi xong chương trình ngắt Ta phải làm thực chương trình ngắt, nội dung ghi thay đổi trở vể chương trình chính, chương trình hoạt động không xác Bên cạnh ngắt có bit điều khiển cờ ngắt riêng Các cờ ngắt set bình thường thỏa mãn điều kiện ngắt xảy bất chấp trạng thái bit GIE, nhiên hoạt động ngắt phụ thuôc vào bit GIE bit điều khiển khác Bit điều khiển ngắt RB0/INT TMR0 nằm ghi INTCON, ghi chứa bit cho phép ngắt ngoại vi PEIE Bit điều khiển ngắt nằm ghi PIE1 PIE2 Cờ ngắt ngắt nằm ghi PIR1 PIR2 Trong thời điểm có chương trình ngắt thực thi, chương trình ngắt kết thúc lệnh RETFIE Khi chương trình ngắt thực thi, bit GIE tự động xóa, địa lệnh chương trình cất vào nhớ Stack đếm chương trình đến địa 0004h Lệnh RETFIE dùng SVTH:Lê Minh Tâm-Lê Ngọc Thương 66 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi để thoát khỏi chương trình ngắt quay trở chương trình chính, đồng thời bit GIE set phép ngắt hoạt động trở lại Các cờ hiệu dùng để kiểm tra ngắt xảy phải xóa chương trình trước cho phép ngắt tiếp tục hoạt động trở lại để ta phát thời điểm mà ngắt xảy Đối với ngắt ngoại vi ngắt từ chân INT hay ngắt từ thay đổi trạng thái pin PORTB (PORTB Interrupt on change), việc xác định ngắt xảy cần chu kì lệnh tùy thuộc vào thời đểm xảy ngắt SVTH:Lê Minh Tâm-Lê Ngọc Thương 67 ... bit 53 lệnh 35 lệnh nguồn tạo ngắt có 15 nguồn tạo ngắt không ưu SVTH:Lê Minh Tâm-Lê Ngọc Thương 33 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi ưu tiên tiên II .3 Sơ đồ khối tính chân PIC1 6F877A: II .3. 1... Thương 36 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi analog lối so sánh RB0/INT 33 I/O Vào/ra số Lối vào ngắt RB1 34 I/O Vào/ra số RB2 35 I/O Vào/ra số RB3/PGM 36 I/O Vào/ra số Nạp trình LVP RB4 37 I/O... SVTH:Lê Minh Tâm-Lê Ngọc Thương 35 Đồ Án Tốt Nghiệp GVHD:Bùi Thị Kim Chi II .3. 2 Sơ đồ chân PIC1 6F877A: II .3. 3 Tính chân : Tên Chân Loại Mô tả chức OSC1/CLKI 13 I Dao động tinh thể lối vào dao

Ngày đăng: 06/09/2017, 23:24

Hình ảnh liên quan

Trên hình vẽ ta thấy, ở cấu trúc Von Neumann thì bộ nhớ chương trình và bộ nhớ dữ liệu nằm chung trong một bộ nhớ - Chuong 3 gioi thieu pic 16f877a

r.

ên hình vẽ ta thấy, ở cấu trúc Von Neumann thì bộ nhớ chương trình và bộ nhớ dữ liệu nằm chung trong một bộ nhớ Xem tại trang 2 của tài liệu.
Hình :Sơ đồ khối Timer0. - Chuong 3 gioi thieu pic 16f877a

nh.

Sơ đồ khối Timer0 Xem tại trang 16 của tài liệu.
Hình :Sơ đồ khối của Timer1:      II.7.3 Timer 2. - Chuong 3 gioi thieu pic 16f877a

nh.

Sơ đồ khối của Timer1: II.7.3 Timer 2 Xem tại trang 17 của tài liệu.
Hình: khối ADC - Chuong 3 gioi thieu pic 16f877a

nh.

khối ADC Xem tại trang 19 của tài liệu.
Trong trường hợp điều kiện start không được hình thành thì cờ BCLIF (Bus Collision Interrupt Flag) được set và I²C ở trạng thái tạm ngưng hoạt động. - Chuong 3 gioi thieu pic 16f877a

rong.

trường hợp điều kiện start không được hình thành thì cờ BCLIF (Bus Collision Interrupt Flag) được set và I²C ở trạng thái tạm ngưng hoạt động Xem tại trang 29 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan