Do em đang làm mạch bàn phím ma trận 4x4 nhưng em chỉ dùng 14 nút thôi. Em mới lập trình AVR. Lập trình em thấy mọi thứ đều ổn nhưng ngõ ra AVR không chạy xin các bác xem thử để em rút kinh nghiệm em cảm ơn nhiều. Đây là chương trình và mạch của em.
#include <mega32.h>
void main(void)
{
PORTB=0xF0;
DDRB=0x0F; //CHỌN PORTB.0 ĐẾN PORTB.3 LÀM NGÕ RA 4 NGÕ CÒN LẠI LÀM NGÕ VÀO
PORTC=0xFF;
DDRC=0xFF;
PORTD=0xFF;
DDRD=0xFF;
while (1)
{
PORTB =0b11111110; //QUÉT CỘT 1
if (PORTB.4==0) {PORTD=0b11111110;PORTC=0xFF;};
if (PORTB.5==0) {PORTD=0b11111101;PORTC=0xFF;};
if (PORTB.6==0) {PORTD=0b11111011;PORTC=0xFF;};
if (PORTB.7==0) {PORTD=0b11110111;PORTC=0xFF;};
PORTB =0b11111101; //QUÉT CỘT 2
if (PORTB.4==0) {PORTD=0b11101111;PORTC=0xFF;};
if (PORTB.5==0) {PORTD=0b11011111;PORTC=0xFF;};
if (PORTB.6==0) {PORTD=0b10111111;PORTC=0xFF;};
if (PORTB.7==0) {PORTD=0b01111111;PORTC=0xFF;};
PORTB =0b11111011; //QUÉT CỘT 3
if (PORTB.4==0) {PORTC=0b11111110;PORTD=0xFF;};
if (PORTB.5==0) {PORTC=0b11111101;PORTD=0xFF;};
if (PORTB.6==0) {PORTC=0b11111011;PORTD=0xFF;};
if (PORTB.7==0) {PORTC=0b11110111;PORTD=0xFF;};
PORTB =0b11110111; //QUÉT CỘT 4
if (PORTB.4==0) {PORTC=0b11101111;PORTD=0xFF;};
if (PORTB.5==0) {PORTC=0b11011111;PORTD=0xFF;};
if (PORTB.6==0) {PORTC=0b10111111;PORTD=0xFF;};
if (PORTB.7==0) {PORTC=0b01111111;PORTD=0xFF;};
}
}
MACH KEY4X4.zip
#include <mega32.h>
void main(void)
{
PORTB=0xF0;
DDRB=0x0F; //CHỌN PORTB.0 ĐẾN PORTB.3 LÀM NGÕ RA 4 NGÕ CÒN LẠI LÀM NGÕ VÀO
PORTC=0xFF;
DDRC=0xFF;
PORTD=0xFF;
DDRD=0xFF;
while (1)
{
PORTB =0b11111110; //QUÉT CỘT 1
if (PORTB.4==0) {PORTD=0b11111110;PORTC=0xFF;};
if (PORTB.5==0) {PORTD=0b11111101;PORTC=0xFF;};
if (PORTB.6==0) {PORTD=0b11111011;PORTC=0xFF;};
if (PORTB.7==0) {PORTD=0b11110111;PORTC=0xFF;};
PORTB =0b11111101; //QUÉT CỘT 2
if (PORTB.4==0) {PORTD=0b11101111;PORTC=0xFF;};
if (PORTB.5==0) {PORTD=0b11011111;PORTC=0xFF;};
if (PORTB.6==0) {PORTD=0b10111111;PORTC=0xFF;};
if (PORTB.7==0) {PORTD=0b01111111;PORTC=0xFF;};
PORTB =0b11111011; //QUÉT CỘT 3
if (PORTB.4==0) {PORTC=0b11111110;PORTD=0xFF;};
if (PORTB.5==0) {PORTC=0b11111101;PORTD=0xFF;};
if (PORTB.6==0) {PORTC=0b11111011;PORTD=0xFF;};
if (PORTB.7==0) {PORTC=0b11110111;PORTD=0xFF;};
PORTB =0b11110111; //QUÉT CỘT 4
if (PORTB.4==0) {PORTC=0b11101111;PORTD=0xFF;};
if (PORTB.5==0) {PORTC=0b11011111;PORTD=0xFF;};
if (PORTB.6==0) {PORTC=0b10111111;PORTD=0xFF;};
if (PORTB.7==0) {PORTC=0b01111111;PORTD=0xFF;};
}
}
MACH KEY4X4.zip
Comment