một đoạn code để tìm hiểu 3 thanh ghi trong mỗi port của AVR. chỗ dấu? là chưa rõ lắm.
LDI r16, 0b00000010
OUT DDRB, R16 ; XÁC ĐỊNH BIT 1 CỦA PORT B LÀ OUT . GHI “1”LOGIC VÀO DDRB Ở BIT NÀO THÌ BIT ĐÓ TƯƠNG ỨNG LÀ CHO PHÉP OUT DATA.
LDI r16, 0b00000000 ; NẠP VÀO THANH GHI 16 CÁC BIT 0
OUT PORTB, R16 ; LÀM CHO BIT 1 CỦA PORTB THÀNH BIT 0.
LDI R16, 0b00000010
OUT PORTB, r16 ; LÀM CHO BIT 1 CỦA PORTB THÀNH BIT 1.
LDI R16, 0b00000000
OUT DDRB, R16 ; LÀM CHO PORT B LÀ IN
LDI R16, 0b11111111
OUT PORTB, R16 ; CHO PHÉP R-PULL UP ???Ở PINB QUA CỔNG NAND. TRỞ KHÁNG VÀO CỦA PORTB KHÔNG LỚN LẮM NHƯNG KHỎI CẦN TẠO R PULL UP BÊN NGOÀI TỪ NGUỒN TÍN HIỆU.
IN R16, PINB ; ĐỌC TÍN HIỆU TỪ PINB VÀ GHI VÀO R16.
Từ sơ đồ thì khi 1bit (hoặc 8bit) của DDRB (ngõ Q) out =1 > NAND out=0 > ngắt Fet và cho phép Latch của pinB. Lúc này portB sẵn sang out qua Latch với R-pull up .
Khi 1bit (x8 bit) của DDRB(Q) = 0 > NAND phụ thuộc vào PORTB out, nhưng latch pinB đã bị ngắt > pinB chỉ có thể là IN . Cho PORTB xuất bit1 (cho phép R-pull up qua một cơ cấu phần cứng nào đó chưa rõ) thì pin B thành IN với trở kháng vào không lớn lắm ( có R-pull up) , từ đây tín hiệu pinB qua đường dưới 2 đệm đảo (giữ đúng tín hiệu) và khi đó chân read pin cũng phải được cho phép để nhâp tín hiệu từ bên ngoài vào DATA BUS .
LDI r16, 0b00000010
OUT DDRB, R16 ; XÁC ĐỊNH BIT 1 CỦA PORT B LÀ OUT . GHI “1”LOGIC VÀO DDRB Ở BIT NÀO THÌ BIT ĐÓ TƯƠNG ỨNG LÀ CHO PHÉP OUT DATA.
LDI r16, 0b00000000 ; NẠP VÀO THANH GHI 16 CÁC BIT 0
OUT PORTB, R16 ; LÀM CHO BIT 1 CỦA PORTB THÀNH BIT 0.
LDI R16, 0b00000010
OUT PORTB, r16 ; LÀM CHO BIT 1 CỦA PORTB THÀNH BIT 1.
LDI R16, 0b00000000
OUT DDRB, R16 ; LÀM CHO PORT B LÀ IN
LDI R16, 0b11111111
OUT PORTB, R16 ; CHO PHÉP R-PULL UP ???Ở PINB QUA CỔNG NAND. TRỞ KHÁNG VÀO CỦA PORTB KHÔNG LỚN LẮM NHƯNG KHỎI CẦN TẠO R PULL UP BÊN NGOÀI TỪ NGUỒN TÍN HIỆU.
IN R16, PINB ; ĐỌC TÍN HIỆU TỪ PINB VÀ GHI VÀO R16.
Từ sơ đồ thì khi 1bit (hoặc 8bit) của DDRB (ngõ Q) out =1 > NAND out=0 > ngắt Fet và cho phép Latch của pinB. Lúc này portB sẵn sang out qua Latch với R-pull up .
Khi 1bit (x8 bit) của DDRB(Q) = 0 > NAND phụ thuộc vào PORTB out, nhưng latch pinB đã bị ngắt > pinB chỉ có thể là IN . Cho PORTB xuất bit1 (cho phép R-pull up qua một cơ cấu phần cứng nào đó chưa rõ) thì pin B thành IN với trở kháng vào không lớn lắm ( có R-pull up) , từ đây tín hiệu pinB qua đường dưới 2 đệm đảo (giữ đúng tín hiệu) và khi đó chân read pin cũng phải được cho phép để nhâp tín hiệu từ bên ngoài vào DATA BUS .
Comment