📄 main.s
字号:
.module main.c
.area lit(rom, con, rel)
_FontLookup:
.byte 0,0
.byte 0,0
.byte 0
.byte 0,0
.byte 47,0
.byte 0
.byte 0,7
.byte 0,7
.byte 0
.byte 20,127
.byte 20,127
.byte 20
.byte 36,42
.byte 127,42
.byte 18
.byte 196,200
.byte 16,38
.byte 'F
.byte 54,'I
.byte 'U,34
.byte 'P
.byte 0,5
.byte 3,0
.byte 0
.byte 0,28
.byte 34,'A
.byte 0
.byte 0,'A
.byte 34,28
.byte 0
.byte 20,8
.byte 62,8
.byte 20
.byte 8,8
.byte 62,8
.byte 8
.byte 0,0
.byte 'P,48
.byte 0
.byte 16,16
.byte 16,16
.byte 16
.byte 0,96
.byte 96,0
.byte 0
.byte 32,16
.byte 8,4
.byte 2
.byte 62,'Q
.byte 'I,'E
.byte 62
.byte 0,'B
.byte 127,64
.byte 0
.byte 'B,'a
.byte 'Q,'I
.byte 'F
.byte 33,'A
.byte 'E,'K
.byte 49
.byte 24,20
.byte 18,127
.byte 16
.byte 39,'E
.byte 'E,'E
.byte 57
.byte 60,'J
.byte 'I,'I
.byte 48
.byte 1,'q
.byte 9,5
.byte 3
.byte 54,'I
.byte 'I,'I
.byte 54
.byte 6,'I
.byte 'I,41
.byte 30
.byte 0,54
.byte 54,0
.byte 0
.byte 0,'V
.byte 54,0
.byte 0
.byte 8,20
.byte 34,'A
.byte 0
.byte 20,20
.byte 20,20
.byte 20
.byte 0,'A
.byte 34,20
.byte 8
.byte 2,1
.byte 'Q,9
.byte 6
.byte 50,'I
.byte 'Y,'Q
.byte 62
.byte 126,17
.byte 17,17
.byte 126
.byte 127,'I
.byte 'I,'I
.byte 54
.byte 62,'A
.byte 'A,'A
.byte 34
.byte 127,'A
.byte 'A,34
.byte 28
.byte 127,'I
.byte 'I,'I
.byte 'A
.byte 127,9
.byte 9,9
.byte 1
.byte 62,'A
.byte 'I,'I
.byte 'z
.byte 127,8
.byte 8,8
.byte 127
.byte 0,'A
.byte 127,'A
.byte 0
.byte 32,64
.byte 'A,63
.byte 1
.byte 127,8
.byte 20,34
.byte 'A
.byte 127,64
.byte 64,64
.byte 64
.byte 127,2
.byte 12,2
.byte 127
.byte 127,4
.byte 8,16
.byte 127
.byte 62,'A
.byte 'A,'A
.byte 62
.byte 127,9
.byte 9,9
.byte 6
.byte 62,'A
.byte 'Q,33
.byte 94
.byte 127,9
.byte 25,41
.byte 'F
.byte 'F,'I
.byte 'I,'I
.byte 49
.byte 1,1
.byte 127,1
.byte 1
.byte 63,64
.byte 64,64
.byte 63
.byte 31,32
.byte 64,32
.byte 31
.byte 63,64
.byte 56,64
.byte 63
.byte 'c,20
.byte 8,20
.byte 'c
.byte 7,8
.byte 'p,8
.byte 7
.byte 'a,'Q
.byte 'I,'E
.byte 'C
.byte 0,127
.byte 'A,'A
.byte 0
.byte 'U,42
.byte 'U,42
.byte 'U
.byte 0,'A
.byte 'A,127
.byte 0
.byte 4,2
.byte 1,2
.byte 4
.byte 64,64
.byte 64,64
.byte 64
.byte 0,1
.byte 2,4
.byte 0
.byte 32,'T
.byte 'T,'T
.byte 'x
.byte 127,'H
.byte 'D,'D
.byte 56
.byte 56,'D
.byte 'D,'D
.byte 32
.byte 56,'D
.byte 'D,'H
.byte 127
.byte 56,'T
.byte 'T,'T
.byte 24
.byte 8,126
.byte 9,1
.byte 2
.byte 12,'R
.byte 'R,'R
.byte 62
.byte 127,8
.byte 4,4
.byte 'x
.byte 0,'D
.byte 125,64
.byte 0
.byte 32,64
.byte 'D,61
.byte 0
.byte 127,16
.byte 40,'D
.byte 0
.byte 0,'A
.byte 127,64
.byte 0
.byte 124,4
.byte 24,4
.byte 'x
.byte 124,8
.byte 4,4
.byte 'x
.byte 56,'D
.byte 'D,'D
.byte 56
.byte 124,20
.byte 20,20
.byte 8
.byte 8,20
.byte 20,24
.byte 124
.byte 124,8
.byte 4,4
.byte 8
.byte 'H,'T
.byte 'T,'T
.byte 32
.byte 4,63
.byte 'D,64
.byte 32
.byte 60,64
.byte 64,32
.byte 124
.byte 28,32
.byte 64,32
.byte 28
.byte 60,64
.byte 48,64
.byte 60
.byte 'D,40
.byte 16,40
.byte 'D
.byte 12,'P
.byte 'P,'P
.byte 60
.byte 'D,'d
.byte 'T,'L
.byte 'D
.dbfile ./small_font.h
.dbsym s FontLookup _FontLookup A[455:91:5]c
.area text(rom, con, rel)
.dbfile ./small_font.h
.dbfile ./main.c
.dbfunc e strfrm _strfrm fpc
; ps -> X+0
; dest -> X-9
; max_val -> X-7
; value -> X-5
_strfrm::
.dbline -1
push X
mov X,SP
add SP,2
.dbline 62
; //----------------------------------------------------------------------------
; // C main line
; //----------------------------------------------------------------------------
;
; #include <m8c.h> // part specific constants and macros
; #include "PSoCAPI.h" // PSoC API definitions for all User Modules
; #include "exchange.h"
; #include "utils.h"
; #include "globdefs.h"
; #include "sigproc.h"
; #include "dataproc.h"
; #include "display.h"
; #include "stdlib.h"
; #include "string.h"
;
; #define POS_LAST_ROW 0
; #define POS_MIN_ROW 1
; #define POS_MAX_ROW 2
; #define POS_MODE_ROW 3
; #define POS_GAIN_ROW 4
; #define POS_STATUS_ROW 5
; #define POS_DATA_COL 35
; #define POS_BARGRAPH 75
; #define POS_BARGRAPH_START 0
; #define POS_BARGRAPH_STOP 5
;
; #define INFO_LAST_TEXT "LAST:"
; #define INFO_MIN_TEXT " MIN:"
; #define INFO_MAX_TEXT " MAX:"
; #define INFO_MODE_TEXT "MODE:"
; #define INFO_MODE_INSTANT "Slow"
; #define INFO_MODE_AVERAGE "Fast"
; #define INFO_GAIN_TEXT "GAIN:"
; #define INFO_STATUS_TEXT "COND:"
; #define INFO_STATUS_ERROR "Error"
; #define INFO_STATUS_WORK "Work "
; #define INFO_BLANK_NUMBER " -- "
;
; #define FLAG_ERROR_BIT 0
; #define FLAG_INIT_BIT 1
; #define FLAG_MODE_BIT 2
;
; #define ADC_RANGE_SHIFT 6
;
; #define CONV_BUFFER_LENGHT 5
; #define MAX_VALUE 999
;
; #if DEBUG
; struct TADC_DATA {WORD y, x;} ADC_Data;
; #endif
;
; typedef struct
; {
; INT last, min, max;
; BYTE gain, swing, flags;
; } TPULSE_STATE;
;
; static INT temp;
; static TPULSE_STATE pulse;
;
; BYTE *strfrm(WORD value, WORD max_val, BYTE *dest)
; {
.dbline 63
; BYTE *ps = dest;
mov A,[X-8]
mov [X+1],A
mov A,[X-9]
mov [X+0],A
.dbline 64
; if (value > max_val) value = max_val;
mov A,[X-5]
cmp A,[X-7]
jnz X1
mov A,[X-4]
cmp A,[X-6]
jz L4
X1:
jc L4
X0:
.dbline 64
mov A,[X-6]
mov [X-4],A
mov A,[X-7]
mov [X-5],A
L4:
.dbline 65
; itoa(dest, value,10);
mov A,0
push A
mov A,10
push A
mov A,[X-5]
push A
mov A,[X-4]
push A
mov A,[X-9]
push A
mov A,[X-8]
push A
xcall _itoa
add SP,-6
xjmp L7
L6:
.dbline 67
inc [X+1]
adc [X+0],0
L7:
.dbline 67
;
; while (*ps) ps++;
mov A,[X+1]
mov [__r1],A
mvi A,[__r1]
jnz L6
xjmp L10
L9:
.dbline 68
mov A,[X+1]
mov [__r1],A
mov A,[X+0]
mov [__r0],A
mov A,[__r1]
add A,1
mov [X+1],A
mov A,[__r0]
adc A,0
mov [X+0],A
mov A,32
mvi [__r1],A
L10:
.dbline 68
; while (ps < (dest + CONV_BUFFER_LENGHT - 1)) *ps++ = ' ';
mov A,[X-8]
add A,4
mov [__r1],A
mov A,[X-9]
adc A,0
mov [__r0],A
mov A,[X+0]
cmp A,[__r0]
jnz X3
mov A,[X+1]
cmp A,[__r1]
jz X2
X3:
jc L9
X2:
.dbline 69
; *ps = 0;
mov A,[X+1]
mov [__r1],A
mov A,0
mvi [__r1],A
.dbline 71
;
; return dest;
mov A,[X-8]
mov [__r1],A
mov A,[X-9]
mov [__r0],A
.dbline -2
L3:
add SP,-2
pop X
.dbline 0 ; func end
ret
.dbsym l ps 0 pc
.dbsym l dest -9 pc
.dbsym l max_val -7 i
.dbsym l value -5 i
.dbend
.dbfunc e LCDUpdate _LCDUpdate fV
; buffer -> X+0
; params -> X-5
_LCDUpdate::
.dbline -1
push X
mov X,SP
add SP,5
.dbline 75
; }
;
; void LCDUpdate(TPULSE_STATE *params)
; {
.dbline 79
; BYTE buffer[CONV_BUFFER_LENGHT];
;
;
; if (CHECKBIT(params->flags, FLAG_INIT_BIT))
mov A,[X-4]
add A,8
mov [__r1],A
mov A,[X-5]
adc A,0
mvi A,[__r1]
mov [__r0],A
tst [__r0],2
jz L13
.dbline 80
; {
.dbline 81
; LcdInit();
xcall _LcdInit
.dbline 83
;
; LcdGoto(0, POS_LAST_ROW); LcdCStr(INFO_LAST_TEXT);
mov A,0
push A
push A
xcall _LcdGoto
add SP,-2
.dbline 83
mov A,>L15
push A
mov A,<L15
push A
xcall _LcdCStr
.dbline 84
; LcdGoto(0, POS_MIN_ROW); LcdCStr(INFO_MIN_TEXT);
mov A,1
push A
mov A,0
push A
xcall _LcdGoto
add SP,-4
.dbline 84
mov A,>L16
push A
mov A,<L16
push A
xcall _LcdCStr
.dbline 85
; LcdGoto(0, POS_MAX_ROW); LcdCStr(INFO_MAX_TEXT);
mov A,2
push A
mov A,0
push A
xcall _LcdGoto
add SP,-4
.dbline 85
mov A,>L17
push A
mov A,<L17
push A
xcall _LcdCStr
.dbline 86
; LcdGoto(0, POS_MODE_ROW); LcdCStr(INFO_MODE_TEXT);
mov A,3
push A
mov A,0
push A
xcall _LcdGoto
add SP,-4
.dbline 86
mov A,>L18
push A
mov A,<L18
push A
xcall _LcdCStr
.dbline 87
; LcdGoto(0, POS_GAIN_ROW); LcdCStr(INFO_GAIN_TEXT);
mov A,4
push A
mov A,0
push A
xcall _LcdGoto
add SP,-4
.dbline 87
mov A,>L19
push A
mov A,<L19
push A
xcall _LcdCStr
.dbline 88
; LcdGoto(0, POS_STATUS_ROW); LcdCStr(INFO_STATUS_TEXT);
mov A,5
push A
mov A,0
push A
xcall _LcdGoto
add SP,-4
.dbline 88
mov A,>L20
push A
mov A,<L20
push A
xcall _LcdCStr
.dbline 90
;
; LcdVBargraph(POS_BARGRAPH, POS_BARGRAPH_START, POS_BARGRAPH_STOP, 0);
mov A,0
push A
mov A,5
push A
mov A,0
push A
mov A,75
push A
xcall _LcdVBargraph
add SP,-6
.dbline 92
;
; CLEARBIT(params->flags, FLAG_INIT_BIT);
mov A,[X-4]
add A,8
mov [__r1],A
mov A,[X-5]
adc A,0
mov [__r0],A
mvi A,[__r1]
dec [__r1]
and A,-3
mvi [__r1],A
.dbline 93
; }
L13:
.dbline 95
;
; LcdGoto(POS_DATA_COL, POS_LAST_ROW);
mov A,0
push A
mov A,35
push A
xcall _LcdGoto
add SP,-2
.dbline 96
mov A,[X-4]
mov [__r1],A
mvi A,[__r1]
mov [__r0],A
mvi A,[__r1]
cmp [__r0],0
jnz X4
cmp A,0
jz L21
X4:
.dbline 96
mov A,[__r0]
push A
push X
mov A,3
push A
mov A,-25
push A
mov A,[X-4]
mov [__r1],A
mvi A,[__r1]
mov [__r0],A
mvi A,[__r1]
mov [__r1],A
mov A,[__r0]
push A
mov A,[__r1]
push A
xcall _strfrm
mov A,[__r0]
push A
mov A,[__r1]
push A
xcall _LcdStr
add SP,-8
xjmp L22
L21:
.dbline 96
; if (params->last) LcdStr(strfrm(params->last, MAX_VALUE, buffer)); else LcdCStr(INFO_BLANK_NUMBER);
mov A,>L23
push A
mov A,<L23
push A
xcall _LcdCStr
add SP,-2
L22:
.dbline 98
;
; LcdGoto(POS_DATA_COL, POS_MIN_ROW);
mov A,1
push A
mov A,35
push A
xcall _LcdGoto
add SP,-2
.dbline 99
mov A,[X-4]
add A,2
mov [__r1],A
mov A,[X-5]
adc A,0
mvi A,[__r1]
mov [__r0],A
mvi A,[__r1]
cmp [__r0],0
jnz X5
cmp A,0
jz L24
X5:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -