Cổng vào/ra

Một phần của tài liệu điều khiển từ xa các thiết bị bằng tin nhắn sms (Trang 44)

Cổng vào/ra là một trong số các phương tiện để Vi điều khiển giao tiếp với các thiết bị

ngoại vi. Atmega 8 có tất cả 3 cổng (Port) vào/ra 8 bit là Port B, Port C, Port D, tương ứng với 24 đường vào/ra. Các cổng vào/ra của AVR là cổng vào/ra hai chiều có thểđịnh hướng, tức là có thể chọn hướng của cổng là hướng vào (Input) hay hướng ra (Output). Tất cả các cổng vào/ra của AVR đều có tính năng Đọc – Chỉnh sửa – Ghi (Read – Modify – Write) khi sử dụng chúng như là các cổng vào/ra số thông thường. Điều này có nghĩa là khi ta thay đổi hướng của một chân nào đó thì nó không làm ảnh hưởng tới hướng của các chân khác. Tất cả các chân của cổng (Port) đều có điện trở kéo lên (pull-up resistor) riêng, ta có thể cho phép hay không cho phép điện trở kéo lên này hoạt động.

Điện trở kéo lên là một điện trở được dùng khi thiết kế các mạch điện tử logic. Nó có một

đầu được nối với nguồn điện áp dương (thường là VCC hoặc là VDD) và đầu còn lại được nối với tín hiệu lối vào/ra của một mạch logic chức năng. Điện trở kéo lên có thểđược lắp đặt tại các lối vào của các khối mạch logic để thiết lập mức logic lối vào của khối mạch khi không có thiết bị ngoài nối với lối vào. Điện trở kéo lên cũng có thể được lắp đặt tại các giao diện giữa hai khối mạch logic không cùng loại logic, đặc biệt là khi hai khối mạch này

được cấp nguồn khác nhau. Ngoài ra, điện trở kéo lên còn được lắp đặt tại lối ra của khối mạch khi lối ra không thể nối nguồn để tạo dòng, ví dụ các linh kiện logic có cực góp hở.

Đối với họ logic lưỡng cực với nguồn nuôi 5 VDC thì giá trị của điện trở kéo lên thường nằm trong khoảng 1000Ω đến 5000Ω, tùy theo yêu cầu cấp dòng trên toàn giải hoạt động của mạch.

Trang 45

Khi khảo sát các cổng như là các cổng vào/ra số thông thường thì tính chất của các cổng (Port B, Port C, Port D,) là tương tự nhau, nên ta chỉ cần khảo sát một cổng nào đó trong số

3 cổng của Vi điều khiển.

Mỗi một cổng vào/ra của Vi điều khiển được liên kết với 3 thanh ghi là PORTx, DDRx, PINx (x là thay thế cho B, C, D). Ba thanh ghi này sẽđược phối hợp với nhau đểđiều khiển hoạt động của cổng, chẳng hạn như thiết lập cổng thành lối vào có sử dụng điện trở kéo lên…

- Thanh ghi DDRx

Đây là thanh ghi 8 bit (có thểđọc/ghi) có chức năng điều khiển hướng của cổng (lối ra hay lối vào). Khi một bit của thanh ghi này được Set lên 1 thì chân tương ứng với nó được cấu hình thành ngõ ra. Ngược lại, nếu bit của thanh ghi DDRx là 0 thì chân tương ứng với nó

được thiết lập thành ngõ vào. Ví dụ khi Set tất cả 8 bit của thanh ghi DDRB đều là 1 thì 8 chân tương ứng của Port B là PB1, PB2, PB3, PB4, PB5, PB6, PB7 được thiết lập thành ngõ ra.

- Thanh ghi PORTx

Đây là thanh ghi 8 bit (có thểđọc/ghi), nó chính là thanh ghi dữ liệu của PORTx. Nếu thanh ghi DDRx thiết lập cổng là lối ra, khi đó giá trị của thanh ghi PORTx cũng là giá trị của các chân tương ứng của PORTx. Nói cách khác, khi ta ghi một giá trị logic lên 1 bit của thanh ghi này thì chân tương ứng với bit đó cũng có cùng mức logic. Khi thanh ghi DDRx thiết lập cổng thành lối vào thì thanh ghi PORTx đóng vai trò như một thanh ghi điều khiển cổng. Cụ thể, nếu một bit của thanh ghi này được ghi thành 1 thì điện trở kéo lên (pull-up resistor)

ở chân tương ứng với nó sẽ được kích hoạt, ngược lại nếu bit được ghi thành 0 thì điện trở

kéo lên ở chân tương ứng sẽ không được kích hoạt.

Trang 46

PINx không phải là một thanh ghi thực sự, đây là địa chỉ trong bộ nhớ I/O kết nối trực tiếp với các chân của cổng. Khi ta đọc PORTx tức là đọc dữ liệu được chốt trong PORTx, còn khi đọc PINx là chỉ có thểđọc mà không thể ghi.

Sơđồ một cổng vào/ra

Trang 47

Nhìn vào sơ đồ ta thấy ngoài 2 bit của các thanh ghi DDRx và PORTx tham gia điều khiển điện trở kéo lên (pull-up resistor), còn có một tín hiệu nữa điều khiển điện trở kéo lên,

đó là tín hiệu PUD, đây là bit nằm trong thanh ghi SFIOR, khi Set bit này thành 1 thì điện trở kéo lên sẽ không được cho phép bất kể các thiết lập của các thanh ghi DDRx và PORTx. Khi bit này là 0 thì điện trở kéo lên được cho phép nếu {DDRxn, PORTxn} = {0, 1}.

• Thanh ghi SFIOR

Địa chỉ của các Port

Bảng 3.1 Bảng địa chỉ của các Port

3.3.2.5 Cấu trúc ngắt của Vi điều khiển Atmega 8

Một phần của tài liệu điều khiển từ xa các thiết bị bằng tin nhắn sms (Trang 44)

Tải bản đầy đủ (PDF)

(107 trang)