📄 exchange.s
字号:
.module exchange.c
.area data(ram, con, rel)
_ready::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile ./exchange.c
.dbsym e ready _ready c
_rx_buffer::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile ./exchange.c
.blkb 14
.area idata
.word 0,0,0,0,0
.byte 0,0,0,0
.area data(ram, con, rel)
.dbfile ./exchange.c
.dbsym e rx_buffer _rx_buffer A[15:15]c
_rx_index:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile ./exchange.c
.dbsym s rx_index _rx_index X
_tx_buffer::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile ./exchange.c
.blkb 34
.area idata
.word 0,0,0,0,0
.word 0,0,0,0,0
.word 0,0,0,0,0
.byte 0,0,0,0
.area data(ram, con, rel)
.dbfile ./exchange.c
.dbsym e tx_buffer _tx_buffer A[35:35]c
_tx_index:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile ./exchange.c
.dbsym s tx_index _tx_index c
.area text(rom, con, rel)
.dbfile ./exchange.c
.dbfunc e OpenExchange _OpenExchange fV
_OpenExchange::
.dbline -1
.dbline 19
; #include "exchange.h"
; #include "ddsapi.h"
; #include "globalparams.h"
;
;
; #define bTx_232_INT_MASK 0x20
;
; #define RX_BUFFER_LEN 15
;
; BOOL ready = FALSE;
; BYTE rx_buffer[RX_BUFFER_LEN] = "";
; static volatile BYTE rx_index = 0;
;
; #define TX_BUFFER_LEN 35
; BYTE tx_buffer[TX_BUFFER_LEN] = "";
; static BYTE tx_index = 0;
;
; void OpenExchange(void)
; {
.dbline 20
; Rs_Timer_DisableInt();
push X
xcall _Rs_Timer_DisableInt
.dbline 21
; Rs_Timer_WritePeriod(RS232_BAUDRATE_PERIOD);
mov A,25
xcall _Rs_Timer_WritePeriod
.dbline 22
; Rs_Timer_Start();
xcall _Rs_Timer_Start
pop X
.dbline 24
;
; rx_index = 0;
mov [_rx_index],0
.dbline 25
; Rx_232_EnableInt();
push X
xcall _Rx_232_EnableInt
.dbline 26
; Rx_232_Start(RX8_PARITY_NONE);
mov A,0
xcall _Rx_232_Start
pop X
.dbline 28
;
; tx_index = 0xFF;
mov [_tx_index],-1
.dbline 29
; Tx_232_DisableInt();
push X
xcall _Tx_232_DisableInt
.dbline 30
; Tx_232_Start(TX8_PARITY_NONE);
mov A,0
xcall _Tx_232_Start
pop X
.dbline 32
;
; ready = FALSE;
mov [_ready],0
.dbline -2
.dbline 33
; }
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e CloseExchange _CloseExchange fV
_CloseExchange::
.dbline -1
.dbline 36
;
; void CloseExchange(void)
; {
.dbline 37
; Rs_Timer_Stop();
push X
xcall _Rs_Timer_Stop
pop X
.dbline -2
.dbline 38
; }
L2:
.dbline 0 ; func end
ret
.dbend
.area data(ram, con, rel)
.dbfile ./exchange.c
L4:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile ./exchange.c
.area text(rom, con, rel)
.dbfile ./exchange.c
.dbfunc e Rs232_Rx_handler _Rs232_Rx_handler fV
.dbsym s ch L4 c
_Rs232_Rx_handler::
.dbline -1
push A
mov A,[__r0]
push A
mov A,[__r1]
push A
mov A,[__r3]
push A
.dbline 45
;
;
;
;
; #pragma interrupt_handler Rs232_Rx_handler;
; void Rs232_Rx_handler(void)
; {
.dbline 48
; static BYTE ch = 0;
;
; ch = Rx_232_RX_BUFFER_REG;
mov A,REG[50]
mov [L4],A
.dbline 50
;
; if (!(Rx_232_CONTROL_REG & RX8_RX_NO_ERROR))
tst REG[51],-32
jnz L5
.dbline 51
; {
.dbline 52
; if ( (ch == '\n'))
cmp [L4],10
jnz L7
.dbline 53
; {
.dbline 54
; if (rx_index > 1) ready = FALSE;
cmp [_rx_index],1
jc L9
jz L9
X0:
.dbline 54
mov [_ready],0
L9:
.dbline 55
; rx_buffer[rx_index] = 0;
mov [__r1],[_rx_index]
mov [__r0],0
add [__r1],<_rx_buffer
adc [__r0],>_rx_buffer
mov A,0
mvi [__r1],A
.dbline 56
; rx_index = 0;
mov [_rx_index],0
.dbline 57
; }
xjmp L8
L7:
.dbline 59
; else
; {
.dbline 60
; if (rx_index < (RX_BUFFER_LEN-1))
cmp [_rx_index],14
jnc L11
X1:
.dbline 61
; {
.dbline 62
; rx_buffer[rx_index++] = ch;
mov [__r1],[_rx_index]
mov [__r0],0
mov A,[__r1]
add A,1
mov [__r3],A
mov A,0
adc A,0
mov [_rx_index],[__r3]
add [__r1],<_rx_buffer
adc [__r0],>_rx_buffer
mov A,[L4]
mvi [__r1],A
.dbline 63
; }
L11:
.dbline 64
; }
L8:
.dbline 65
L5:
.dbline -2
.dbline 66
; }
; }
L3:
pop A
mov [__r3],A
pop A
mov [__r1],A
pop A
mov [__r0],A
pop A
.dbline 0 ; func end
reti
.dbend
.dbfunc e Rs232_Tx_handler _Rs232_Tx_handler fV
; bFlagShadow -> X+0
_Rs232_Tx_handler::
.dbline -1
push A
mov A,[__r0]
push A
mov A,[__r1]
push A
mov A,[__r3]
push A
push X
mov X,SP
add SP,1
.dbline 70
;
; #pragma interrupt_handler Rs232_Tx_handler;
; void Rs232_Tx_handler(void)
; {
.dbline 71
; if (tx_buffer[tx_index])
mov [__r1],[_tx_index]
mov [__r0],0
add [__r1],<_tx_buffer
adc [__r0],>_tx_buffer
mvi A,[__r1]
jz L14
.dbline 72
; {
.dbline 73
; Tx_232_TX_BUFFER_REG = tx_buffer[tx_index++];
mov [__r1],[_tx_index]
mov [__r0],0
mov A,[__r1]
add A,1
mov [__r3],A
mov A,0
adc A,0
mov [_tx_index],[__r3]
add [__r1],<_tx_buffer
adc [__r0],>_tx_buffer
mvi A,[__r1]
mov REG[53],A
.dbline 74
; }
xjmp L15
L14:
.dbline 76
; else
; {
.dbline 77
.dbline 77
mov A,REG[-1]
and A,-128
mov [X+0],A
.dbline 77
and F, FEh
.dbline 77
and REG[-31],-33
.dbline 77
cmp [X+0],0
jz L16
.dbline 77
.dbline 77
or F, 01h
.dbline 77
L16:
.dbline 77
.dbline 77
.dbline 78
mov [_tx_index],-1
.dbline 79
L15:
.dbline -2
.dbline 80
; M8C_DisableIntMask (INT_MSK1, bTx_232_INT_MASK);
; tx_index = 0xFF;
; }
; }
L13:
add SP,-1
pop X
pop A
mov [__r3],A
pop A
mov [__r1],A
pop A
mov [__r0],A
pop A
.dbline 0 ; func end
reti
.dbsym l bFlagShadow 0 c
.dbend
.dbfunc e ExchangeSend _ExchangeSend fV
; tx_count -> X+2
; ptr -> X+0
; str -> X-5
_ExchangeSend::
.dbline -1
push X
mov X,SP
add SP,3
.dbline 83
;
; void ExchangeSend(const BYTE *str)
; {
.dbline 84
; BYTE *ptr = tx_buffer, tx_count = 0;
mov [X+1],<_tx_buffer
mov [X+0],>_tx_buffer
.dbline 84
mov [X+2],0
L19:
.dbline 86
L20:
.dbline 86
;
; while(tx_index != 0xFF);
cmp [_tx_index],-1
jnz L19
.dbline 87
; tx_index = tx_count= 0;
mov [X+2],0
mov [_tx_index],0
xjmp L23
L22:
.dbline 90
;
; while (*str)
; {
.dbline 91
; *ptr++ = *str++;
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,[X-4]
mov [__r3],A
mov A,[X-5]
mov [__r2],A
mov A,[__r3]
add A,1
mov [X-4],A
mov A,[__r2]
adc A,0
mov [X-5],A
mov A,[__r2]
push X
mov X,[__r3]
romx
pop X
mvi [__r1],A
.dbline 92
; if (++tx_count > (TX_BUFFER_LEN-2)) break;
mov A,[X+2]
add A,1
mov [X+2],A
cmp A,33
jc L25
jz L25
X2:
.dbline 92
xjmp L24
L25:
.dbline 93
L23:
.dbline 89
mov A,[X-4]
mov [__r1],A
mov A,[X-5]
push X
mov X,[__r1]
romx
pop X
cmp A,0
jnz L22
L24:
.dbline 94
; }
; *ptr = 0;
mov A,[X+1]
mov [__r1],A
mov A,0
mvi [__r1],A
.dbline 96
;
; Tx_232_EnableInt();
push X
xcall _Tx_232_EnableInt
pop X
.dbline 97
; Tx_232_SendData(tx_buffer[tx_index++]);
mov [__r1],[_tx_index]
mov [__r0],0
mov A,[__r1]
add A,1
mov [__r3],A
mov A,0
adc A,0
mov [_tx_index],[__r3]
add [__r1],<_tx_buffer
adc [__r0],>_tx_buffer
mvi A,[__r1]
push X
xcall _Tx_232_SendData
pop X
.dbline -2
.dbline 99
;
; }
L18:
add SP,-3
pop X
.dbline 0 ; func end
ret
.dbsym l tx_count 2 c
.dbsym l ptr 0 pc
.dbsym l str -5 pc
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -