Differences between revisions 1 and 2
Revision 1 as of 2004-10-26 00:02:20
Size: 49
Comment:
Revision 2 as of 2004-10-29 12:10:23
Size: 1890
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Zapisnik na blbosti = #include <ipOS.h>
#include <ipUART.h>
Line 3: Line 4:
Zatim tu nic neni... /*
 * IP2022 configuration block
 */
CONFIG_BLOCK (
        FUSE0(FUSE0_XTAL | FUSE0_PIN_DIV1 | FUSE0_POUT_DIV2 | FUSE0_WUDP_128us | FUSE0_WUDX_1ms),
        FUSE1(0),
        OSC1_FREQ,
        "UBICOM",
        "starter",
        CONFIG_VER(0, 0, 0, 0),
        CONFIG_DATE(0, 0, 0),
        CONFIG_DATE(0, 0, 0)
        );

#if defined(DEBUG)
#define RUNTIME_DEBUG 1
#else
#define RUNTIME_DEBUG 0
#endif

THIS_FILE("main");

#define K_1 0x11
#define K_2 0x12
#define K_3 0x14
#define K_A 0x18
#define K_4 0x21
#define K_5 0x22
#define K_6 0x24
#define K_B 0x28
#define K_7 0x41
#define K_8 0x42
#define K_9 0x44
#define K_C 0x48
#define K_STAR 0x81
#define K_0 0x82
#define K_HASH 0x84
#define K_D 0x88

#define VID_X 40
#define VID_Y 30
u8_t vidmem[VID_X*VID_Y];


void zpoz(u16_t t)
{
 u16_t i, j;
 for (i = 0; i < t; i++)
    for (j = 0; j < t; j++) {}
}


void init(void)
{
 debug_init();
 heap_add((addr_t)(&_bss_end), (addr_t)(RAMEND - (DEFAULT_STACK_SIZE - 1)) - (addr_t)(&_bss_end));
 timer_init();
 
 *(u8_t *)RBDIR = 0x00;
 *(u8_t *)RCOUT = 0xff;
 
 memset(vidmem, 0, VID_X*VID_Y);
}

u8_t getkey()
{
 u8_t k = 0;
 
 *(u8_t *)RCDIR = 0x0f;
 zpoz(10);
 k |= *(u8_t *)RCIN & 0x0f;
 
 *(u8_t *)RCDIR = 0xf0;
 zpoz(10);
 k |= *(u8_t *)RCIN & 0xf0;

 return k;
}

u8_t pressed(u8_t k)
{
 if ((getkey() & k) == k) return 1;
 return 0;
}

void drawline(u8_t y)
{
 u8_t x = 0;
 
 for (x = 0; x < VID_X; x++) {
  *(u8_t *)RBOUT = vidmem[y*VID_Y+x];
 }
}

void draw()
{
 u8_t y = 0;
 
 for (y = 0; y < VID_Y; y++)
  drawline(y);
}

void start(void)
{
 init();
 
 u8_t i = 0x01;
 
 for (;;) {
  if (pressed(K_1) && !(i & 0x80)) i *= 2;
  else if (pressed(K_2) && !(i & 0x01)) i /= 2;

  *(u8_t *)RBOUT = i;

  zpoz(100);
 }

}

  • IP2022 configuration block

CONFIG_BLOCK (

  • FUSE0(FUSE0_XTAL | FUSE0_PIN_DIV1 | FUSE0_POUT_DIV2 | FUSE0_WUDP_128us | FUSE0_WUDX_1ms), FUSE1(0), OSC1_FREQ, "UBICOM", "starter", CONFIG_VER(0, 0, 0, 0), CONFIG_DATE(0, 0, 0), CONFIG_DATE(0, 0, 0) );

#if defined(DEBUG) #define RUNTIME_DEBUG 1 #else #define RUNTIME_DEBUG 0 #endif

THIS_FILE("main");

#define K_1 0x11 #define K_2 0x12 #define K_3 0x14 #define K_A 0x18 #define K_4 0x21 #define K_5 0x22 #define K_6 0x24 #define K_B 0x28 #define K_7 0x41 #define K_8 0x42 #define K_9 0x44 #define K_C 0x48 #define K_STAR 0x81 #define K_0 0x82 #define K_HASH 0x84 #define K_D 0x88

#define VID_X 40 #define VID_Y 30 u8_t vidmem[VID_X*VID_Y];

void zpoz(u16_t t) {

  • u16_t i, j;

    for (i = 0; i < t; i++)

    • for (j = 0; j < t; j++) {}

}

void init(void) {

  • debug_init();

    heap_add((addr_t)(&_bss_end), (addr_t)(RAMEND - (DEFAULT_STACK_SIZE - 1)) - (addr_t)(&_bss_end)); timer_init();

  • (u8_t *)RBDIR = 0x00;
  • (u8_t *)RCOUT = 0xff; memset(vidmem, 0, VID_X*VID_Y);

}

u8_t getkey() {

  • u8_t k = 0;
  • (u8_t *)RCDIR = 0x0f; zpoz(10);

    k |= *(u8_t *)RCIN & 0x0f;

  • (u8_t *)RCDIR = 0xf0; zpoz(10);

    k |= *(u8_t *)RCIN & 0xf0; return k;

}

u8_t pressed(u8_t k) {

  • if ((getkey() & k) == k) return 1; return 0;

}

void drawline(u8_t y) {

  • u8_t x = 0;

    for (x = 0; x < VID_X; x++) {

    • (u8_t *)RBOUT = vidmem[y*VID_Y+x];
    }

}

void draw() {

  • u8_t y = 0;

    for (y = 0; y < VID_Y; y++)

    • drawline(y);

}

void start(void) {

  • init(); u8_t i = 0x01; for (;;) {
    • if (pressed(K_1) && !(i & 0x80)) i *= 2; else if (pressed(K_2) && !(i & 0x01)) i /= 2;

    • (u8_t *)RBOUT = i; zpoz(100);
    }

}