X-Git-Url: https://git.ucc.asn.au/?p=uccvend-snackrom.git;a=blobdiff_plain;f=ROM2%2Fmain_basic.c;h=f3bd010c22f518334b1bf89f1f65b4f085a82e1d;hp=d848401ba9d2fd75c2c8f93c7e25e041b74a80a4;hb=080c85d87da93ba2472b0c90d17527838d668db2;hpb=27fb8a023fa0572ef4171624781460bc59537d49 diff --git a/ROM2/main_basic.c b/ROM2/main_basic.c index d848401..f3bd010 100644 --- a/ROM2/main_basic.c +++ b/ROM2/main_basic.c @@ -138,35 +138,24 @@ void ping_pong() { send_packet(); } -int main() { - u16 last_coin_value; - bool last_door_open; - int display_pos; - unsigned int i; - char display_buf[11]; - for (display_pos = 0; display_pos < 11; display_pos++) - display_buf[display_pos] = '\0'; - display_pos = 0; +u16 last_coin_value; +bool last_door_open; +char display_buf[11]; +u8 cur_motor[2]; - delay(1000); +int main() { + u8 i; + for (i = 0; i < 11; i++) + display_buf[i] = ' '; + display_buf[10] = '\0'; - chime_on(); - for (i = 0; i < 40000; i++) {} - chime_off(); - for (i = 0; i < 20000; i++) {} - chime_on(); - for (i = 0; i < 60000; i++) {} - changer_output = 0x7f; - //_io_ports[M6811_PORTA] = 0xc8; /* for talking to coin mech */ - _io_ports[M6811_PORTA] = 0xc0; /* for talking to serial port */ + _io_ports[M6811_PORTA] = 0xc0; /* display on. talking to serial port */ _io_ports[M6811_DDRA] = 0xfc; _io_ports[M6811_DDRD] = 0x3e; _io_ports[M6811_SPCR] = 0x12; set_misc_output(0x00); - chime_off(); /* mainly for debugging */ - display_init(); set_msg(" HELLO "); @@ -176,8 +165,7 @@ int main() { coinmech_init(); keypad_init(); - chime_count = 100; - while (chime_count != 0); + delay(500); set_msg(" CRUEL "); @@ -185,29 +173,29 @@ int main() { last_door_open = 0; dispense_motor(22); - - chime_count = 50; - while (chime_count != 0); + delay(1000); set_msg(" WORLD "); delay(1000); - set_msg("*5N4X0RZ* "); - delay(1000); + chime_start(); + + cur_motor[0] = 0; while(1) { + if (cur_motor[0] == 0xff) { /* signal to say redraw screen */ + set_msg("*5N4X0RZ* "); + cur_motor[0] = 0; + } + if (door_open() != last_door_open) { last_door_open = door_open(); send_door_msg(last_door_open); if (last_door_open) { - chime_on(); + chime_start(); set_msg("DOOR OPEND"); - delay(100); - chime_off(); } else { - chime_on(); + chime_start(); set_msg("DOOR CLOSE"); - delay(100); - chime_off(); } } @@ -241,13 +229,25 @@ int main() { keypad_read(); if (keypad_pressed()) { - if (last_key == KEY_RESET) - display_buf[display_pos] = 'R'; - else - display_buf[display_pos] = '0'+(last_key%10); - display_pos++; - display_pos %= 10; - set_msg(display_buf); + if (last_key == KEY_RESET) { + cur_motor[0] = 0xff; + } else { + if (cur_motor[0]) { + cur_motor[1] = last_key%10; + display_buf[1] = cur_motor[0]+'0'; + set_msg(display_buf); + dispense_motor(cur_motor[0]*10 + cur_motor[1]); + set_msg(" DONE "); + display_buf[0] = ' '; + display_buf[1] = ' '; + cur_motor[0] = 0xff; + delay(1000); + } else { + cur_motor[0] = last_key%10; + display_buf[0] = cur_motor[0]+'0'; + set_msg(display_buf); + } + } send_keypress(last_key); }