mấy cát hạ bàn chuyện rôm rả quá.tại hạ mới vào nghề,nên cũng góp phần hâm nóng màn quét phím này:
sau đây là code của cát hạ.do mới tìm hiểu AVR atmega 16 nên code co thể chưa dc tối ưu.nhưng mà xài OK lắm.
#include <mega16.h>
unsigned char Quetphim [4]={0xEf,0xDf,0xBf,0x7f}; //quet cot
void Quetbanphim(void)
{
unsigned char x,y;
for(x=0;x<4;x++)
{
DDRD=0xf0;
PORTD=Quetphim[x];
for(y=0;y<10;y++)
{
if(PIND.0==0) { while(PIND.0==0); PORTA = 0+4*x;} // xuat gia tri hien thi ra led port A
if(PIND.1==0) { while(PIND.1==0); PORTA = 1+4*x;}
if(PIND.2==0) { while(PIND.2==0); PORTA = 2+4*x;}
if(PIND.3==0) { while(PIND.3==0); PORTA = 3+4*x;}
}
}
}
void main(void)
{
PORTA=0x00;
DDRA=0xFF;
while (1)
{
Quetbanphim();
}
}
sau đây là code của cát hạ.do mới tìm hiểu AVR atmega 16 nên code co thể chưa dc tối ưu.nhưng mà xài OK lắm.
#include <mega16.h>
unsigned char Quetphim [4]={0xEf,0xDf,0xBf,0x7f}; //quet cot
void Quetbanphim(void)
{
unsigned char x,y;
for(x=0;x<4;x++)
{
DDRD=0xf0;
PORTD=Quetphim[x];
for(y=0;y<10;y++)
{
if(PIND.0==0) { while(PIND.0==0); PORTA = 0+4*x;} // xuat gia tri hien thi ra led port A
if(PIND.1==0) { while(PIND.1==0); PORTA = 1+4*x;}
if(PIND.2==0) { while(PIND.2==0); PORTA = 2+4*x;}
if(PIND.3==0) { while(PIND.3==0); PORTA = 3+4*x;}
}
}
}
void main(void)
{
PORTA=0x00;
DDRA=0xFF;
while (1)
{
Quetbanphim();
}
}
Comment