You are on page 1of 4

AVR-GCC Tutorials Thanh Dâng Nguyễn.

Oct 24, 2015

Bài 01: Xuàt nhàp số I/O


Giới thiệu
Vđk ATmega328P có 23 I/O, mỗi I/O được đa hợp với nhiều chức năng (RESET, XTAL, ADC, Counter, PWM, …),
và được chia làm 3 PORT.
 PORTB: Có 8 I/O, từ PB0 đến PB7
 PORTC: Có 7 I/O, từ PC0 đến PC6
 PORTD: Có 8 I/O, từ PD0 đến PD7
Mỗi I/O đều có sẵn một điện trở kéo lên (pull-up) ở bên trong và có thể lập trình cho phép hoặc không cho
phép điện trở treo của từng I/O.
Dòng điện của mỗi I/O mạnh đủ để điều khiển trực tiếp đèn LED, mà không cần các mạch đệm. Ở mức 0 và
mức 1 thì khả năng nhận/cấp dòng đều mạnh.
Sau khi reset thì tất cả các chân sẽ có trạng thái mặc định là ngõ vào, tổng trở cao.

Các I/O đặc biệt


 PC6: Đây cũng chính là chân Reset của vđk Atmega328P. Bit RSTDISBL (Reset Disable) cho phép bỏ chọn
chức năng Reset của chân này. Nếu chức năng Reset bị bỏ chọn thì nó có thể được sử dụng làm I/O.
 PB6 và PB7: Cũng là hai chân cấp dao động cho vđk hoạt động. Nếu mà ta chọn bộ dao động cho vđk là
dao động nội thì 2 chân này có thể sử dụng làm I/O.
Tham khảo thêm: Các bạn xem thêm bài “Thiết lập fuse bit” để biết các chọn chức năng cho chân Reset và
chân nguồn dao động.

Bài 01: Xuất nhập số I/O Trang 1


AVR-GCC Tutorials Thanh Dâng Nguyễn. Oct 24, 2015
Các thanh ghi điều khiển I/O
Mỗi PORT của AVR có 3 thanh ghi để điều khiển quá trình xuất/nhập số:

 DDR Chọn hướng cho các chân là xuất hay nhập.


 PORT Xuất mức logic cao hay thấp ra các chân của port.
 PIN Đọc về trạng thái của các chân input.

Thanh ghi DDRx


Để chọn chức năng cho một chân của port là ouput, thì ta sẽ set bit tương ứng của thanh ghi DDRx.
Để chọn chức năng cho một chân của port là input thì ta sẽ xóa bit tương ứng của thanh ghi DDRx.

Bài 01: Xuất nhập số I/O Trang 2


AVR-GCC Tutorials Thanh Dâng Nguyễn. Oct 24, 2015
Thanh ghi PORTx
Thanh ghi PORTx là một thanh ghi 8 bit.
Trường hợp I/O đã được cấu hình là ngõ ra, thì thanh ghi PORTx dùng để xuất mức điện áp khác nhau, mức 1
hoặc 0 ra I/O đó.

Trong trường hợp I/O được cấu hình là ngõ vào, thì thanh ghi PORTx dùng để cho phép hoặc không cho phép
các điện trở kéo lên VCC trong trường hợp các I/O là ngõ vào.

Bài 01: Xuất nhập số I/O Trang 3


AVR-GCC Tutorials Thanh Dâng Nguyễn. Oct 24, 2015
Thanh ghi PINx
Thanh ghi PINx chứa trạng thái các chân ngõ vào của AVR trên port tương ứng.
Như vậy sau khi cấu hình cho I/O là ngõ vào bằng thanh ghi DDRx, thì chúng ta đọc giá trị các ngõ vào bằng
thanh ghi PINx.

Trong trường hợp I/O đã được cấu hình là output, có thể dùng thanh ghi PINx để đảo trạng thái (toggle) các
I/O, bằng cách ghi mức 1 lên bit tương ứng của thanh ghi PINx.

Cấm tất cả các điện trở treo của các I/O


Bit PUD (Pull-up Disable) là bit thứ 4 trong thanh ghi MCUCR. Nếu ghi mức 1 lên bit này, thì tất cả các điện trở
kéo lên của các IO đều bị cấm bất chấp trạng thái của thanh ghi DDRx và PORTx.

Bài 01: Xuất nhập số I/O Trang 4

You might also like