⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tinyuart.inc

📁 这个是专门用在ALtera第二代PLD MAXII上的16位微处理器IP核
💻 INC
字号:
    //////////////////////////////////////////////////////////////////////
lbl PrintBusy;
    pshp;                                      
    psha;

lbl PrintBusy_Loop;
    lda     uart_base+0x01;
    andi    uart_busy_bit;
    jprnz   PrintBusy_Loop;
    pula;
    pulp;
    ret;

    //////////////////////////////////////////////////////////////////////
lbl PrintChar;
    jrs     PrintBusy;
    sta     uart_base;
    ret;

    //////////////////////////////////////////////////////////////////////
lbl ScanChar;
    lda     uart_base+0x01;
    ror;
    ror;
    ror;
    lda     uart_base;
    ret;

    //////////////////////////////////////////////////////////////////////
lbl GetChar;
    pshp;

lbl GetChar_Loop;
    jrs     ScanChar;
    jprnc   GetChar_Loop;
    sta     uart_base+0x01;
    pulp;
    ret;

    //////////////////////////////////////////////////////////////////////
lbl GetHexDigit;
    jrs     GetChar;
    cmpi    0x1b;
    jprz    GetHexDigit_ESC;
    cmpi    0x30;
    jprc    GetHexDigit;
    cmpi    0x3A;
    jprc    GetHexDigit_2;
    cmpi    0x41;
    jprc    GetHexDigit;
    cmpi    0x47;
    jprc    GetHexDigit_1;
    cmpi    0x61;
    jprc    GetHexDigit;
    cmpi    0x67;
    jprnc   GetHexDigit;
    andi    0xdf;
    

lbl GetHexDigit_1;
    jrs     PrintChar;
    subi    0x37;
    clc;
    ret;

lbl GetHexDigit_2;
    jrs     PrintChar;
    subi    0x30;
    clc;
    ret;

lbl GetHexDigit_ESC;
    sec;
    ret;

    //////////////////////////////////////////////////////////////////////
lbl GetHexByte;
    pshp;
    pshx;
    jrs     GetHexDigit;
    jprc    GetHexByte_ESC;
    ror;
    ror;
    ror;
    ror;
    ror;
    ldxa;
    jrs     GetHexDigit;
    jprc    GetHexByte_ESC;
    orrx;
    pulx;
    pulp;
    clc;
    ret;

lbl GetHexByte_ESC;
    pulx;
    pulp;
    sec;
    ret;

    //////////////////////////////////////////////////////////////////////
lbl GetHexWord;
    jrs     GetHexByte;
    jprc    GetHexWord_ESC;
    ldxa;
    jrs     GetHexByte;
    jprc    GetHexWord_ESC;
    ldya;
    clc;
    ret;

lbl GetHexWord_ESC;
    sec;
    ret;

    //////////////////////////////////////////////////////////////////////
lbl PrintString;
    puly;
    pulx;

lbl PrintString_1;
    ldx;
    cmpi    0x00;
    jprz    PrintString_Exit;
    jrs     PrintChar;
    inx;
    jpr     PrintString_1;

lbl PrintString_Exit;
    inx;
    pshx;
    pshy;
    ret;

    //////////////////////////////////////////////////////////////////////
lbl PrintHexWord;                            
    ldax;
    jrs     PrintHex;
    lday;

lbl PrintHex;
    psha;
    shr;
    shr;
    shr;
    shr;
    jrs     PrintHex_Nibble;
    pula;

lbl PrintHex_Nibble;
    andi    0x0f;
    addi    0xf6;
    jprc    PrintHex_Nibble_1;
    addi    0x3a;
    jpr     PrintChar;

lbl PrintHex_Nibble_1;
    addi    0x41;
    jpr     PrintChar;

    //////////////////////////////////////////////////////////////////////
lbl PrintCRLF;
    push_all;
    jrs     PrintString;
    data    0x0d;
    data    0x0a;
    data    0x00;
    pop_all;
    ret;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -