level 1
Aegeanshine
楼主
#include <avr/io.h>
#include <inttypes.h>
#include <MSOE/delay.c>
void initGPIO (int x);
void delay(uint16_t x);
int buttonreading(int *x,int *y);
int main(void)
{
DDRB |= (1<<PORTB1);
DDRB |= (1<<PORTB2);
DDRB |= (1<<PORTB3);
DDRB |= (1<<PORTB4);
DDRD &= ~(1<<PORTD1);
PORTD |= (1<<PORTD1);
DDRD &= ~(1<<PORTD2);
PORTD |= (1<<PORTD2);
while(1)
{
initGPIO(4);
int a,b;
buttonreading(&a,&b);
while(a==0)
{
for(int i=4;i>=1;i--)
{
PORTB |= (1<<i);
delay(50);
PORTB &=~(1<<i);
}
}
while(b==0)
{
PORTB &=~(1<<PORTB1);
PORTB &=~(1<<PORTB2);
PORTB &=~(1<<PORTB3);
PORTB &=~(1<<PORTB4);
}
}
}
void initGPIO(int x)
{
for(int i=1;i<=x;i++){
PORTB |= (1<<i);
delay(50);
PORTB &= ~(1<<i);
}
}
void delay(uint16_t x)
{
uint16_t i,j;
for(i=0;i<x;i++)
for(j=0;j<10000;j++)
;
return;
}
int buttonreading(int *x,int *y)
{
x=PIND&(1<<PORTD1);
y=PIND&(1<<PORTD2);
}
这是我写的代码 但是连接到arduino board上似乎按钮是没反应的,按钮的连接应该是没问题。要求是一定要用函数来读取两个button的值,并返回主函数,如果第一个按钮按下去做for(int i=4;i>=1;i--)
{
PORTB |= (1<<i);
delay(50);
PORTB &=~(1<<i);
}
如果第二个按钮按下去做 while(b==0)
{
PORTB &=~(1<<PORTB1);
PORTB &=~(1<<PORTB2);
PORTB &=~(1<<PORTB3);
PORTB &=~(1<<PORTB4);
}
请大家帮忙看看我的buttonreading函数是出了什么问题?如果有更好的函数能读取两个button的值也请发上来参考一下。
2016年09月13日 02点09分
1
#include <inttypes.h>
#include <MSOE/delay.c>
void initGPIO (int x);
void delay(uint16_t x);
int buttonreading(int *x,int *y);
int main(void)
{
DDRB |= (1<<PORTB1);
DDRB |= (1<<PORTB2);
DDRB |= (1<<PORTB3);
DDRB |= (1<<PORTB4);
DDRD &= ~(1<<PORTD1);
PORTD |= (1<<PORTD1);
DDRD &= ~(1<<PORTD2);
PORTD |= (1<<PORTD2);
while(1)
{
initGPIO(4);
int a,b;
buttonreading(&a,&b);
while(a==0)
{
for(int i=4;i>=1;i--)
{
PORTB |= (1<<i);
delay(50);
PORTB &=~(1<<i);
}
}
while(b==0)
{
PORTB &=~(1<<PORTB1);
PORTB &=~(1<<PORTB2);
PORTB &=~(1<<PORTB3);
PORTB &=~(1<<PORTB4);
}
}
}
void initGPIO(int x)
{
for(int i=1;i<=x;i++){
PORTB |= (1<<i);
delay(50);
PORTB &= ~(1<<i);
}
}
void delay(uint16_t x)
{
uint16_t i,j;
for(i=0;i<x;i++)
for(j=0;j<10000;j++)
;
return;
}
int buttonreading(int *x,int *y)
{
x=PIND&(1<<PORTD1);
y=PIND&(1<<PORTD2);
}
这是我写的代码 但是连接到arduino board上似乎按钮是没反应的,按钮的连接应该是没问题。要求是一定要用函数来读取两个button的值,并返回主函数,如果第一个按钮按下去做for(int i=4;i>=1;i--)
{
PORTB |= (1<<i);
delay(50);
PORTB &=~(1<<i);
}
如果第二个按钮按下去做 while(b==0)
{
PORTB &=~(1<<PORTB1);
PORTB &=~(1<<PORTB2);
PORTB &=~(1<<PORTB3);
PORTB &=~(1<<PORTB4);
}
请大家帮忙看看我的buttonreading函数是出了什么问题?如果有更好的函数能读取两个button的值也请发上来参考一下。