Hướng dẫn này là về việc truy cập các cổng IO (Đầu vào / Đầu ra) của Bộ vi điều khiển AVR ATmega32A . Hướng dẫn này cũng bao gồm cách nhấp nháy LED sử dụng Bộ vi điều khiển AVR Atmega32A. Từ hướng dẫn trước, chúng tôi biết rằng chip của chúng tôi có 40 chân vật lý và các chân này được phân loại thành bốn cổng để mỗi pin thực hiện nhiều chức năng, do đó trước khi chúng tôi sử dụng vi điều khiển, hãy thử hiểu cách vi điều khiển cho phép chúng tôi truy cập các chân của nó để thực hiện bài tập. Về cơ bản, chức năng của chân vi điều khiển được chia thành ba loại chính: Kiểm soát , Cảm biến , Giao tiếp .
Có nhiều cách khác nhau để lập trình các hàm này để hiểu rõ hơn và để đơn giản hóa chúng ta sẽ kiểm soát pin PB0 của PORTB . Cho phép thêm đèn LED màu xanh lục vào chân PB0 cùng với điện trở giới hạn hiện tại của ( 360Ω ). Bây giờ hãy xem cách làm cho nó hoạt động,
- Điều chỉnh chân cổng của bộ điều khiển làm đầu vào hoặc đầu ra.
- Xác định trạng thái đầu ra của chúng .
- Phát hiện trạng thái đầu vào của chúng.
Để ánh xạ các chân vật lý vào mã chương trình. Chúng ta cần hiểu các cổng và thanh ghi tương ứng của chúng và cũng đặt tên quy ước để hướng dẫn vi điều khiển thực hiện hành động nào đó bằng cách truy cập vào các thanh ghi đó thông qua chương trình C.
DDRx | Hướng dữ liệu Đăng ký Cổng x x- tương ứng với cổng A, B, C hoặc D. Bit được đặt thành 1 cho đầu ra & bit được đặt thành '0' (xóa) cho Đầu vào |
PINx | Địa chỉ đầu vào cho cổng x x- tương ứng với cổng A, B, C hoặc D Biểu thị trạng thái của cổng, bit '1' nếu ghim là CAO và bit '0' nếu ghim là THẤP |
PORTx | Đăng ký dữ liệu cho Port x Thanh ghi này được sử dụng để điều khiển đầu ra của một cổng cho pin được kết nối với đầu vào có nghĩa là DDRx. Điện trở kéo lên bên trong có thể bật (1) hoặc tắt (0). |
Sơ đồ mạch được thể hiện trong hình (ở trên) và để biết thêm chi tiết theo một video được cung cấp dưới đây. Mô tả ngắn được cung cấp bên dưới đoạn mã.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | /* * Project Name: Blinky.c * Created: 19-06-2013 22:41:35 * Author: UMESH */ #include <avr/io.h> #include <util/delay.h> int main(void) { DDRB |= 1 << PINB0; while (1) { PORTB |= 1 << PINB0; _delay_ms(1000); PORTB &= ~(1 << PINB0); _delay_ms(1000); } } |
Không có nhận xét nào:
Đăng nhận xét