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

📄 main.s

📁 测量脉搏的源码 Cypress公司使用 CY27443 完成相关的功能
💻 S
📖 第 1 页 / 共 2 页
字号:
	.dbline 99
	mov A,[__r0]
	push A
	push X
	mov A,3
	push A
	mov A,-25
	push A
	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]
	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 L25
L24:
	.dbline 99
;   if (params->min) LcdStr(strfrm(params->min, MAX_VALUE, buffer)); else LcdCStr(INFO_BLANK_NUMBER);
	mov A,>L23
	push A
	mov A,<L23
	push A
	xcall _LcdCStr
	add SP,-2
L25:
	.dbline 101
;   
;   LcdGoto(POS_DATA_COL, POS_MAX_ROW); 
	mov A,2
	push A
	mov A,35
	push A
	xcall _LcdGoto
	add SP,-2
	.dbline 102
	mov A,[X-4]
	add A,4
	mov [__r1],A
	mov A,[X-5]
	adc A,0
	mvi A,[__r1]
	mov [__r0],A
	mvi A,[__r1]
	cmp [__r0],0
	jnz X6
	cmp A,0
	jz L26
X6:
	.dbline 102
	mov A,[__r0]
	push A
	push X
	mov A,3
	push A
	mov A,-25
	push A
	mov A,[X-4]
	add A,4
	mov [__r1],A
	mov A,[X-5]
	adc A,0
	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 L27
L26:
	.dbline 102
;   if (params->max) LcdStr(strfrm(params->max, MAX_VALUE, buffer)); else LcdCStr(INFO_BLANK_NUMBER);
	mov A,>L23
	push A
	mov A,<L23
	push A
	xcall _LcdCStr
	add SP,-2
L27:
	.dbline 104
;   
;   LcdGoto(POS_DATA_COL, POS_MODE_ROW);   
	mov A,3
	push A
	mov A,35
	push A
	xcall _LcdGoto
	add SP,-2
	.dbline 105
;   CHECKBIT(params->flags, FLAG_MODE_BIT)?(LcdCStr(INFO_MODE_INSTANT)):(LcdCStr(INFO_MODE_AVERAGE));    
	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],4
	jz L30
	mov A,>L28
	push A
	mov A,<L28
	push A
	xcall _LcdCStr
	add SP,-2
	xjmp L31
L30:
	mov A,>L29
	push A
	mov A,<L29
	push A
	xcall _LcdCStr
	add SP,-2
L31:
	.dbline 107
;   
;   LcdGoto(POS_DATA_COL, POS_GAIN_ROW); 
	mov A,4
	push A
	mov A,35
	push A
	xcall _LcdGoto
	.dbline 108
;   LcdStr(strfrm(params->gain, MAX_VALUE, buffer));   
	mov A,[__r0]
	push A
	push X
	mov A,3
	push A
	mov A,-25
	push A
	mov A,[X-4]
	add A,6
	mov [__r1],A
	mov A,[X-5]
	adc A,0
	mvi A,[__r1]
	mov [__r1],A
	mov A,0
	push A
	mov A,[__r1]
	push A
	xcall _strfrm
	add SP,-8
	mov A,[__r0]
	push A
	mov A,[__r1]
	push A
	xcall _LcdStr
	.dbline 110
;   
;   LcdGoto(POS_DATA_COL, POS_STATUS_ROW); 
	mov A,5
	push A
	mov A,35
	push A
	xcall _LcdGoto
	add SP,-4
	.dbline 111
;   CHECKBIT(params->flags, FLAG_ERROR_BIT)?(LcdCStr(INFO_STATUS_ERROR)):(LcdCStr(INFO_STATUS_WORK));
	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],1
	jz L34
	mov A,>L32
	push A
	mov A,<L32
	push A
	xcall _LcdCStr
	add SP,-2
	xjmp L35
L34:
	mov A,>L33
	push A
	mov A,<L33
	push A
	xcall _LcdCStr
	add SP,-2
L35:
	.dbline 113
;   
;   LcdVBargraph(POS_BARGRAPH, POS_BARGRAPH_START, POS_BARGRAPH_STOP, params->swing);
	mov A,[X-4]
	add A,7
	mov [__r1],A
	mov A,[X-5]
	adc A,0
	mvi A,[__r1]
	push A
	mov A,5
	push A
	mov A,0
	push A
	mov A,75
	push A
	xcall _LcdVBargraph
	add SP,-4
	.dbline -2
	.dbline 114
; }
L12:
	add SP,-5
	pop X
	.dbline 0 ; func end
	ret
	.dbsym l buffer 0 A[5:5]c
	.dbsym l params -5 pX
	.dbend
	.area data(ram, con, rel)
	.dbfile ./main.c
L37:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile ./main.c
	.area text(rom, con, rel)
	.dbfile ./main.c
	.dbfunc e ReadButtons _ReadButtons fc
	.dbsym s last_read L37 c
;         result -> X+1
;           temp -> X+0
_ReadButtons::
	.dbline -1
	push X
	mov X,SP
	add SP,2
	.dbline 117
; 
; BYTE ReadButtons(void)
; {
	.dbline 119
;   static BYTE last_read = 0;
;   BYTE temp, result = 0;
	mov [X+1],0
	.dbline 121
;   
;   BUTTONS_PORT |= BIT(BUTTON_MODE_BIT) | BIT(BUTTON_RESET_BIT);
	or REG[8],40
	.dbline 122
;   temp = BUTTONS_PORT & (BIT(BUTTON_MODE_BIT) | BIT(BUTTON_RESET_BIT));
	mov A,REG[8]
	and A,40
	mov [X+0],A
	.dbline 124
;   
;   result = (temp ^ last_read) & (~temp);  
	mov A,[X+0]
	xor A,[L37]
	mov [__r0],A
	mov A,[X+0]
	cpl A
	mov [__r2],A
	mov A,[__r0]
	and A,[__r2]
	mov [X+1],A
	.dbline 125
;   last_read = temp; 
	mov A,[X+0]
	mov [L37],A
	.dbline 127
;   
;   return result;
	mov A,[X+1]
	.dbline -2
L36:
	add SP,-2
	pop X
	.dbline 0 ; func end
	ret
	.dbsym l result 1 c
	.dbsym l temp 0 c
	.dbend
	.dbfunc e main _main fV
_main::
	.dbline -1
	push X
	mov X,SP
	add SP,2
	.dbline 133
; }
; 
; 
; 
; void main()
; {        
	.dbline 134
;   In_PGA_Start(In_PGA_HIGHPOWER);
	push X
	mov A,3
	xcall _In_PGA_Start
	.dbline 135
;   In_PGA_SetGain(In_PGA_G1_00);
	mov A,-8
	xcall _In_PGA_SetGain
	.dbline 137
;   
;   Carrier_Timer_Start();    
	xcall _Carrier_Timer_Start
	.dbline 138
;   Mixer_Start(Mixer_HIGHPOWER);
	mov A,3
	xcall _Mixer_Start
	.dbline 140
;   
;   In_BPF_Start(In_BPF_HIGHPOWER);
	mov A,3
	xcall _In_BPF_Start
	pop X
	.dbline 147
;   
; #if DEBUG  
;   Exchange_Start();
; #endif  
;   
;   //AMD_CR1 |= 0x01; -- global output bus driven
;   AMD_CR1 |= 0x04; // -- comparator bus driven
	or F,0x10  ; iopage = 1
	or REG[102],4
	and F,0xEF ; iopage = 0
	.dbline 149
;   
;   SETBIT(INT_MSK3, 0);
	or REG[-34],1
	.dbline 150
;   SETBIT(INT_MSK0, 6);
	or REG[-32],64
	.dbline 152
;   
;   ADC_SetResolution(13);
	push X
	mov A,13
	xcall _ADC_SetResolution
	pop X
	.dbline 154
;   
;   ADC_bPWM_IntTime_LSB = (BYTE)ADC_INTEGRATION;
	mov REG[38],32
	.dbline 155
;   ADC_bPWM_IntTime_MSB = (BYTE)(ADC_INTEGRATION >> 8);
	mov REG[42],78
	.dbline 157
;   
;   ADC_bPWM_Period_LSB = (BYTE)ADC_PERIOD;
	mov REG[37],-124
	.dbline 158
;   ADC_bPWM_Period_MSB = (BYTE)(ADC_PERIOD >> 8);
	mov REG[41],78
	.dbline 160
;   
;   M8C_EnableGInt;
		or  F, 01h

	.dbline 166
;   
; #if DEBUG  
;   Exchange_Start();
; #endif  
;     
;   ADC_Start(ADC_HIGHPOWER);
	push X
	mov A,3
	xcall _ADC_Start
	.dbline 167
;   ADC_GetSamples(0);  
	mov A,0
	xcall _ADC_GetSamples
	pop X
	.dbline 170
;     
;   
;   pulse.flags = BIT(FLAG_INIT_BIT);
	mov [_pulse+8],2
	.dbline 171
;   LCDUpdate(&pulse);
	mov A,>_pulse
	push A
	mov A,<_pulse
	push A
	xcall _LCDUpdate
	add SP,-2
	xjmp L41
L40:
	.dbline 174
;   
;   while(1) 
;   {
	.dbline 175
;     temp = ReadButtons();
	xcall _ReadButtons
	mov [_temp+1],A
	mov [_temp],0
	.dbline 176
;     if (CHECKBIT(temp, BUTTON_MODE_BIT))
	mov A,[_temp+1]
	and A,32
	mov [__r1],A
	mov A,[_temp]
	and A,0
	jnz X8
	cmp [__r1],0
	jz L43
X8:
	.dbline 177
;     {
	.dbline 178
;       pulse.flags ^= BIT(FLAG_MODE_BIT);
	xor [_pulse+8],4
	.dbline 179
;       Pulse_Init_Calculate();     
	xcall _Pulse_Init_Calculate
	.dbline 180
;       LCDUpdate(&pulse);
	mov A,>_pulse
	push A
	mov A,<_pulse
	push A
	xcall _LCDUpdate
	add SP,-2
	.dbline 181
;     }  
L43:
	.dbline 183
;     
;     if (CHECKBIT(temp, BUTTON_RESET_BIT))
	mov A,[_temp+1]
	and A,8
	mov [__r1],A
	mov A,[_temp]
	and A,0
	jnz X9
	cmp [__r1],0
	jz L46
X9:
	.dbline 184
;     {
	.dbline 185
;       pulse.last = pulse.min = pulse.max = 0;
	mov [_pulse+4+1],0
	mov [_pulse+4],0
	mov [_pulse+2+1],0
	mov [_pulse+2],0
	mov [_pulse+1],0
	mov [_pulse],0
	.dbline 186
;       LCDUpdate(&pulse);
	mov A,>_pulse
	push A
	mov A,<_pulse
	push A
	xcall _LCDUpdate
	add SP,-2
	.dbline 187
;       Pulse_Init_Calculate();      
	xcall _Pulse_Init_Calculate
	.dbline 188
;     }
L46:
	.dbline 190
;     
;     temp = (CHECKBIT(pulse.flags, FLAG_MODE_BIT))?
	tst [_pulse+8],4
	jz L52
	xcall _Pulse_Averaged_Calculate
	mov A,[__r1]
	mov [X+1],A
	mov A,[__r0]
	mov [X+0],A
	xjmp L53
L52:
	xcall _Pulse_Instant_Calculate
	mov A,[__r1]
	mov [X+1],A
	mov A,[__r0]
	mov [X+0],A
L53:
	mov A,[X+1]
	mov [_temp+1],A
	mov A,[X+0]
	mov [_temp],A
	.dbline 193
;       (Pulse_Averaged_Calculate()) : (Pulse_Instant_Calculate());
;     
;     pulse.gain = GetGainLevel();
	xcall _GetGainLevel
	mov [_pulse+6],A
	.dbline 194
;     pulse.swing = GetADCRange() >> ADC_RANGE_SHIFT;
	xcall _GetADCRange
	asr [__r0]
	rrc [__r1]
	asr [__r0]
	rrc [__r1]
	asr [__r0]
	rrc [__r1]
	asr [__r0]
	rrc [__r1]
	asr [__r0]
	rrc [__r1]
	asr [__r0]
	rrc [__r1]
	mov [_pulse+7],[__r1]
	.dbline 196
;     
;     if (PULSE_IN_PROGRESS == temp) CLEARBIT(pulse.flags, FLAG_ERROR_BIT);
	cmp [_temp],0
	jnz L56
	cmp [_temp+1],0
	jnz L56
X10:
	.dbline 196
	and [_pulse+8],-2
	xjmp L57
L56:
	.dbline 198
;       else 
;     if (PULSE_CALC_ERROR == temp) SETBIT(pulse.flags, FLAG_ERROR_BIT);
	cmp [_temp],-1
	jnz L59
	cmp [_temp+1],-1
	jnz L59
X11:
	.dbline 198
	or [_pulse+8],1
	mov A,[_pulse+8]
	xjmp L60
L59:
	.dbline 200
;      else
;     {
	.dbline 201
;       pulse.last = temp;
	mov [_pulse+1],[_temp+1]
	mov [_pulse],[_temp]
	.dbline 202
;       if (pulse.max < pulse.last) pulse.max = pulse.last;
	mov A,[_pulse+4]
	xor A,-128
	mov [__rY],A
	mov A,[_pulse]
	xor A,-128
	mov [__rZ],A
	mov [__rX],0
	mov A,[_pulse+4+1]
	sub A,[_pulse+1]
	or [__rX],A
	mov A,[__rY]
	sbb A,[__rZ]
	or [__rX],A
	jnc L62
	mov A,[__rX]
	jz L62
X12:
	.dbline 202
	mov [_pulse+4+1],[_pulse+1]
	mov [_pulse+4],[_pulse]
L62:
	.dbline 203
	mov A,[_pulse+2]
	xor A,-128
	mov [__rY],A
	mov A,[_pulse]
	xor A,-128
	mov [__rZ],A
	mov [__rX],0
	mov A,[_pulse+2+1]
	sub A,[_pulse+1]
	or [__rX],A
	mov A,[__rY]
	sbb A,[__rZ]
	or [__rX],A
	jz X13
	jnc L70
X13:
	cmp [_pulse+2],0
	jnz L66
	cmp [_pulse+2+1],0
	jnz L66
X14:
L70:
	.dbline 203
;       if ((pulse.min > pulse.last) || (0 == pulse.min)) pulse.min = pulse.last;
	mov [_pulse+2+1],[_pulse+1]
	mov [_pulse+2],[_pulse]
L66:
	.dbline 204
;     } 
L60:
L57:
	.dbline 206
;     
;     if (Check_Update_Timeout()) LCDUpdate(&pulse);
	xcall _Check_Update_Timeout
	cmp A,0
	jz L72
	.dbline 206
	mov A,>_pulse
	push A
	mov A,<_pulse
	push A
	xcall _LCDUpdate
	add SP,-2
L72:
	.dbline 215
L41:
	.dbline 173
	xjmp L40
X7:
	.dbline -2
	.dbline 218
;     
; #if DEBUG
;      while (!ADC_fIsDataAvailable());
;      ADC_Data.y = GetDebugVar();
;      ADC_Data.x = ADC_iGetDataClearFlag();
;      Exchange_SendBuf((BYTE*)&ADC_Data, 4);
; #endif    
;      
;   }
;    
;   
; }
L38:
	add SP,-2
	pop X
	.dbline 0 ; func end
	ret
	.dbend
	.area bss(ram, con, rel)
	.dbfile ./main.c
_pulse:
	.blkb 9
	.dbsym s pulse _pulse X
_temp:
	.blkb 2
	.dbsym s temp _temp I
	.area lit(rom, con, rel)
L33:
	.byte 'W,'o,'r,'k,32,0
L32:
	.byte 'E,'r,'r,'o,'r,0
L29:
	.byte 'F,'a,'s,'t,0
L28:
	.byte 'S,'l,'o,'w,0
L23:
	.byte 32,45,45,32,0
L20:
	.byte 'C,'O,'N,'D,58,0
L19:
	.byte 'G,'A,'I,'N,58,0
L18:
	.byte 'M,'O,'D,'E,58,0
L17:
	.byte 32,'M,'A,'X,58,0
L16:
	.byte 32,'M,'I,'N,58,0
L15:
	.byte 'L,'A,'S,'T,58,0

⌨️ 快捷键说明

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