Цитата(IgorKossak @ Feb 13 2007, 18:24)

Исходник не полный.
Но тем не менее, чтобы ноги порта не болтались в воздухе, ловя наводки от пальца, неплохо бы включить хотя бы внутреннюю подтяжку (если нет внешней) установкой 1 в соответствующем бите PORTx, где x - порт, который работает на вход.
теперь у меня
Код
//_____ I N C L U D E S ___________________________________________________
#include "config.h"
//_____ M A C R O S ________________________________________________________
#define _setL(port,bit) do { port &= ~(1 << bit); } while(0)
#define _setH(port,bit) do { port |= (1 << bit); } while(0)
#define _clrL(port,bit) do { port |= (1 << bit); } while(0)
#define _clrH(port,bit) do { port &= ~(1 << bit); } while(0)
#define _bitL(port,bit) (!(port & (1 << bit)))
#define _bitH(port,bit) (port & (1 << bit))
#define _cpl(port,bit,val) do {port ^= (1 << bit); } while(0)
#define dir_out(x) _dir_out (x)
#define dir_in(x) _dir_in (x)
#define dir(x) _dir (x)
#define _set(port,bit,val) _set##val(port,bit)
#define on(x) _set (x)
#define _clr(port,bit,val) _clr##val(port,bit)
#define off(x) _clr (x)
#define _bit(port,bit,val) _bit##val(port,bit)
#define signal(x) (!! _bit (x))
#define cpl(x) _cpl (x)
//_____ D E F I N I T I O N S ______________________________________________
#define left PINB, 6, H
#define right PINE, 7, H
#define up PINB, 6, H
#define down PINE, 5, H
#define select PINB, 5, H
#define led_r1 PORTD, 4, H
#define led_g1 PORTD, 5, H
#define led_r2 PORTD, 7, H
#define led_g2 PORTD, 6, H
void main(void)
{
DDRD = 0xFF;
PORTB = 0xFF;
PORTE = 0xFF;
PORTD = 0x00;
for (;;)
{
PORTD = 0x00;
if (signal(left))
on(led_r1);
if (signal(right))
on(led_r2);
if (signal(up))
on(led_g1);
if (signal(down))
on(led_g2);
if (signal(select))
{
on(led_r1);
on(led_r2);
on(led_g1);
on(led_g2);
}
}
}
у меня USB kit так что не я делал этот джойстик, а он стандартный
после того как я установил 1 в порте ввода у меня теперь горят все светодиоды
и легкое изменение свечения происходит по время нажfтия на left и down
мммм, что же делать