Em đang làm quen với microcontroller.gặp đoạn code này ko hiếu nhờ các a, chị trong diễn đàn giải thích giúp em nha.
Cái này là trong 1 bài về máy đếm sản phẩm 6 kênh sử dụng:
89c51, LCD16*2, 4x3 keypad:
LCD trong chế độ 4 bít và nối với port2 của VĐK. 6 phím keypad nối với cổng P0.
// giải thích giúp em từ chỗ này:
unsigned char keycode[] = {0xFe, 0xFd ,0xFf}; //??
unsigned char phim_chon =0;
#define lcd_data(data) (P2 = (P2&0xF0)|(data&0x0F))// ???
#define Mode_4Bit 0x28
void lcd_wait(){
char temp;
P2 |= 0x0F;// ????
LCD_RS = 0;
LCD_RW = 1;
do {
LCD_E = 1; //che do 4 bit phai doc 2 lan
temp = P2; //chi luu 4 bit dau de kiem tra busy_flag
LCD_E = 0;
LCD_E = 1;
LCD_E = 0;
}while (temp&0x08);//????
}
unsigned char lcd_gotoxy(unsigned char row, unsigned char col) {
unsigned char addr = 0x00;
if(col >= 20 || row >= 4) // ??
return 0;
if(row < 2) {
addr = (row * 0x40) + col; // ??
addr = 0x80 | (addr & 0x7F); // ??
}
else {
addr = (row * 0x40) + col; // ??
addr = 0x94 | (addr & 0x7F); // ??
}
lcd_control(addr);
return 1;
}
void quetphim()
{
unsigned char n, m;
for (n=0; n<2; n++)
{
P0 = keycode[n];
for(m=0; m<200; m++)
{
if(K3 == 0) phim_chon = 3*n +1;
else if(K4 ==0) phim_chon = 3*n +2;
else if(K5 ==0) phim_chon = 3*n +3;
}
}
}
thanks you very much!!!!!
Cái này là trong 1 bài về máy đếm sản phẩm 6 kênh sử dụng:
89c51, LCD16*2, 4x3 keypad:
LCD trong chế độ 4 bít và nối với port2 của VĐK. 6 phím keypad nối với cổng P0.
// giải thích giúp em từ chỗ này:
unsigned char keycode[] = {0xFe, 0xFd ,0xFf}; //??
unsigned char phim_chon =0;
#define lcd_data(data) (P2 = (P2&0xF0)|(data&0x0F))// ???
#define Mode_4Bit 0x28
void lcd_wait(){
char temp;
P2 |= 0x0F;// ????
LCD_RS = 0;
LCD_RW = 1;
do {
LCD_E = 1; //che do 4 bit phai doc 2 lan
temp = P2; //chi luu 4 bit dau de kiem tra busy_flag
LCD_E = 0;
LCD_E = 1;
LCD_E = 0;
}while (temp&0x08);//????
}
unsigned char lcd_gotoxy(unsigned char row, unsigned char col) {
unsigned char addr = 0x00;
if(col >= 20 || row >= 4) // ??
return 0;
if(row < 2) {
addr = (row * 0x40) + col; // ??
addr = 0x80 | (addr & 0x7F); // ??
}
else {
addr = (row * 0x40) + col; // ??
addr = 0x94 | (addr & 0x7F); // ??
}
lcd_control(addr);
return 1;
}
void quetphim()
{
unsigned char n, m;
for (n=0; n<2; n++)
{
P0 = keycode[n];
for(m=0; m<200; m++)
{
if(K3 == 0) phim_chon = 3*n +1;
else if(K4 ==0) phim_chon = 3*n +2;
else if(K5 ==0) phim_chon = 3*n +3;
}
}
}
thanks you very much!!!!!
Comment