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

📄 exchange.s

📁 测量脉搏的源码 Cypress公司使用 CY27443 完成相关的功能
💻 S
字号:
	.module exchange.c
	.area data(ram, con, rel)
_tx_index::
	.blkb 1
	.area idata
	.byte 254
	.area data(ram, con, rel)
	.dbfile ./exchange.c
	.dbsym e tx_index _tx_index X
_tx_count::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile ./exchange.c
	.dbsym e tx_count _tx_count c
	.area lit(rom, con, rel)
_hex_table::
	.byte 48,49
	.byte 50,51
	.byte 52,53
	.byte 54,55
	.byte 56,57
	.byte 'A,'B
	.byte 'C,'D
	.byte 'E,'F
	.dbsym e hex_table _hex_table A[16:16]c
	.area text(rom, con, rel)
	.dbfile ./exchange.c
	.dbfunc e Echange_Stop _Echange_Stop fV
_Echange_Stop::
	.dbline -1
	.dbline 28
; #include "PSoCApi.h"
; #include <m8c.h>
; #include "exchange.h"
; #include "stdlib.h"
; #include "utils.h"
; 
; #define BIM_CONTROL_PORT PRT1DR
; #define BIM_TX_SEL_BIT 3
; #define BIM_RX_SEL_BIT 2
; 
; #define TX_FUNCTION_REG_MODE1_BIT 4
; 
; #define START_BYTE 'S'
; #define STOP_BYTE  'P'
; #define XOR_MASK   0x00
; #define INDEX_START_BYTE -1
; #define INDEX_COMPLETE -2
; 
; volatile CHAR tx_index = INDEX_COMPLETE;
; BYTE tx_count = 0;
; BYTE *tx_buffer;
; 
; const char hex_table [] = 
;   {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
; 
; 
; void Echange_Stop(void)
; {
	.dbline 29
;   TX_SERIAL_Stop();
	push X
	xcall _TX_SERIAL_Stop
	.dbline 30
;   Baud_Start(); 
	xcall _Baud_Start
	pop X
	.dbline -2
	.dbline 31
; }
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Exchange_SendBuf _Exchange_SendBuf fV
;          count -> X-6
;           p_tx -> X-5
_Exchange_SendBuf::
	.dbline -1
	push X
	mov X,SP
	.dbline 34
; 
; void Exchange_SendBuf(char *p_tx, BYTE count)
; { 
L3:
	.dbline 35
L4:
	.dbline 35
;   while (INDEX_COMPLETE != tx_index);
	cmp [_tx_index],-2
	jnz L3
	.dbline 37
;   
;   tx_count = count << 1;
	mov A,[X-6]
	mov [__r0],A
	asl [__r0]
	mov [_tx_count],[__r0]
	.dbline 39
;   
;   tx_buffer = p_tx; 
	mov A,[X-4]
	mov [_tx_buffer+1],A
	mov A,[X-5]
	mov [_tx_buffer],A
	.dbline 40
;   tx_index = INDEX_START_BYTE;
	mov [_tx_index],-1
	.dbline -2
	.dbline 41
; }
L2:
	pop X
	.dbline 0 ; func end
	ret
	.dbsym l count 0 I
	.dbsym l count -6 c
	.dbsym l p_tx -5 pc
	.dbend
	.dbfunc e Exchange_Start _Exchange_Start fV
_Exchange_Start::
	.dbline -1
	.dbline 44
; 
; void Exchange_Start(void)
; {
	.dbline 45
;   Baud_Start();
	push X
	xcall _Baud_Start
	pop X
	.dbline 46
;   CLEARBIT(TX_SERIAL_FUNC_REG, TX_FUNCTION_REG_MODE1_BIT); //set TX reg empty interrupt
	or F,0x10  ; iopage = 1
	and REG[56],-17
	and F,0xEF ; iopage = 0
	.dbline 47
;   TX_SERIAL_Start(TX8_PARITY_NONE); 
	push X
	mov A,0
	xcall _TX_SERIAL_Start
	pop X
	.dbline 49
; 
;   tx_index = INDEX_COMPLETE;      
	mov [_tx_index],-2
	.dbline 50
;   TX_SERIAL_EnableInt(); 
	push X
	xcall _TX_SERIAL_EnableInt
	pop X
	.dbline 51
;   TX_SERIAL_TX_BUFFER_REG = XOR_MASK;
	mov REG[57],0
	.dbline -2
	.dbline 52
; }
L6:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Exchange_Stop _Exchange_Stop fV
_Exchange_Stop::
	.dbline -1
	.dbline 55
; 
; void Exchange_Stop(void)
; {   
	.dbline 56
;   TX_SERIAL_DisableInt();
	push X
	xcall _TX_SERIAL_DisableInt
	.dbline 57
;   TX_SERIAL_Stop(); 
	xcall _TX_SERIAL_Stop
	pop X
	.dbline -2
	.dbline 58
; }
L7:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e TX_SERIAL_handler _TX_SERIAL_handler fV
_TX_SERIAL_handler::
	.dbline -1
	push A
	mov A,[__r0]
	push A
	mov A,[__r1]
	push A
	push X
	mov X,SP
	add SP,2
	.dbline 62
; 
; #pragma interrupt_handler TX_SERIAL_handler;
; void TX_SERIAL_handler (void)
; { 
	.dbline 63
;   if (INDEX_COMPLETE == tx_index)
	cmp [_tx_index],-2
	jnz L9
	.dbline 64
;   {
	.dbline 65
;     TX_SERIAL_TX_BUFFER_REG = XOR_MASK;
	mov REG[57],0
	.dbline 66
;   }
	xjmp L10
L9:
	.dbline 68
;     else 
;   if (INDEX_START_BYTE == tx_index)
	cmp [_tx_index],-1
	jnz L11
	.dbline 69
;   {
	.dbline 70
;     TX_SERIAL_TX_BUFFER_REG = XOR_MASK ^ START_BYTE;
	mov REG[57],83
	.dbline 71
;     tx_index++;
	inc [_tx_index]
	.dbline 72
;   }
	xjmp L12
L11:
	.dbline 74
;     else    
;   if (tx_index < tx_count)  
	mov A,[_tx_index]
	cmp A,[_tx_count]
	jnc L13
X0:
	.dbline 75
;   {
	.dbline 76
;     TX_SERIAL_TX_BUFFER_REG = XOR_MASK ^((tx_index & 0x01) ? 
	tst [_tx_index],1
	jz L16
	mov [__r1],[_tx_index]
	mov [__r0],0
	tst [__r1],-128
	jz X1
	mov [__r0],-1
X1:
	asr [__r0]
	rrc [__r1]
	mov A,[_tx_buffer+1]
	add [__r1],A
	mov A,[_tx_buffer]
	adc [__r0],A
	mvi A,[__r1]
	mov [__r1],A
	mov [__r0],0
	and [__r1],15
	and [__r0],0
	add [__r1],<_hex_table
	adc [__r0],>_hex_table
	mov A,[__r0]
	push X
	mov X,[__r1]
	romx
	pop X
	mov [X+1],A
	mov [X+0],0
	xjmp L17
L16:
	mov [__r1],[_tx_index]
	mov [__r0],0
	tst [__r1],-128
	jz X2
	mov [__r0],-1
X2:
	asr [__r0]
	rrc [__r1]
	mov A,[_tx_buffer+1]
	add [__r1],A
	mov A,[_tx_buffer]
	adc [__r0],A
	mvi A,[__r1]
	mov [__r1],A
	mov [__r0],0
	asr [__r0]
	rrc [__r1]
	asr [__r0]
	rrc [__r1]
	asr [__r0]
	rrc [__r1]
	asr [__r0]
	rrc [__r1]
	add [__r1],<_hex_table
	adc [__r0],>_hex_table
	mov A,[__r0]
	push X
	mov X,[__r1]
	romx
	pop X
	mov [X+1],A
	mov [X+0],0
L17:
	mov A,[X+1]
	mov REG[57],A
	.dbline 79
;      (hex_table[tx_buffer[tx_index >> 1] & 0x0F]):((hex_table[tx_buffer[tx_index >>1] >> 4])));
;      
;      tx_index++;
	inc [_tx_index]
	.dbline 80
;   }
	xjmp L14
L13:
	.dbline 82
;     else 
;   if (tx_index == tx_count)  
	mov A,[_tx_index]
	cmp A,[_tx_count]
	jnz L18
	.dbline 83
;   {
	.dbline 84
;     TX_SERIAL_TX_BUFFER_REG = XOR_MASK ^ STOP_BYTE;
	mov REG[57],80
	.dbline 85
;     tx_index++;
	inc [_tx_index]
	.dbline 86
;   }
	xjmp L19
L18:
	.dbline 88
;     else
;   if (tx_index == (tx_count+1))
	mov A,[_tx_count]
	add A,1
	mov [__r0],A
	mov A,[_tx_index]
	cmp A,[__r0]
	jnz L20
	.dbline 89
;   {
	.dbline 90
;     tx_index = INDEX_COMPLETE;
	mov [_tx_index],-2
	.dbline 91
;     TX_SERIAL_TX_BUFFER_REG = XOR_MASK;
	mov REG[57],0
	.dbline 92
;   }    
L20:
L19:
L14:
L12:
L10:
	.dbline -2
	.dbline 93
; }
L8:
	add SP,-2
	pop X
	pop A
	mov [__r1],A
	pop A
	mov [__r0],A
	pop A
	.dbline 0 ; func end
	reti
	.dbend
	.area bss(ram, con, rel)
	.dbfile ./exchange.c
_tx_buffer::
	.blkb 2
	.dbsym e tx_buffer _tx_buffer pc

⌨️ 快捷键说明

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