1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Đề tài MẠCH đèn GIAO THÔNG THỜI GIAN THỰC

91 811 24

Đ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

Thông tin cơ bản

Định dạng
Số trang 91
Dung lượng 2,88 MB

Nội dung

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 1

KHOA: Đ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 4

CHƯƠ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 5

CHƯƠ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 6

CHƯƠ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 8

CHƯƠ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 9

CHƯƠ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 10

2.2 Sơ lược về các chân của PIC 16F877A:

Trang 14

Sơ đồ khối PIC16F877A

Trang 15

2.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 17

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

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 19

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ụ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 20

2.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 21

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

Trang 22

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

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 25

2.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 26

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

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 27

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

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

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 30

GVHD: ĐỖ ĐỨ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 31

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

GVHD: ĐỖ ĐỨ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 34

GVHD: ĐỖ ĐỨ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 35

Chứ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 36

GVHD: ĐỖ ĐỨC TUẤN 31 SVTH:NGUYỄN QUANG TRUNG

Bảng chức năng Port B :

Trang 37

Bả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 39

Bả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 40

GVHD: ĐỖ ĐỨ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

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w