📄 test.asm
字号:
#include "tinyphy.inc"
//////////////////////////////////////////////////////////////////////
// set the stack position in memory
ldxi stackstart;
ldsx;
//////////////////////////////////////////////////////////////////////
lbl Main;
ldai 0x0004;
sta temp;
jrs InitLCD;
jrs ReadTemp;
ldxi 0x2000;
jrs Pause;
lbl Main_1;
jrs PrintString;
// setup the 'Temp=' string each 16 bit word holds 2 ascii chars
// end of string is 0x00 for the last char position.
data 'T' * 256 + 'e';
data 'm' * 256 + 'p';
data '=' * 256 +0x0000;
jrs ReadTemp;
jrs PrintHex;
// set lcd cursor to home
ldai 0x0080;
sta lcd_control;
// a little pause
ldxi 0x1000;
jrs Pause;
// invert the led state
lda led;
xori 0x0001;
sta led;
jpr Main_1;
//////////////////////////////////////////////////////////////////////
lbl PrintString;
pula;
swap;
lbl PrintString_1;
ldix;
andi 0xff00;
jprz PrintString_Exit;
ror;
ror;
ror;
ror;
ror;
ror;
ror;
ror;
jrs PrintChar;
ldix;
andi 0x00ff;
jprz PrintString_Exit;
jrs PrintChar;
inx;
jpr PrintString_1;
lbl PrintString_Exit;
inx;
swap;
psha;
ret;
//////////////////////////////////////////////////////////////////////
lbl PrintHex;
ldai 0x0004;
psha;
lbl PrintHex_1;
clc;
swap;
rol;
rol;
rol;
rol;
psha;
rol;
andi 0x000f;
addi 0xfff6;
jprc PrintHex_3;
addi 0x003a;
lbl PrintHex_2;
jrs PrintChar;
pula;
swap;
pula;
subi 0x0001;
jprz PrintHex_Exit;
psha;
jpr PrintHex_1;
lbl PrintHex_3;
addi 0x0041;
jpr PrintHex_2;
lbl PrintHex_Exit;
ret;
//////////////////////////////////////////////////////////////////////
lbl PrintTemp;
ret;
//////////////////////////////////////////////////////////////////////
lbl InitLCD;
lda lcd_control;
andi 0x0080;
jprnz InitLCD;
ldai 0x000c;
sta lcd_control;
ret;
//////////////////////////////////////////////////////////////////////
lbl ReadTemp;
ldxi 0x0000;
ldai 0x0009;
psha;
ldai 0x0004;
sta temp;
lbl ReadTemp_1;
ldai 0x0000;
sta temp;
lda temp;
ror;
swap;
rol;
swap;
ldai 0x0002;
sta temp;
pula;
subi 0x0001;
jprz ReadTemp_2;
psha;
jpr ReadTemp_1;
lbl ReadTemp_2;
ldai 0x0004;
sta temp;
ret;
//////////////////////////////////////////////////////////////////////
lbl PrintChar;
sta lcd_data;
lbl PrintChar_1;
lda lcd_control;
andi 0x0080;
jprnz PrintChar_1;
ret;
//////////////////////////////////////////////////////////////////////
lbl Pause;
dex;
jprnz Pause;
ret;
#if (pass==4) { dump codestart, mem; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -