예제 #1
0
void VM_SetSinglePort(void)
{
    uint8               port, data, msk;
    volatile uint8 *    dptr, * pptr;

    data   = LOBYTE(VM_PopW());
    port   = LOBYTE(VM_PopW()) & SINGLE_PORT_MASK;

    if (port > ((uint8)7)) {
        msk    = port & ((uint8)0x07);
        dptr   = &HAL_BYTE_PORT_DDR1;
        pptr   = &HAL_BYTE_PORT1;
    } else {
        msk    = port;
        dptr   = &HAL_BYTE_PORT_DDR0;
        pptr   = &HAL_BYTE_PORT0;
    }

    msk = BitTab8[msk];

    if (data != ((uint8)0)) {
        *pptr |= msk;     /* alle Werte ungleich '0' führen zu Hi-Pegel. */
    } else {
        *pptr &= ~msk;
    }

    *dptr |= msk;         /* Port als Ausgang konfigurieren. */
}
예제 #2
0
void Lcd_goto(void)
{
    uint8   pos;
    uint8   line;

    pos    = (uint8)VM_PopW();
    line   = (uint8)VM_PopW();
}
예제 #3
0
void Lcd_print(void)
{
    uint8   length;
    uint8 * buf;

    length = (uint8)VM_PopW();              /* length */
    buf    = BPTR(VM_UserRAM, VM_PopW());   /* buf[] */

}
예제 #4
0
void VM_GetNibblePort(void)
{
    uint8 port, data;

    port = LOBYTE(VM_PopW()) & NIBBLE_PORT_MASK;

    switch (port) {
        case 0: case 1:
            data = HAL_BYTE_PORT0;
            break;
        case 2: case 3:
            data = HAL_BYTE_PORT1;
            break;
        default:
            CC_ASSERT(FALSE, ERROR_ILLOPA);
    }

    if ((port & ((uint8)0x01)) == ((uint8)0x1)) {
        data >>= 4;
    }
예제 #5
0
void VM_GetSinglePort(void)
{
    uint8 port, data, msk;

    port = LOBYTE(VM_PopW()) & SINGLE_PORT_MASK;

    if (port > ((uint8)7)) {
        msk    = port & ((uint8)0x07);
        data   = HAL_BYTE_PORT1;
    } else {
        msk    = port;
        data   = HAL_BYTE_PORT0;
    }

    msk = BitTab8[msk];

    if ((data & msk) == msk) {
        data = (uint8)CC_TRUE;
    } else {
        data = (uint8)CC_FALSE;
    }

    VM_PushW((uint16)data);
}
예제 #6
0
void Lcd_scroll(void)
{
    uint8 pos;

    pos = (uint8)VM_PopW();
}
예제 #7
0
void Lcd_show_cursor(void)
{
    uint8 yesno;

    yesno = (uint8)VM_PopW();
}
예제 #8
0
void Lcd_put(void)
{
    uint8 ch;

    ch = (uint8)VM_PopW();
}