0xff la gi

Trong AVR, từng PORT tương quan cho tới 3 thanh ghi (8 bits) mang tên ứng là DDRx, PINx, và PORTx với “x” là tên gọi của PORT, từng bit nhập thanh ghi ứng với từng chân của PORT. Trong tình huống của Atmega128 “x” là B, C, D, E, G.

          Ví dụ:  Chúng tao quan hoài cho tới PORTB thì 3 thanh ghi ứng mang tên là DDRB, PINB và PORTB, nhập cơ 2 thanh ghi PORTB và PINB được nối thẳng với những chân của PORTB, DDRB là thanh ghi tinh chỉnh và điều khiển phía ( Input hoặc Output). Viết độ quý hiếm 1 vào trong 1 bit nhập thanh ghi DDRB thì chân ứng của PORTB được xem là chân xuất (Output), ngược lại độ quý hiếm 0 xác lập chân ứng là ngõ nhập. Sau Lúc viết lách độ quý hiếm tinh chỉnh và điều khiển nhập DDRB, việc truy xuất PORTB được triển khai trải qua 2 thanh ghi PINB và PORTB (Nguồn: hocavr.com)

Bạn đang xem: 0xff la gi

Include những tủ sách cần thiết thiết

Khai báo output cho những chân tinh chỉnh và điều khiển ( tinh chỉnh và điều khiển Relay, nài năng lượng điện tử, màn hình hiển thị LCD..)

– Để khai báo cho một port là output ( ví dụ PORTA):

– Khai báo macro mang đến việc tinh chỉnh và điều khiển những chân output: mix (lên 1) hoặc clear (xóa về 0)

– Giải mến macro:

          ~(1 << (bit) // ví dụ: ~(1<<3) = ~( 00000001<<3) = ~ (00001000) = 11110111

Trong tệp tin avr\include\avr\iom128.h ta sở hữu PORTG = _SFR_MEM8(0x65), đó là độ quý hiếm của thanh ghi bên trên địa điểm 0x65 nhập bộ lưu trữ.

Vì vậy cbi(PORTG, 3) = (gia_tri_thanh_ghi 0x65) &= 11110111 , thời điểm hiện tại bit số 3 của thanh ghi nối thẳng với PORTG được ghi nhập 0 => Chân số 3 PORTG được trả về 0.

Ví dụ:

Khai báo mang đến việc hiểu những độ quý hiếm input ( công tắc nguồn, nút nhấn, cảm ứng dò la đàng,…)

– Để khai báo cho một port là input ( ví dụ PORTA):    

– Để hiểu giá tốt trị input cần dùng một vài macro sau:

          #define bit_is_set(sfr, bit) (_SFR_BYTE(sfr) & _BV(bit))

          Cách hoạt động và sinh hoạt của macro này như sau:

          Định nghĩa macro bit_is_set được khai báo nhập hardware/tools/avr/avr/include/avr/sfr_defs.h

          + Trong cơ _BV(bit) là 1 trong macro cũng khá được khái niệm nhập tệp tin nêu bên trên, với ý tức thị trả độ quý hiếm của một chân về dạng 8 bit.

          #define _BV(bit)  (1 << (bit)) 

          // ví dụ _BV(3) thì triển khai 00000001 << 3 => 00001000=0x08

          + _SFR_BYTE(sfr) là một macro trả về độ quý hiếm theo mô hình byte của một địa điểm.

          #define _SFR_BYTE(sfr) _MMIO_BYTE(_SFR_ADDR(sfr))

          Trong cơ _MMIO_BYTE lại được khái niệm như sau:

          #define _MMIO_BYTE(mem_addr) (*(volatile uint8_t *)(mem_addr))

          Tóm lại, trình biên dịch tiếp tục triển khai mệnh lệnh sau với _SFR_BYTE(sfr):

Xem thêm: chủ động trêu chọc

          _SFR_BYTE(sfr)   *(volatile uint8_t * uint8_t &(sfr))

Và sản phẩm sẽ có được này đó là độ quý hiếm của thanh ghi sở hữu địa đơn thuần sfr

(_SFR_BYTE(sfr) & _BV(bit)) sẽ triển khai thao tác với cùng 1 bịt trật tự là bit với thanh ghi sfr. Kết trái khoáy tiếp tục trả về 1 nếu như bit cơ vị 1, trả về 0 nếu như bit cơ vị 0.

Ví dụ:

Ta sở hữu câu mệnh lệnh đánh giá độ quý hiếm input bên trên chân số 3 của PORTG như sau:

          bit_is_set(PING, 3)

Tương đương với triển khai lệnh

          (_SFR_BYTE(PING) & _BV(3)) 

          ó (giá trị thanh ghi PING) AND (0x08)

          => Nếu độ quý hiếm bên trên chân 3, PORTG vị 1, bit_is_set(PING, 3) trả về độ quý hiếm không giống 0

          => Nếu độ quý hiếm bên trên chân 3, PORTG vị 0, bit_is_set(PING, 3) trả về độ quý hiếm vị 0

          Với tình huống macro bit_is_clear tương tự động.

          #define bit_is_clear(sfr, bit) (!(_SFR_BYTE(sfr) & _BV(bit)))

Ứng dụng:

          Đọc nút nhấn, công tắc:

Khai báo mang đến điều xung PWM tinh chỉnh và điều khiển mạch cầu H hoặc PID

Timer/Counter là những module song lập với CPU. Chức năng chủ yếu của những cỗ Timer/Counter, như tên thường gọi của bọn chúng, là lăm le thời (tạo đi ra một khoảng tầm thời hạn, kiểm đếm thời gian…) và kiểm đếm sự khiếu nại. Trên những chip AVR, những cỗ Timer/Counter còn tồn tại thêm thắt tính năng tạo nên những xung điều rộng lớn PWM (Pulse Width Modulation), ở một vài dòng sản phẩm AVR, một vài Timer/Counter còn được sử dụng tựa như những cỗ canh và chỉnh sửa thời hạn (calibration) trong số phần mềm thời hạn thực. Các cỗ Timer/Counter được phân chia bám theo phạm vi thanh ghi chứa chấp độ quý hiếm lăm le thời hoặc độ quý hiếm kiểm đếm của bọn chúng, rõ ràng bên trên chip Atmega128 sở hữu 2 cỗ Timer 8 bit (Timer/Counter0 và Timer/Counter2) và 2 cỗ 16 bit (Timer/Counter1 và Timer/Counter3). Chế chừng hoạt động và sinh hoạt và cách thức tinh chỉnh và điều khiển của từng Timer/Counter cũng ko trọn vẹn tương đương nhau. Ví dụ:

Timer/Counter1: là cỗ lăm le thời, kiểm đếm nhiều chức năng 16 bit. Sở Timer/Counter này còn có 5 cơ chế hoạt động và sinh hoạt chủ yếu. Ngoài những tính năng thường thì, Timer/Counter1 còn được dùng làm tạo nên xung điều rộng lớn PWM người sử dụng cho những mục tiêu tinh chỉnh và điều khiển. cũng có thể tạo nên 2 tín hiệu PWM song lập bên trên những chân OC1A (chân 15) và OC1B (chân 16) vị Timer/Counter1.

Timer/Counter2: tuy rằng là 1 trong module 8 bit như Timer/Counter0 nhưng
Timer/Counter2 sở hữu cho tới 4 cơ chế hoạt động và sinh hoạt như Timer/Counter1, ngoại giả nó nó còn được dùng như 1 module canh và chỉnh sửa thời hạn cho những phần mềm thời hạn thực (chế chừng asynchronous). (nguồn hocavr.com)

Xem thêm: tiệm cơm nhỏ thành trường an

Khai báo mang đến ngắt ( hiểu Encoder, hiểu công tắc nguồn hành trình…)

Ngắt là gì? Ngắt là một tín hiệu khẩn cung cấp gửi cho tới cỗ xử lí, đòi hỏi cỗ xử lí tạm thời ngừng tức tự khắc những hoạt động và sinh hoạt thời điểm hiện tại nhằm “nhảy” cho tới một điểm không giống triển khai một trọng trách khẩn cung cấp này cơ, trọng trách này gọi là trình đáp ứng ngắt – isr (interrupt service routine ). Sau Lúc kết thúc giục trọng trách nhập isr, cỗ kiểm đếm công tác sẽ tiến hành trả về độ quý hiếm trước cơ nhằm cỗ xử lí trở lại triển khai tiếp những trọng trách còn dang dở. 

Ví dụ:  Kkhai báo ngắt mang đến INT6,7 , bắt bất kì thay cho thay đổi này bên trên chân vi điều khiển

Các khai báo và phần mềm này sẽ tiến hành dùng rõ ràng nhập bài xích xây dựng dò la đàng, nên tôi ko nhằm code hình mẫu hoàn hảo này ở phía trên, nội dung bên trên chỉ người sử dụng xem thêm nhằm chúng ta hiểu code rộng lớn cho những bài xích cho tới.