關於汇编语言的問題解决办法
關於汇编语言的問題
這個是案鍵的編程式
但我有些部分看不懂
麻煩大大幫幫忙幫我解釋一下
謝謝
#include <avr/io.h>
//function prototypes for user defined functions
char ReadKeypad();
int main()
{
unsigned char key;
DDRA = 0xFF;
while(1)
{
key = ReadKeypad();
if (key==0xFF) continue; //不懂
PORTA = key; //不懂
}
while(1);
return 0;
}
//define a look-up table
char lookup[]={ '1 ', '2 ', '3 ', 'A ',
'4 ', '5 ', '6 ', 'B ',
'7 ', '8 ', '9 ', 'C ',
'* ', '0 ', '# ', 'D '};
char ReadKeypad()
{
//declare local variables
unsigned char row, col;
unsigned char input, shift;
//define Port D to connect to the kaypad
//PD0 - PD3 as input, PD4 - PD7 as output
DDRD = 0xF0; //不懂 為什麼是0xF0 而不是0xFF
//write 1 's to those pins defined as input
//to enable the pull-up R 's
PORTD = 0xFF;
//prepare scanning
row = 0; //the first row //不懂
shift = 0x10; //the first row as 1 //不懂
//start scanning
for (row=0; row <4; row++)
{
PORTD = ~shift; //不懂
shift = shift < <1; //shift < <= 1; //不懂
input = PIND; //不懂
input = input | 0xF0; //screen the output pins //不懂
input = ~(input); //不懂
if (input != 0) //不懂
break;
}
//any key pressed?
if (row < 4) //不懂
{
//the loop was broken because a key was pressed
//the row output 0 is the row value
//find out the col which is 1
shift = 0x01; //不懂
for (col=0; col <4; col++) //不懂
{
if (input & shift) //不懂
{
//use input to hold the key value
input = 4*row + col; //不懂
//return input;
return lookup[input]; //不懂
}
shift = shift < <1; //不懂
}
這個是案鍵的編程式
但我有些部分看不懂
麻煩大大幫幫忙幫我解釋一下
謝謝
#include <avr/io.h>
//function prototypes for user defined functions
char ReadKeypad();
int main()
{
unsigned char key;
DDRA = 0xFF;
while(1)
{
key = ReadKeypad();
if (key==0xFF) continue; //不懂
PORTA = key; //不懂
}
while(1);
return 0;
}
//define a look-up table
char lookup[]={ '1 ', '2 ', '3 ', 'A ',
'4 ', '5 ', '6 ', 'B ',
'7 ', '8 ', '9 ', 'C ',
'* ', '0 ', '# ', 'D '};
char ReadKeypad()
{
//declare local variables
unsigned char row, col;
unsigned char input, shift;
//define Port D to connect to the kaypad
//PD0 - PD3 as input, PD4 - PD7 as output
DDRD = 0xF0; //不懂 為什麼是0xF0 而不是0xFF
//write 1 's to those pins defined as input
//to enable the pull-up R 's
PORTD = 0xFF;
//prepare scanning
row = 0; //the first row //不懂
shift = 0x10; //the first row as 1 //不懂
//start scanning
for (row=0; row <4; row++)
{
PORTD = ~shift; //不懂
shift = shift < <1; //shift < <= 1; //不懂
input = PIND; //不懂
input = input | 0xF0; //screen the output pins //不懂
input = ~(input); //不懂
if (input != 0) //不懂
break;
}
//any key pressed?
if (row < 4) //不懂
{
//the loop was broken because a key was pressed
//the row output 0 is the row value
//find out the col which is 1
shift = 0x01; //不懂
for (col=0; col <4; col++) //不懂
{
if (input & shift) //不懂
{
//use input to hold the key value
input = 4*row + col; //不懂
//return input;
return lookup[input]; //不懂
}
shift = shift < <1; //不懂
}