1. Trang chủ
  2. » Thể loại khác

Chapter5 PortIO&UngDng GT V2q

44 75 2

Đ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 44
Dung lượng 1,47 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hơn nữa, việc ghi tới port ngụ ý rằng các chân port được đọc, giá trị này được thay đổi, và sau đó được ghi tới bộ bộ chốt dữ liệu port.. Việc đọc của thanh ghi LAT để trả lại các giá tr

Trang 1

CHƯƠNG 5: CÁC CỔNG VÀO/RA VÀ ỨNG DỤNG

Nội dung của chương này sẽ trình bày về cấu trúc, đặc trưng và các ứng dụng cho các

port (cổng) vào/ra (I/O) của các vi điều khiển PIC 18F2455/2550/4455/4550

Mục tiêu chính cho người đọc tham khảo chương này:

 Nắm vững cấu trúc các cổng vào/ra

 Biết lựa chọn các chân thích hợp của port để làm chức năng vào/ra số

 Có khả năng lập trình cho các port vào/ra bằng ngôn ngữ assembly và C18

 Có khả năng thiết kế và lập trình các ứng dụng thông thường: giao tiếp các LED đơn, LED 7 đoạn, LCD 2x16, loa buzzer

Tuỳ thuộc vào VĐK trong nhóm trên được chọn và các đặc trưng tương ứng cho phép, nhóm VĐK này có 5 port Trong đó có vài chân của các port I/O được tích hợp với các chức năng xen kẽ từ các đặc trưng ngoại vi của VĐK Nhóm VĐK này có khả năng cung dòng ra tại các port khá mạnh lên đến 25 mA

Mỗi port có 3 thanh ghi hỗ trợ cho các hoạt động của nó:

 Thanh ghi TRIS: thanh ghi trực tiếp dữ liệu

 Thanh ghi PORT: dữ liệu trên một chân được truy xuất nhờ thanh ghi PORT tương ứng Việc đọc thanh ghi PORT là đọc giá trị của chân I/O Trong khi đó, việc ghi của thanh ghi PORT là ghi giá trị tới bộ chốt dữ liệu port Hơn nữa, việc ghi tới port ngụ ý rằng các chân port được đọc, giá trị này được thay đổi, và sau đó được ghi tới bộ bộ chốt dữ liệu port

Thanh ghi LAT (latch): thanh ghi chốt dữ liệu vào/ra Thanh ghi LAT được liên kết với

chân I/O tương ứng Thanh ghi này cho phép đọc, ghi, thay đổi chốt dữ liệu ngõ ra của port Việc đọc của thanh ghi LAT để trả lại các giá trị đã được lưu giữ trong các ngõ

chốt ra của port (thay cho các giá trị trên các chân I/O như đọc thanh ghi PORT)

Sự khác nhau giữa các thanh ghi PORT và LAT có thể tóm lược như sau:

 Sự ghi vào PORT là ghi giá trị dữ liệu vào bộ chốt port

 Sự ghi vào LAT là ghi giá trị dữ liệu vào bộ chốt port

 Việc đọc PORT là đọc giá trị dữ liệu trên chân I/O

Trang 2

 Việc đọc LAT là đọc giá trị dữ liệu đã được cất trong bộ chốt port

Hình 5.1: tổ chức port I/O tổng quát

PORTA là port song hướng có độ rộng 8-bit Để chọn chiều vào/ra của từng chân ở PORTA phải sử dụng thanh ghi TRISA để đặt, nếu là chân ngõ vào thì bit TRISA tương ứng

bằng 1 (lúc này, bộ lái ngõ ra tương ứng ở trạng thái trở kháng cao), ngược lại là ngõ ra thì

bit TRISA tương ứng sẽ bằng 0 Ví dụ,

TRISA = FFh: toàn bộ PORTA là ngõ vào

TRISA = 00h: toàn bộ PORTA là ngõ ra

Bảng 5.1: tóm tắt PORTA

Chân Chức năng

Đặt TRIS I/O Kiểu I/O Diễn giải RA0/AN0 RA0 0 Ra Số Ngõ ra dữ liệu LATA<0>; không bị ảnh

hưởng bởi ngõ vào tương tự

1 Vào TTL Ngõ vào dữ liệu PORTA<0>; bị vô hiệu khi

ngõ vào tương tự được cho phép

AN0 1 Vào Tương tự Ngõ vào A/D kênh 0 và ngõ vào bộ so sánh

C1- Mặc định cấu hình do tác động POR;

không ảnh hưởng ngõ ra số

RA1/AN1 RA1 0 Ra Số Ngõ ra dữ liệu LATA<1>; không bị ảnh

hưởng bởi ngõ vào tương tự

1 Vào TTL Ngõ vào dữ liệu PORTA<1>; được bằng 0

do tác động của POR

AN1 1 Vào Tương tự Ngõ vào A/D kênh 1 và ngõ vào bộ so sánh

C2- Mặc định cấu hình do tác động POR;

không ảnh hưởng ngõ ra số

Trang 3

RA2/AN2/

V REF -/

CV REF

RA2 0 Ra Số Ngõ ra dữ liệu LATA<2>; không bị ảnh

hưởng bởi ngõ vào tương tự Bị vô hiệu khi ngõ ra CV REF được cho phép

1 Vào TTL Ngõ vào dữ liệu PORTA<2> Bị vô hiệu khi

các chức năng tương tự được cho phép; bị huỷ bỏ khi ngõ ra CV REF được cho phép

AN2 1 Vào Tương tự Ngõ vào A/D kênh 2 và ngõ vào bộ so sánh

C2+ Mặc định cấu hình do tác động POR; không bị ảnh hưởng ngõ ra tương tự

V REF - 1 Vào Tương tự Ngõ vào điện thế chuẩn thấp của A/D và bộ

so sánh

CV REF x Ra Tương tự Ngõ ra điện thế chuẩn bộ so sánh Cho phép

đặc trưng này huỷ bỏ I/O số

RA3/AN3/

V REF +

RA3 0 Ra Số Ngõ ra dữ liệu LATA<3>; không bị ảnh

hưởng bởi ngõ vào tương tự

1 Vào TTL Ngõ vào dữ liệu PORTA<3>; bị vô hiệu khi

ngõ vào tương tự được cho phép

AN3 1 Vào Tương tự Ngõ vào A/D kênh 3 và ngõ vào bộ so sánh

RA4 0 Ra Số Ngõ ra dữ liệu LATA<4>; không bị ảnh

hưởng bởi ngõ vào tương tự

1 Vào ST Ngõ vào dữ liệu PORTA<4>; bị vô hiệu khi

ngõ vào tương tự được cho phép

T0CKI 1 Vào ST Ngõ vào xung clock cho timer0

C1OUT 0 Ra Số Ngõ ra bộ so sánh 1; đảm bảo tính ưu tiên

trên dữ liệu port

RCV x Vào TTL Ngõ vào RCV bộ thu phát USB bên ngoài

RA5/AN4/

𝑺𝑺/

HLVDIN/

C2OUT

RA5 0 Ra Số Ngõ ra dữ liệu LATA<5>; không bị ảnh

hưởng bởi ngõ vào tương tự

1 Vào TTL Ngõ vào dữ liệu PORTA<5>; bị vô hiệu khi

ngõ vào tương tự được cho phép

AN4 1 Vào Tương tự Ngõ vào A/D kênh Mặc định cấu hình do tác

động POR

𝑆𝑆 1 Vào TTL Ngõ vào chọn tớ cho SSP (khối MSSP)

HLVDIN 1 Vào Tương tự Ngõ vào phát hiện điểm lỗi bên ngoài điện

thế cao/thấp

C2OUT 0 Ra Số Ngõ ra bộ so sánh 2; đảm bảo tính ưu tiên

trên dữ liệu port

OSC2/

CLKO/RA6

RA6 0 Ra Số Ngõ ra dữ liệu LATA<6> Chỉ có thể sử

dụng trong các chế độ ECIO, ECPIO, INTIO; mặt khác, đọc bằng 0

1 Vào TTL Ngõ vào dữ liệu PORTA<6> Chỉ có thể sử

dụng trong các chế độ ECIO, ECPIO, INTIO; mặt khác, đọc bằng 0

OSC2 x Ra Tương tự Kết nối ngõ ra hồi tiếp dao động chính (các

kiểu XT và HS)

CLKO x Ra Số Ngõ ra chu kỳ xung clock hệ thống (F OSC /4);

chỉ hữu dụng trong các kiểu EC, ECPLL và INTCKO

Chú thích:

ST = Schmitt buffer input; x = Tuỳ ý (bit TRIS không ảnh hưởng tới hướng vào/ra port hoặc bị

đè bởi lựa chọn này); TTL = TTL buffer input

Trang 4

Bảng 5.2: các thanh ghi liên hợp với PORTA

Chú thích:

“-”: không sử dụng, đọc bằng 0; các ô tô xám không được sử dụng cho PORTA

(1) RA6 sẽ là chân I/O khi đặt bit cấu hình dao động phù hợp và sau đó chọn bit TRISA6 phù hợp tương ứng Ngược lại, chân RA6 không phải là I/O, tất cả các bit RA6, LATA6 và TRISA6 sẽ được đọc bằng 0

Ví dụ 5.1: viết chương trình khởi tạo PORTA với RA3:0 là ngõ ra và RA7:4 là ngõ vào bằng

hợp ngữ và C18

Giải pháp:

Chương trình hợp ngữ:

clrf PORTA ; Xoá PORTA

clrf LATA ; Xoá nội dung LATA

Ví dụ 5.2: viết chương trình khởi tạo các chân của PORTA là RA3 và RA5 là các ngõ vào và

các chân RA2 và RA4 là các ngõ ra bằng C18

Trang 5

Ví dụ 5.3: viết chương trình xuất ra PORTA các giá trị 05h và 0Ah, các giá trị này được chốt

trong khoảng thời gian nào đó và chương trình lặp vô tận

Giải pháp:

Chương trình hợp ngữ:

movlw 0x0 ; WREG = 0x00

movwf TRISA ; Make PORTA as output port

Loop movlw 0x05 ; WREG = 0x05

movwf PORTA ; Put 05h on PORTA

call Delay

movlw 0x0A ; WREG = 0x0A

movwf PORTA ; Put 0Ah on PORTA

TRISA = 0; // Make PORTA as output port

for (; ;) // Repeat forever

{ PORTA = 0x05;

Delay10KTCYx(200);

PORTA = 0x0A;

Trang 6

Delay10KTCYx(200);

} }

PORTB là port song hướng có độ rộng 8-bit Để chọn chiều vào/ra của từng chân ở PORTB phải sử dụng thanh ghi TRISB để đặt, nếu là chân ngõ vào thì bit TRISB tương ứng

bằng 1 (lúc này, bộ lái ngõ ra tương ứng ở trạng thái trở kháng cao), ngược lại là ngõ ra thì

bit TRISB tương ứng sẽ bằng 0

Mỗi chân của PORTB đều có điện trở kéo lên bên trong Một bit điều khiển đơn có thể cho phép sử dụng toàn bộ điện trở kéo lên, đó là bit RBPU̅̅̅̅̅̅̅̅ (ở vị trí thanh ghi INTCON2<7>)

Mặc định, các điện trở kéo lên không sử dụng khi PORTB là ngõ ra và không cho phép khi ở trạng thái power-on reset

Sau reset, RB4:RB0 được cấu hình mặc định là các ngõ vào tương tự và RB7:RB5 là

các ngõ vào số Bằng cách lập trình bit cấu hình là PBADEN = 0 (CONFIG3H<1>),

RB4:RB0 sẽ được cấu hình là các ngõ vào/ra số

Bảng 5.3: tóm tắt PORTB

Chân Chức năng

Đặt TRIS I/O Kiểu I/O Diễn giải RB0/

AN12/

INT0/

FLT0/SDI/

SDA

RB0 0 Ra Số Ngõ ra dữ liệu LATB<0>; không bị ảnh

hưởng bởi ngõ vào tương tự

1 Vào TTL Ngõ vào dữ liệu PORTB<0>; sử dụng kéo

lên khi bit RBPU̅̅̅̅̅̅̅̅ = 0 Bị vô hiệu khi ngõ vào tương tự được cho phép(1).AN12 1 Vào Tương tự Ngõ vào A/D kênh 12 (1)

INT0 1 Vào ST Ngõ vào ngắt ngoài INT0

FLT0 1 Vào ST Ngõ vào lỗi PWM tăng cường; được tích

bằng phần mềm

SDI 1 Vào ST Ngõ vào dữ liệu SPI

SDA 1 Ra Số Ngõ ra dữ liệu I 2C (khối MSSP)

1 Vào I 2 C/SMB Ngõ vào dữ liệu I 2C (khối MSSP); kiểu ngõ

vào phụ thuộc vào cài đặt khối

RB1/

AN10/

INT1/

SCK/SCL

RB1 0 Ra Số Ngõ ra dữ liệu LATB<1>; không bị ảnh

hưởng bởi ngõ vào tương tự

1 Vào TTL Ngõ vào dữ liệu PORTB<1>; sử dụng kéo

lên khi bit RBPU̅̅̅̅̅̅̅̅ = 0 Bị vô hiệu khi ngõ vào tương tự được cho phép(1).AN10 1 Vào Tương tự Ngõ vào A/D kênh 10 (1)

INT1 1 Vào ST Ngõ vào ngắt ngoài INT1

SCK 0 Ra Số Ngõ ra xung clock SPI

1 Vào ST Ngõ vào xung clock SPI

SCL 0 Ra Số Ngõ ra xung clock I 2 C

1 Vào I 2 C/SMB Ngõ vào xung clock I 2 C

RB2 0 Ra Số Ngõ ra dữ liệu LATB<2>; không bị ảnh

hưởng bởi ngõ vào tương tự

Trang 7

RB2/AN8/

INT2/

VMO

1 Vào TTL Ngõ vào dữ liệu PORTB<2>; sử dụng kéo

lên khi bit RBPU̅̅̅̅̅̅̅̅ = 0 Bị vô hiệu khi ngõ vào tương tự được cho phép(1).AN8 1 Vào Tương tự Ngõ vào A/D kênh 8 (1)

INT2 1 Vào ST Ngõ vào ngắt ngoài INT2

VMO 0 Ra Số Ngõ ra dữ liệu VMO của bộ thu phát USB

RB3 0 Ra Số Ngõ ra dữ liệu LATB<3>; không bị ảnh

hưởng bởi ngõ vào tương tự

1 Vào TTL Ngõ vào dữ liệu PORTB<3>; sử dụng kéo

lên khi bit RBPU̅̅̅̅̅̅̅̅ = 0 Bị vô hiệu khi ngõ vào tương tự được cho phép(1).AN9 1 Vào Tương tự Ngõ vào A/D kênh 9 (1)

RB4 0 Ra Số Ngõ ra dữ liệu LATB<4>; không bị ảnh

hưởng bởi ngõ vào tương tự

1 Vào TTL Ngõ vào dữ liệu PORTB<4>; sử dụng kéo

lên khi bit RBPU̅̅̅̅̅̅̅̅ = 0 Bị vô hiệu khi ngõ vào tương tự được cho phép(1).AN11 1 Vào Tương tự Ngõ vào A/D kênh 11 (1)

KBI0 1 Vào TTL Ngắt do thay đổi chân

CSSPP (4) 0 Vào Số Ngõ ra điều khiển lựa chọn chip SPP

RB5/

KBI1/

PGM

RB5 0 Ra Số Ngõ ra dữ liệu LATB<5>

1 Vào TTL Ngõ vào dữ liệu PORTB<5>; sử dụng kéo

lên khi bit RBPU̅̅̅̅̅̅̅̅ = 0

KBI1 1 Vào TTL Ngắt do thay đổi chân

PGM x Vào ST Nhập chế độ lập trình nguồn đơn (ICSP)

Được thực hiện bằng các bit cấu hình LVP; tất cả các chức năng khác của chân bị vô hiệu

RB6/KBI2/

PGC

RB6 0 Ra Số Ngõ ra dữ liệu LATB<6>

1 Vào TTL Ngõ vào dữ liệu PORTB<6>; sử dụng kéo

lên khi bit RBPU̅̅̅̅̅̅̅̅ = 0

KBI2 1 Vào TTL Ngắt do thay đổi chân

PGC x Vào ST Ngõ vào xung clock (ICSP) thi hành nối

tiếp cho hoạt động ICSP và ICD (3)

RB7/KBI3/

PGD

RB7 0 Ra Số Ngõ ra dữ liệu LATB<7>

1 Vào TTL Ngõ vào dữ liệu PORTB<7>; sử dụng kéo

lên khi bit RBPU̅̅̅̅̅̅̅̅ = 0

KBI3 1 Vào TTL Ngắt do thay đổi chân

PGD x Ra Số Ngõ ra dữ liệu thi hành nối tiếp cho hoạt

(2) Chỉ định chân xen kẽ cho CCP2 khi CCP2MX = 0 Chỉ định mặc định là RC1

(3) Tất cả chức năng khác của chân bị vô hiệu khi hoạg động ICSP và ICD được cho phép (4) Chỉ các VĐK 40/44 chân

Trang 8

Bảng 5.4: tóm tắt các thanh ghi liên hợp với PORTB

“-”: không sử dụng, đọc bằng 0; các ô tô xám không được sử dụng cho PORTB

(1) Các thanh ghi này không được thực hiện trên VĐK 28 chân

Ví dụ 5.4: dùng C18 để viết chương trình xuất ra PORTB có giá trị 99h trong 50,000 lần Giải pháp:

#include <P18F4550.h>

void main(void)

{

unsigned int j;

TRISB = 0; // Make PORTB as output port

for (j = 0; j <= 50000; j++) // Repeat 50,000 times

{ PORTB = 0x99;

} while(1); // Stay here forever

Trang 9

{ PORTB = mynum[j];

} while(1); // Stay here forever

}

PORTC là port song hướng có độ rộng 7-bit Để chọn chiều vào/ra của từng chân ở PORTC phải sử dụng thanh ghi TRISC để đặt, nếu là chân ngõ vào thì bit TRISC tương ứng

bằng 1 (lúc này, bộ lái ngõ ra tương ứng ở trạng thái trở kháng cao), ngược lại là ngõ ra thì

bit TRISC tương ứng sẽ bằng 0 Các VĐK PIC18F2455/2550/4455/4550 không có chân RC3 Các chân RC4 và RC5 không có các bit TRISC được liên hợp với chúng Như các port

số, chúng chỉ có chức năng làm các ngõ vào số Khi được cấu hình chức năng USB, chiều dữ liệu được xác định bằng cấu hình và trạng thái của phân đoạn USB tại thời điểm cho phép Còn các chân còn lại trên PORTC sẽ được xác định chiều vào/ra bởi các bit TRISC tương ứng Vài chức năng ngoại vi chồng lấn bit TRISC để tạo chân đó là một ngõ vào Khi đó, người dùng phải lập trình bit TRISC tương ứng thích hợp trong đoạn thực hiện chức năng ngoại vi đó Như vậy, cần lưu ý là nội dung thanh ghi TRISC sẽ bị ảnh hưởng bởi chức năng ngoại vi chồng lấn

Bảng 5.5: tóm tắt PORTC

Chân Chức năng

Đặt TRIS I/O Kiểu I/O Diễn giải RC0/

T1OSO/

T13CKI

RC0 0 Ra Số Ngõ ra dữ liệu LATC<0>

1 Vào ST Ngõ vào dữ liệu PORTC<0>

T1OSO x Ra Tương tự Ngõ ra dao động Timer1; được cho phép

khi dao động Timer1 được cho phép Vô hiệu I/O số

T13CKI 1 Vào ST Ngõ vào bộ đếm Timer1/Timer3

1 Vào ST Ngõ vào dữ liệu PORTC<1>

T1OSI x Vào Tương tự Ngõ vào dao động Timer1; được cho phép

khi dao động Timer1 được cho phép Vô hiệu I/O số

1 Vào ST Ngõ vào bộ chụp ECCP1

P1A (3) 0 Ra Số Ngõ ra PWM tăng cường của ECCP1,

kênh A Có thể được định tri-state trong thời gian sự kiện tắt nguồn PWM

Trang 10

RC4/

D-/VM

RC4 - (2) Vào Tương tự Ngõ vào dữ liệu PORTC<4>; bị vô hiệu

khi USB được cho phép

D- - (2) Ra XCVR Ngõ ra đường ‘-’ vi phân bus USB (bộ thu

RC5 - (2) Vào Tương tự Ngõ vào dữ liệu PORTC<5>; bị vô hiệu

khi USB được cho phép

D+ - (2) Ra XCVR Ngõ ra đường ‘+’ vi phân bus USB (bộ

1 Vào ST Ngõ vào dữ liệu PORTC<6>

TX 0 Ra Số Ngõ ra dữ liệu phát nối tiếp bất đồng bộ

(khối EUSART) Người dùng phải cấu

1 Vào ST Ngõ vào dữ liệu PORTC<7>

RX 1 Vào ST Ngõ vào dữ liệu thu nối tiếp bất đồng bộ

(khối EUSART) Người dùng phải cấu

hình là ngõ ra

DT 1 Ra Số Ngõ ra dữ liệu nối tiếp đồng bộ (khối

EUSART)

1 Vào ST Ngõ vào dữ liệu nối tiếp đồng bộ (khối

EUSART) Người dùng phải cấu hình nó

là ngõ vào

SDO 0 Ra Số Ngõ ra dữ liệu SPI (khối MSSP)

Chú thích:

(1) Ấn định chân mặc định Sự chỉ định chân xen kẽ là RB3 (khi CCP2MX = 0)

(2) RC4 và RC5 không có bit TRIS tương ứng Trong kiểu port, các chân này chỉ là ngõ vào Hướng dữ liệu USB được xác định bằng cấu hình USB

(3) Chỉ các VĐK 40/44 chân

Bảng 5.6: tóm tắt các thanh ghi liên hợp với PORTC

Chú thích:

“-“: không sử dụng, đọc bằng 0; các ô tô xám không được sử dụng cho PORTC

(1) RC5 và RC4 chỉ sẵn sàng là các chân port khi khối USB được vô hiệu (UCON<3> = 0)

PORTD là port song hướng có độ rộng 8-bit Để chọn chiều vào/ra của từng chân ở PORTD phải sử dụng thanh ghi TRISD để đặt, nếu là chân ngõ vào thì bit TRISD tương ứng

Trang 11

bằng 1 (lúc này, bộ lái ngõ ra tương ứng ở trạng thái trở kháng cao), ngược lại là ngõ ra thì

bit TRISD tương ứng sẽ bằng 0

Mỗi chân của PORTD đều có điện trở kéo lên bên trong Một bit điều khiển đơn có thể

cho phép sử dụng toàn bộ điện trở kéo lên, đó là bit RDPU (ở vị trí thanh ghi PORTE<7>)

Các điện trở kéo lên sẽ tắt khi chân của port được cấu hình là một ngõ ra số hay các chức năng ngoại vi được tích hợp khác Hoạt động kéo lên cũng tắt khi ở trạng thái power-on reset

PORTD có thể sử dụng làm port truyền dữ liệu song song (SPP: Streaming Parallel

Port) Ở chế độ này, các bộ đệm dữ liệu ngõ vào sẽ tương thích với tín hiệu số TTL

Bảng 5.7: tóm tắt PORTD

Chân Chức năng

Đặt TRIS I/O Kiểu I/O Diễn giải RD0/SPP0 RD0 0 Ra Số Ngõ ra dữ liệu LATD<0>

1 Vào ST Ngõ vào dữ liệu PORTD<0>

1 Vào Tương tự Ngõ vào dữ liệu SPP<5>

P1B 0 Ra Số Ngõ ra PWM tăng cường ECCP1, kênh

1 Vào Tương tự Ngõ vào dữ liệu SPP<6>

P1C 0 Ra Số Ngõ ra PWM tăng cường ECCP1, kênh

1 Vào Tương tự Ngõ vào dữ liệu SPP<7>

P1D 0 Ra Số Ngõ ra PWM tăng cường ECCP1, kênh

D (1)

Trang 12

Chú thích:

(1) Có thể được cấu hình tri-state trong suốt sự kiện tắt nguồn PWM

Bảng 5.8: tóm tắt các thanh ghi liên hợp với PORTD

Chú thích:

“-“: không sử dụng, đọc bằng 0; các ô tô xám không được sử dụng cho PORTD

(1) Được thực hiện chỉ khi chức năng MCLR được vô hiệu

(2) RE3 chỉ là bit của PORTE đối với VĐK loại 28 chân và 40/44 chân Tất cả các bit khác

được thực thi chỉ khi PORTE được thực hiện (như VĐK 40/44 chân)

(3) Các bit thanh ghi này không có trên VĐK 28 chân

Đối với VĐK 40/44 chân, PORTE có độ rộng 4-bit Ba chân (RE0/AN5/CK1SPP,

RE1/AN6/CK2SPP, RE2/AN7/OESPP) được cấu hình riêng lẻ là các ngõ vào hay ngõ ra Các

chân này đều có các bộ đệm ngõ vào Schmitt trigger

Thanh ghi định chiều dữ liệu là TRISE Nếu là chân ngõ vào thì bit TRISE tương ứng

bằng 1 (lúc này, bộ lái ngõ ra tương ứng ở trạng thái trở kháng cao), ngược lại là ngõ ra thì

bit TRISE tương ứng sẽ bằng 0

Trong hình 5.2 mô tả thanh ghi PORTE, nó chứa đựng bit điều khiển điện trở kéo lên

cho PORTD là RDPU (bit7 của PORTE) Bit này sẽ cho phép (RDPU = 1) hoặc không cho

phép (RDPU = 0) sử dụng kéo lên ở PORTD

Chân 𝐌𝐂𝐋𝐑/VPP/RE3 chỉ là một ngõ vào Các hoạt động của nó sẽ được điều khiển bằng bit định cấu hình MCLRE Khi MCLRE = 0, chức năng của chân này là ngõ vào số, nó không

có bit TRISE và LATE liên kết Khi MCLRE = 1, chân này sẽ làm ngõ vào xoá chủ (master

clear)

Hình 5.2: thanh ghi PORTE Chú thích:

R = bit có thể đọc W = bit có thể ghi U = bit không sử dụng, đọc bằng ‘0’

-n = giá trị ở POR ‘1’ = bit được đặt ‘0’ = bit được xoá ‘x’ = bit không biết

Trang 13

Bảng 5.9: tóm tắt PORTE

Chân Chức năng

Đặt TRIS I/O Kiểu I/O Diễn giải RE0/AN5/

CK1SPP

RE0 0 Ra Số Ngõ ra dữ liệu LATE<0>, không bị ảnh

hưởng bởi ngõ vào tương tự

1 Vào ST Ngõ vào dữ liệu PORTE<0>; bị vô hiệu

khi ngõ vào tương tự được cho phép

AN5 1 Vào Tương tự Ngõ vào A/D kênh 5; cấu hình mặc định

RE1 0 Ra Số Ngõ ra dữ liệu LATE<1>, không bị ảnh

hưởng bởi ngõ vào tương tự

1 Vào ST Ngõ vào dữ liệu PORTE<1>; bị vô hiệu

khi ngõ vào tương tự được cho phép

AN6 1 Vào Tương tự Ngõ vào A/D kênh 5; cấu hình mặc định

RE2 0 Ra Số Ngõ ra dữ liệu LATE<2>, không bị ảnh

hưởng bởi ngõ vào tương tự

1 Vào ST Ngõ vào dữ liệu PORTE<2>; bị vô hiệu

khi ngõ vào tương tự được cho phép

AN7 1 Vào Tương tự Ngõ vào A/D kênh 7; cấu hình mặc định

RE3 - (1) Vào ST Ngõ vào dữ liệu PORTE<3>; được cho

phép khi bit cấu hình MCLRE = 0

MCLR - (1) Vào ST Ngõ vào xoá chủ bên ngoài; được cho

phép khi MCLRE = 1

V PP - (1) Vào Tương tự Phát hiện điện thế cao, được sử dụng cho

sự phát hiện nhập chế độ ICSP Luôn luôn sẵn sàng bất chấp kiểu chân

Chú thích:

(1) RE3 không có bit TRIS tương ứng Chân này luôn là ngõ vào bất chấp các kiểu hoạt động

Bảng 5.10: tóm tắt các thanh ghi liên hợp với PORTE

Chú thích:

“-“: không sử dụng, đọc bằng 0; các ô tô xám không được sử dụng cho PORTE

(1) Được thực hiện chỉ khi chức năng MCLR được vô hiệu

(2) RE3 chỉ là bit của PORTE đối với VĐK loại 28 chân và 40/44 chân Tất cả các bit khác

được thực thi chỉ khi PORTE được thực hiện (như VĐK 40/44 chân)

(3) Các bit thanh ghi này không có trên VĐK 28 chân

Ví dụ 5.6: viết chương trình khởi tạo PORTE với RE3 là ngõ vào và RE2:0 là ngõ ra, không

sử dụng kéo lên cho PORTD

Trang 14

Giải pháp:

clrf PORTE ; Xoá PORTE

clrf LATE ; Xoá LATE

movlw 08h ; Đặt RE2:0 là outputs, RE3 là input,

; tắt kéo lên ở PORTD movwf TRISE

5.2.1 Thiết kế mạch điều khiển các LED đơn

Khi PIC điều khiển LED, có hai cách cấp dòng cho LED Cách thứ nhất là sử dòng của

nguồn cấp bên ngoài (current sinking mode), cách thứ hai là sử dụng dòng ngõ ra trực tiếp của PIC (current sourcing mode)

Sử dụng nguồn cấp dòng bên ngoài

Port output

PIC18

R

VDD

Hình 5.3: LED sử dụng dòng trực tiếp từ nguồn Vdd

Điện áp rơi trên LED thay đổi giữa 1.4 V ÷ 2.5 V, trong thiết kế thường chọn giá trị điển hình VLED = 2 V Độ sáng LED tuỳ thuộc dòng qua nó, và dòng này có thể thay đổi giữa 8

mA ÷ 16 mA, giá trị điển hình ILED = 10 mA

Trong hình 5.3, LED sáng khi ngõ ra của PIC ở mức 0 Giá trị R được tính như sau: VDD

𝑅 = 𝑉𝐷𝐷 −𝑉 𝐿𝐸𝐷 −𝑉 𝐿

trong đó

VDD: điện thế nguồn cung cấp (thường 5 V),

VLED: điện thế làm việc của LED (thường 2 V),

VL: điện thế ngõ ra lớn nhất khi chân ra của port ở mức thấp (thường 0.4 V),

ILED: dòng làm việc của LED (thường chọn 10 mA)

Trang 15

Như vậy,

10 = 260 Ω Trong thực tế sẽ chọn R = 270 

Sử dụng nguồn dòng trực tiếp của PIC

RPort output

PIC18

Hình 5.4: LED sử dụng dòng ngõ ra của PIC

LED trong hình 5.4 sáng khi ngõ ra của PIC ở mức 1 Điện trở R sẽ được tính bằng công thức:

Ví dụ 5.7: thiết kế mạch điều khiển 8 LED được kết nối với PORTB của PIC18F4550 Mỗi

thời điểm chỉ có một LED sáng trong thời gian 1 s, LED đầu tiên sáng tại vị trí RC0 VĐK sử dụng dao động XTAL 16 MHz, FCK = FOSC/4 Sử dụng dòng trực tiếp ngõ ra của PORTB cấp cho các LED

(a) Lập bảng mô tả thiết kế

(b) Thiết kế sơ đồ nguyên lý

(c) Tính toán giá trị linh kiện

(d) Lập lưu đồ giải thuật

(e) Viết chương trình điều khiển

Giải pháp:

(a) Bảng mô tả thiết kế theo bảng 5.11

Bảng 5.11: mô tả thiết kế của ví dụ 5.7

Trang 16

(b) Sơ đồ thiết kế theo hình 5.5

Hình 5.5: sơ đồ nguyên lý của ví dụ 5.7

𝑅1 = 𝜏

Tính các điện trở hạn áp cho các LED

Chọn các điện trở hạn áp trong mạch giống nhau và được tính là

𝑅2 =𝑉0 −𝑉𝐿𝐸𝐷

10 = 285 Ω Chọn R2 = 290 

C2 22p

D6 D4 D1

D8

R1 10k

D3 D2

D5

C3 22p

R2

8R2 = 290

Trang 17

(d) Lưu đồ giải thuật

Hình 5.6: lưu đồ giải thuật của ví dụ 5.7

(e) Chương trình điều khiển

i = 1

PORTB = i Delay 1s

Trang 18

/*void Delay10KTCYx(unsigned char unit);*/

5.2.2 Thiết kế mạch điều khiển công tắc

Ví dụ 5.8: thiết kế mạch điều khiển dùng PIC18F4550 3 LED kết nối với các chân RD7:RD5

của PORTD, được điều khiển bằng 3 công tắc được nối vào các chân RB7:RB5 của PORTB theo vị trí thứ tự bit tương ứng Nếu công tắc nhận mức 1 thì LED ở vị trí tương ứng sẽ sáng, ngược lại thì LED tương ứng sẽ tắt Sử dụng dòng trực tiếp ngõ ra của PORTD cấp cho các LED

Giải pháp: sơ đồ nguyên lý như hình 5.7

Trang 19

Hình 5.7: sơ đồ nguyên lý của ví dụ 5.8

Chương trình thực hiện bằng C18:

#include <P18F4550.h>

void main()

{

TRISD = 0x00; // Make PORTD as an output port

TRISB = 0xFF; // Make PORTB as an input port

for (;;) // Endless loop

{

if (PORTBbits.RB5 == 1) LATDbits.LATD5 = 1;

else LATDbits.LATD5 = 0;

if (PORTBbits.RB6 == 1) LATDbits.LATD6 = 1;

290 R2

290 R1

290 R3 SW1

5V

Y 1

16MHz

LED3 C1 0.1M

Trang 20

else

LATDbits.LATD6 = 0;

if (PORTBbits.RB7 == 1) LATDbits.LATD7 = 1;

else LATDbits.LATD7 = 0;

}

}

Ví dụ 5.9: thiết kế mạch điều khiển dùng PIC18F4550 8 LED kết nối với PORTD, được điều

khiển bằng 8 công tắc được nối vào PORTB theo vị trí thứ tự bit tương ứng Nếu công tắc nhận mức 1 thì LED ở vị trí tương ứng sẽ sáng, ngược lại thì LED tương ứng sẽ tắt Sử dụng dòng trực tiếp ngõ ra của PORTD cấp cho các LED

(a) Lập bảng mô tả thiết kế

(b) Thiết kế sơ đồ nguyên lý

(c) Lập lưu đồ giải thuật

(d) Viết chương trình điều khiển

Giải pháp:

(a) Bảng mô tả thiết kế theo bảng 5.12

Lưu ý: các chân ngõ vào RB4:RB0 sau trạng thái reset được cấu hình mặc định

là các ngõ vào tương tự, còn các chân ngõ vào RB7:RB5 là các ngõ vào số

Như vậy, để định các chân RB4:RB0 là các ngõ vào số phải đặt bit PBADEN = 0

và thanh ghi ADCON1 = 0x07 (để đặt 4 bit PCFG<3:0> = 0111)

Bảng 5.12: mô tả thiết kế của ví dụ 5.8

LEDs PORT

0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

LED1 RD0 0 1 - - - -

LED2 RD1 - - 0 1 - - - -

LED3 RD2 - - - - 0 1 - - - -

LED4 RD3 - - - 0 1 - - - -

LED5 RD4 - - - 0 1 - - - -

LED6 RD5 - - - 0 1 - - - - LED7 RD6 - - - 0 1

LED8 RD7 - - - 0 1

Trang 22

(c) Lưu đồ giải thuật

LATD.i = 1

END

Y PORTB.i = 1

LATD.i = 0

N

Ngày đăng: 21/12/2017, 12:19

TỪ KHÓA LIÊN QUAN

w