Самодельная, графическая приставка. В качестве монитора видоискатель от камеры, но можно и на телевизор..
Есть режим автоматического второго игрока, скоро попробую светопистолет из деталей лазерной указки приделать.
Помахал.Прошу помаши
О, новая порция лулзов от автораВадиматоричик писал(а):Понятно, а у моей приставки другой смысл, грубо говоря, генерируется число от 1 до 5 и 1 или 2 1 или 2 записывает в память 10 или 20 единиц и растения стояшии на ряду просто отнимают из этого числа по единички, когда всё равно нулю, то зомби исчезает и всё с начало
Foks писал(а):О, новая порция лулзов от автора
В прямомВадиматоричик писал(а): В смысле
Еще как уедешь! Толковый алгоритм - это все. А реализовать можно и на кирпичах, и на лазерах. Кстати насчет кирпичей...Вадиматоричик писал(а):на одном алгоритме никуда не уедешь
конечноВадиматоричик писал(а):...А и еще можно исходник блока упровления деньгами.
Код: Выделить всё
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
volatile uint8_t IndBuf[4];
void DecOut(uint16_t val);
//-----------------------------------------------------------------------------
void main(void)
{
uint16_t A=0;
DDRB = 0xFF; DDRD = 0x0F;
PORTA = 0x03; PORTD = 0x70;
OCR0A = (uint8_t)(F_CPU/1024/300);
TCCR0A = 1<<WGM01;
TCCR0B = (1<<CS02) | (1<<CS00);
TIMSK = (1<<OCIE0A) | (1<<OCIE1A);
sei();
DecOut(A);
while(1)
{
while((PINA&0x03)==0x03 && (PIND&0x70)==0x70);
if((PINA&0x01)==0 && A<=9970) A += 20;
if((PINA&0x02)==0 && A>=50) A -= 50;
if((PIND&0x10)==0 && A>=100) A -= 100;
if((PIND&0x20)==0 && A>=150) A -= 150;
if((PIND&0x40)==0 && A>=200) A -= 200;
DecOut(A);
while((PINA&0x03)!=0x03 || (PIND&0x70)!=0x70);
}
}
//-----------------------------------------------------------------------------
void DecOut(uint16_t val)
{
uint16_t a;
uint8_t *str = (uint8_t*)&IndBuf[3];
str[-1]=str[-2]=str[-3]=10;
a = val%10; *str-- = a;
val /= 10; a = val%10;
if(a || val) *str-- = a;
else return;
val /= 10; a = val%10;
if(a || val) *str-- = a;
else return;
val /= 10;
if(val) *str-- = val;
}
//-----------------------------------------------------------------------------
prog_char Font[] =
{
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0 // 0-9,' '
};
ISR(SIG_OUTPUT_COMPARE0A)
{
static uint8_t idx = 0, pin = 1;
PORTD = 0x70 | pin;
PORTB = ~pgm_read_byte(&Font[IndBuf[idx]]);
if(++idx >= 4) idx = 0;
if((pin<<=1) > 8) pin = 1;
}
//-----------------------------------------------------------------------------Вы вообще понимаете, что такое программирование? Как работает микропроцессор/контроллер?Вадиматоричик писал(а):Где вы все эти коды находите (В смысле кубики из которых состоит программа)
Engineer_Keen писал(а):Вы вообще понимаете, что такое программирование? Как работает микропроцессор/контроллер?Вадиматоричик писал(а):Где вы все эти коды находите (В смысле кубики из которых состоит программа)
Эти "кубики", по-хорошему, берутся из головы - вы просто объясняете контроллеру на его языке, что он должен делать.
Вы правильно начали изучать контроллеры с мигания светодиодом, только лучше для начала просто заставить его мигать, без всяких кнопок, и текст не дергать из разных источников, а попытаться написать самому, опираясь на собственную логику и синтаксис используемого языка программирования. Благо для проверки сейчас не нужно что-либо покупать, есть встроенный симулятор AVR студии или Proteus.