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... Thanh ghi cờ của các ngắt n
Trang 1KHOA: ĐIỆN TỬ - TIN HỌC
LỚP: CĐ ĐTVT 08A
ĐỀ TÀI:
GVHD: ĐỖ ĐỨC TUẤN SVTH: NGUYỄN QUANG TRUNG
LÊ DUY TÂN
KHÓA HỌC: 2008 -2011
Trang 2………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Ngày….Tháng….Năm… Giáo viên hướng dẫn
Trang 3………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Ngày….Tháng….Năm…
Giáo viên phản biện
Trang 4CHƯƠNG DẪN NHẬP 3
CHƯƠNG 2.VI ĐIỀU KHIỂN PIC 16F877A 4
2.1 Sơ lược về Vi điều khiển PIC 16F877A: 4
2.2 Sơ lược về các chân của PIC 16F877A: 5
2.3 Một số điểm đặc biệt của CPU: 10
2.3.1 Dao động: 10
2.3.2 Reset: 11
2.3.3 MCLR: 11
2.3.4 Interrupts: 12
2.3.5 Bộ định thời giám sát (Watch Dog Timer -WDT): 13
2.3.6 Bộ nhớ chương trình: 15
2.3.7 Bộ nhớ dữ liệu: 15
2.4 I/O ports: 28
2.4.1 Port A và thanh ghi TRISA: 28
2.4.2 Port B và thanh ghi TRISB: 30
2.4.3 Port C và thanh ghi TRISC: 32
2.4.4 Port D và thanh ghi TRISD: 33
2.4.5 Port E và thanh ghi TRISE: 34
2.5 Timers: 36
2.5.1 Timer 0 : 36
2.5.2 Timer 1 : 38
2.5.3 Timer 2 : 41
2.5.4 Module CCP: 43
2.5.5 Module CCP1: 43
2.5.6 Module CCP2: 44
2.5.7 Capture: 45
2.5.8 Compare: 45
2.5.9 PWM: 46
2.5.10 Module MSSP (Master Synchronous Serial Port): 48
Trang 5CHƯƠNG 3: CÁC LINH KIỆN DÙNG TRONG THIẾT KẾ MẠCH 54
3.1 ĐIỆN TRỞ: 54
3.1.1 Kí Hiệu: 54
3.1.2 Đơn vị: , K, M 54
3.1.3 Bảng màu giá trị: 54
3.1.4 Cách đọc : 55
3.2 TỤ ĐIỆN 56
3.2.1 Phân loại tụ điện và cách đọc tụ điện 56
3.2.2 Các loại tụ điện được dùng 56
3.3 LED: 58
3.3.1 LED ĐƠN : 58
3.3.2 LED 7 Đoạn : 58
3.4 IC 74247 60
3.4.1 Khái niệm 60
3.4.2 Mạch logic của IC 74247 61
CHƯƠNG 4: 62
THIẾT KẾ THI CƠNG VÀ CHƯƠNG TRÌNH 62
4.1 SƠ ĐỒ KHỐI MẠCH ĐIỀU KHIỂN ĐÈN GIAO THƠNG 62
4.2 MẠCH MƠ PHỎNG PROTEUS 63
4.3 NGUYÊN LÝ HOẠT ĐỘNG MẠCH 64
4.3.1 Sơ lược các khối: 64
4.3.2 Hoạt đơng: 64
4.4 CẤU TRÚC CHI TIẾT 64
4.4.1 KHỐI XỬ LÝ 64
4.4.2 KHỐI HIỂN THỊ 66
4.4.3 KHỐI BÀN PHÍM 68
4.4.4 MẠCH NGUỒN 70
4.5 LƯU ĐỒ GIẢI THUẬT CỦA MẠCH ĐIỀU KHIỂN ĐÈN GIAO THƠNG 70
Trang 6CHƯƠNG KẾT LUẬN 85 TÀI LIỆU THAM KHẢO 86
Trang 7Được học tập và rèn luyện suốt ba năm trời dưới mái trường Cao Đẳng Kỹ Thuật Cao Thắng là niềm vui và sự hãnh diện của bản thân em Ở đây, em nhận được sự chỉ bảo, dạy dỗ tận tình và chu đáo của quý thầy cô trường Cao Đẳng
Kỹ Thuật Cao Thắng nói chung và thầy cô Khoa Điện Tử-Tin Học nói riêng Tại ngôi trường này, em được học hỏi rất nhiều kiến thức và nó sẽ là hành trang giúp
em vào đời
Em xin bày tỏ lòng biết ơn đến quý thầy cô Trường Cao Đẳng Kỹ Thuật Cao Thắng đã truyền đạt cho em những kiến thức quý báu Xin cảm ơn thầy Đỗ Đức Tuấn người đã trực tiếp hướng dẫn em hoàn thành đồ án tốt nghiệp
Cuối cùng, em xin gởi đến quý thầy cô, ban Giám Hiệu trường Cao Đẳng
Kỹ Thuật Cao Thắng lời chúc sức khỏe và thành công nhất
Em xin chân thành cám ơn!
TP.HCM, Ngày 27 tháng 06 năm 2011
Trang 8CHƯƠNG DẪN NHẬP
Ngày nay, chúng ta đã quá quen thuộc với các cột đèn giao thông ở các ngã tư với ba màu cơ bản: đỏ, xanh, vàng Trước đây, người ta sử dụng bóng đèn sợi đốt để hiển thị các màu đèn, loại đèn này tiêu tốn nhiều điện năng, công suất thấp và tuổi thọ thường ngắn Nhưng với sự ra đời của đèn Led với giá thành rẻ, tiết kiệm năng lượng và tuổi thọ cao… thì đèn Led đã được ứng dụng rất nhiều trong các sản phẩm điện tử nhất là trong đèn giao thông
Chúng em đã cố gắng vận dụng những kiến thức đã học ở trường cùng với
sự tìm tòi, học hỏi để có thể hoàn thành tốt đồ án này Mặc dù rất cố gắng để hoàn thành đồ án này trong đúng thời gian quy định nhưng cũng khó tránh khỏi những thiếu sót Mong có sự đóng góp chân thành từ phía quý thầy cô cũng như các bạn Cuối cùng xin chân thành cám ơn quý thầy cô và các bạn
Yêu cầu đề tài:
Mạch hoạt động tốt
Hiển thị số trên led 7 đoạn theo thứ tự giảm dần
Thời gian đèn đỏ 30s ,vàng 3s ,xanh 27s
Nhập thời gian từ bàn phím theo ý muốn
Trang 9CHƯƠNG 2.VI ĐIỀU KHIỂN PIC 16F877A 2.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, 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
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
Trang 102.2 Sơ lược về các chân của PIC 16F877A:
Trang 14Sơ đồ khối PIC16F877A
Trang 152.3 Một số điểm đặc biệt của CPU:
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
Trang 16* 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)
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
Trang 17Ngõ 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
Trang 18 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)
2.3.5 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
Trang 19hiệ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
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
Trang 202.3.6 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
2.3.7 Bộ nhớ dữ liệu:
Trang 21Bộ 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
Trang 22Các Bank này được lựa chọn bằng 2 bit ở thanh ghi STATUS là RP0(Status<5>) và RP1(Status<6>)
2.3.7.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
2.3.7.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 thanh ghi chức năng đặc biệt:
Trang 252.3.7.3 Các thanh ghi chức năng đặc biệt:
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)
Bit 6 – 5 RP1 – RP0: bit lựa chọn bank thanh ghi (Dùng trong định điạ chỉ trực tiếp)
Bit 4 TO: time out bit
1: Lệnh xóa WDT hoặc Sleep xảy ra
0: WDT hoạt động
Bit 3 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
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
Thanh ghi tùy chọn (Option _Reg Register):
Trang 26Bit 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
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
1.2 s
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
Trang 27Bit 6 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 Bit 5 TMR0IE: bit cho phép ngắt khi timer 0 tràn
1: cho phép 0: không cho phép Bit 4 INTE:bit cho phép ngắt ngoài RB0/INT
1: cho phép 0: không cho phép 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: Timer0 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
Thanh ghi cho phép ngắt ngoại vi 1:
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
Trang 28Bit 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
Trang 29 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ó haọ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ó nắgt xảy ra Bit 2 CCP1IF: cờ báo ngắt CCP1
Trang 30GVHD: ĐỖ ĐỨC TUẤN 25 SVTH:NGUYỄN QUANG TRUNG
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 Unimplemented : read as ‘0’
Bit 6 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 Bit 4 EEIE: bi 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 d0 module CCP2
1: cho phép 0: không cho phép
Thanh ghi cờ của các ngắt ngọai 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 0: không có xung đột bus xảy ra Bit 0 CCP2IF: cờ abó ngắt CPP2
Chế độ Capture (bắt giữ):
Trang 311: 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):
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
Thanh ghi điều khiển nguồn (Power control register):
Bit 7-2 Unimplemented : read as ‘0’
Bit 1 POR:
Bit 0 BOR:
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
Trang 32GVHD: ĐỖ ĐỨC TUẤN 27 SVTH:NGUYỄN QUANG TRUNG
2.3.7.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
2.3.7.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
Ví dụ:
Thanh ghi tại địa chỉ 10h có giá trị 5Ah
Nếu ta đưa 10h vào thanh ghi FSR thì khi đọc thanh ghi INF ta sẽ có giá trị 5Ah
EEPROM là bộ nhớ có khả năng đọc và ghi trong điều kiện làm việc bình thường (khi nguồn Vdd không đổi) Bộ nhớ này không được định địa chỉ trực tiếp trong bản đồ bộ nhớ mà được định địa chỉ gián tiếp thông qua các thanh ghi chức năng đặc biệt:
EECON1
EECON2
EEDATA
Trang 33
2.4 I/O ports:
2.4.1 Port A và thanh ghi TRISA:
Port A gồm 6 chân từ RA0 đến RA5
Việc ghi giá trị váo thanh ghi TRISA sẽ qui
định cc1 chân của Port A là input hay out put
(nếu là 1 thì là input,là output nếu là 0) Việc
đọc thanh ghi Port A sẽ đọc trạng thái của các
chân ở Port A Việc ghi giá trị vào thanh ghi
Port A sẽ thay đổi trạng thái của các chân Port
A
Riêng chân RA4 được tích hợp chức
năng là chân cung cấp xung clock ngoài cho
Timer 0 (RA4/T0CKI) Những chân khác của
Port A được đa hợp với các chân ngõ vào
Analog của ADC và chân ngõ vào điện thế so
sánh của bộ so sánh Comparator.Hoạt động của
Trang 34GVHD: ĐỖ ĐỨC TUẤN 29 SVTH:NGUYỄN QUANG TRUNG
những chân này được quy định bằng những bit tương ứng trong các thanh ghi ADCCON1 và CMCON1 Khi các chân của Port A được sử dụng làm ngõ váo Analog thì các bit trong thanh ghi TRISA phải được set bằng 1
Trang 35Chức năng của các chân Port A
Bảng tóm tắt các thanh ghi liên quan đến Port A
2.4.2 Port B và thanh ghi TRISB:
Port B gồm 8 chân từ chân RB0-RB7 Việc ghi giá trị vào thanh ghi TRISB sẽ quy định các chân của Port B là input hay output (1 : input,0 : output) Việc đọc thanh ghi Port B sẽ đọc trạng thái của các chân ở Port B Việc ghi giá trị vào thanh ghi Port B sẽ thay đổi trạng thái của các chân Port B
Ba chân của Port B được đa hợp với chức năng In-Circuit Debugger và Low Voltage Programming function: RB3/PGM, RB6/PGC, RB7/PGD
Mỗi chân Port B có một transistor kéo lên Vdd Chức năng này hoạt động khi bit RBPU (Option <7>) được xóa.Chức năng này sẽ tự động được xóa khi Port B được quy định là input
Bốn chân của Port B từ RB7 đến RB4 có chức năng ngắt khi trạng thái chân Port B thay đổi (Khi Port B được quy định là output thì chức năng này không hoạt động Giá trị chân của Port được so sánh với giá trị đã được lưu trước đó, khi có sự sai lệch giữa 2 giá trị này ngắt sẽ xảy ra với cờ ngắt RBIF (INTCON<0) sẽ bật lên Ngắt có thể làm cho VĐK thoát khỏi trạng thái SLEEP
Bất cứ sự truy xuất nào trên Port B sẽ xóa trạng thái sai lệch, kết thúc ngắt
và cho phép xóa cờ ngắt RBIF
Trang 36GVHD: ĐỖ ĐỨC TUẤN 31 SVTH:NGUYỄN QUANG TRUNG
Bảng chức năng Port B :
Trang 37Bảng tóm tắt các thanh ghi liên quan đến Port B :
2.4.3 Port C và thanh ghi TRISC:
Port C gồm 8 chân từ chân RC0-RC7 Việc ghi giá trị váo thanh ghi TRISC sẽ quy định các chân của Port C là input hay output (1 : input,0 : output) Việc đọc thanh ghi Port C sẽ đọc trạng thái của các chân ở Port C Việc ghi giá trị vào thanh ghi Port C sẽ thay đổi trạng thái của các chân Port C
Các chân của Port C được đa hợp với các chức năng ngoại vi
Khi các chức năng ngoại vi được cho phép ta cần quan tâm chặt chẽ tới giá trị các bit của thanh ghi TRISC Một số chức năng ngoại vi sẽ ghi đè giá trị 0 lên các bit của thanh ghi TRISC và mặc định các chân này là output , ngoài ra một số chức năng ngoại vi khác sẽ tự động mặc định một số chân là ngõ vào.Do
đó cần xem xét kĩ các tính năng của các hàm ngọai vi để thiết lập giá trị các bit trong thanh ghi TRISC cho thích
Trang 38
GVHD: ĐỖ ĐỨC TUẤN 33 SVTH:NGUYỄN QUANG TRUNG
Bảng chức năng Port C :
Bảng tóm tắt các thanh ghi liên quan đến Port C :
2.4.4 Port D và thanh ghi TRISD:
Port D gồm 8 chân từ chân
RD0-RD7 Bên cạnh chức năng là
port xuất nhập, Port D còn có thể
hoạt động như một cổng song song
bằng cách set bit PSPMODE
(TRISE<4>), trong chế độ này buffer
ngõ vào là TTL
Trang 39Bảng chức năng Port D :
Bảng tóm tắt các thanh ghi liên quan đến Port D :
2.4.5 Port E và thanh ghi TRISE:
Port E có 3 chân RE0/RD/AN5,
RE1/WR/AN6, RE2/CS/AN7 có thể được
cấu hình như các chân xuất nhập thông
thường
Các chân của Port E có thể trở
thành cc1 chân điều khiển cho cổng song
song của VĐK khi bit PSPMODE
(TRISE<4>) được set bằng 1 Trong chế
độ này, người sử dụng phải đảm bảo các
chân của Port E là ngõ vào
Ngoài ra các chân Port E còn có thể
được cấu hình như các ngõ vào Analog, tại
chế độ này, khi đọc giá trị của các chân
này sẽ cho ta giá trị là 0
Thanh ghi TRISE quy định chức
năng xuất nhập của Port E ngay cả khi nó
được sử dụng như các ngõ vào Analog
Phải đảm bảo các chân này được quy định là ngõ vào trong chế độ này
Trang 40GVHD: ĐỖ ĐỨC TUẤN 35 SVTH:NGUYỄN QUANG TRUNG
Bảng chức năng các chân Port E :
Bảng tóm tắt các thanh ghi liên quan đến Port E :
Thanh ghi TRISE :
Các bit điều khiển trạng thái của Port song song
Bit 7 IBF : bit trạng thái báo buffer ngõ vào đầy
1 : một từ (word -16bit) được nhận vào và đang được đọc bởi CPU
0 : không có từ nào được nhận vào Bit 6 OBF: bit trạng thái báo buffer ngõ ra đầy
1 : buffer ngõ ra vẫn còn giữ một từ đã được đọc trước đó
0 : buffer ngõ ra đã được đọc
Bit 5 IBOV: bit báo trạng thái buffer ngõ vào tràn (trong chế độ Vi xử lí)
1 : chu kì ghi mới đã bắt đầu nhưng giá trị cũ vẫn còn trang buffer (phải được xóa bằng phần mềm)
0 : không có tràn xảy ra Bit 4 PSPMODE: bit chọn chế độ cổng song song cho Port D
1 : Port D được cấu hình như cổng song song
0 : Port D cấu hình như ngõ xuất nhập thông thường