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

📄 zj927.s43

📁 这是一个电脉冲治疗仪的实用程序
💻 S43
📖 第 1 页 / 共 3 页
字号:
		RET
KEYDOWN_H1	
		CMP	#61,&SHOWFREQ
		JL	KEYDOWN_H2
		SUB	#04H,&SHOWFREQ
		JMP	KEYDOWN_H3
KEYDOWN_H2	MOV	#60,&SHOWFREQ

KEYDOWN_H3	MOV	#1,R11					;HEART PULSE PREQ * ( 1/4 ) = BREATH PULSE PFEQ
		MOV	&SHOWFREQ,R12
		CALL	#MPYU
		MOV	#4,R11
		CALL	#DIVIDE
		MOV	R12,&SHOWFREQ2			
		
		MOV	#30000,R14				;30000 / HEART PULSE PREQ = INTERRUPT TIMES
		CLR	R15
		MOV	&SHOWFREQ,R11
		CALL	#DIVIDE
		MOV	R12,&CH1FREQ

		MOV	#30000,R14				;30000 / BREATH PULSE PREQ = INTERRUPT TIMES
		CLR	R15
		MOV	&SHOWFREQ2,R11
		CALL	#DIVIDE
		MOV	R12,&CH2FREQ
		
		MOV.B	&SHOWFREQ,&252H
		MOV.B	&SHOWFREQ2,&253H		
		RET

KEYDOWN_P	BIT	#S_WAVE,&STATE
		JC	KEYDOWN_P4
		CMP	#2,&SHOWFREQ3
		JL	KEYDOWN_P2
		DEC	&SHOWFREQ3
		JMP	KEYDOWN_P3
KEYDOWN_P2	MOV	#1,&SHOWFREQ3
KEYDOWN_P3	MOV	&SHOWFREQ3,R11
		DEC	R11
		MOV.B	FREQ_TAB(R11),R11
		MOV.B	R11,&253H
		MOV	#500,R14
		CLR	R15
		CALL	#DIVIDE
		MOV	R12,&WAVEFREQ
KEYDOWN_P4	RET
		
		
;----------------------------------------------------------
KEYHELP		MOV.B	#0,&KEY_CODE
		BIT	#S_START,&STATE
		JC	KEYHELP1
		MOV	#500,&DELAYTIME
		CALL	#BZ
		CALL	#RESETHELP

KEYHELP1	RET
;----------------------------------------------------------
KEYINPHASE	MOV.B	#0,&KEY_CODE
		BIT	#S_START,&STATE
		JC	KEYINPHASE1
		MOV	#500,&DELAYTIME
		CALL	#BZ
		CALL	#RESETINPHASE
KEYINPHASE1	RET

;----------------------------------------------------------
KEYWAVE		MOV.B	#0,&KEY_CODE
		BIT	#S_START,&STATE
		JC	KEYWAVE1
		BIT	#S_POINT,&STATE
		JNC	KEYWAVE1
		MOV	#500,&DELAYTIME
		CALL	#BZ
		BIT	#S_WAVE,&STATE
		JC	KEYWAVE2
		BIS.B	#10H,&LED_CODE
		BIC.B	#20H,&LED_CODE
		BIS.B	#S_WAVE,&STATE
		CALL	#RESETWAVE
		JMP	KEYWAVE1
KEYWAVE2	BIS.B	#20H,&LED_CODE
		BIC.B	#10H,&LED_CODE
		BIC.B	#S_WAVE,&STATE
		CALL	#RESETWAVE2
KEYWAVE1	RET

;----------------------------------------------------------
KEYPOINT	MOV.B	#0,&KEY_CODE
		BIT	#S_START,&STATE
		JC	KEYPOINT1
		MOV	#500,&DELAYTIME
		CALL	#BZ
		BIT	#S_POINT,&STATE
		JC	KEYPOINT2
		CALL	#RESETPOINT1
		JMP	KEYPOINT1
KEYPOINT2	BIT.B	#S_POINTSEL,&STATE
		JC	KEYPOINT3
		CALL	#RESETPOINT2
		JMP	KEYPOINT1
KEYPOINT3	CALL	#RESETPOINT1
KEYPOINT1	RET
;----------------------------------------------------------
KEYTIME		MOV.B	#0,&KEY_CODE
		BIT	#S_START,&STATE
		JC	KEYTIME1
		BIT	#S_POINT,&STATE
		JZ	KEYTIME1
		MOV	#100,&DELAYTIME
		CALL	#BZ
		CMP	#15,&POINTTIMER
		JEQ	KEYTIME2
		MOV.B	#15,&POINTTIMER
		MOV.B	&POINTTIMER,&TIMER2
		MOV.B	&POINTTIMER,&254H
		JMP	KEYTIME1
KEYTIME2	MOV.B	#30,&POINTTIMER
		MOV.B	&POINTTIMER,&TIMER2
		MOV.B	&POINTTIMER,&254H
				
KEYTIME1	RET                      
                                
;------------------------------------------------------------------
;
;		D/A
;	CHIP:		MAX5102,VREF=VCC
;	CHANNEL A:	HEART, BRAIN, POINT
;	CHANNEL B:	BREATH
;	DATA:		240H
;	CHANNEL SELECT:	241H,  0 -->A,   1 -->B
;
;------------------------------------------------------------------	

DA		TST.B	&DACONT
		JZ	DA_CHANNEL_A
DA_CHANNEL_B	BIC.B	#02H,&P2OUT
		JMP	DA_ENABLE
DA_CHANNEL_A	BIS.B	#02H,&P2OUT
DA_ENABLE	
		MOV.B	&DADATA,&P1OUT
	
		BIC.B	#01H,&P2OUT

		BIS.B	#01H,&P2OUT
		
		MOV.B	#0FFH,&P1OUT
		RET
;------------------------------------------------------------------
;
;		KEY 
;	
;	
;	OUTPUTDATA:	242H,  
;	
;	
;
;------------------------------------------------------------------	
		
KEY             
                CALL    #KEYJ
                JNC     KEYEND
                MOV	#8,&DELAYTIME
                CALL    #DELAY10MS
                CALL    #KEYJ
                JNC     KEYEND
                CALL    #KEYCODE
KEYLOOP         CALL    #KEYJ
		JC      KEYLOOP
;                CALL	#DELAY10MS
;                CALL	#KEYJ
;                JC	KEYLOOP
                RET
KEYEND          MOV.B	#0,&KEYCODE
		RET		
		
KEYJ
                BIS.B   #038H,&P5OUT
                MOV	#2,&DELAYTIME
                CALL	#DELAY10MS
                MOV.B   &P5IN,R10
                BIC.B   #038H,&P5OUT
                BIT.B   #07H,R10
                RET
   		
KEYCODE         BIS.B   #08H,&P5OUT
		BIC.B	#30H,&P5OUT
                BIT.B   #01H,&P5IN
                JZ      KEY2
                MOV.B   #01H,&KEY_CODE
KEY2            BIT.B   #02H,&P5IN
                JZ      KEY3
                MOV.B   #02H,&KEY_CODE
KEY3            BIT.B   #04H,&P5IN
                JZ      KEY4
                MOV.B   #03H,&KEY_CODE
KEY4            BIC.B   #28H,&P5OUT
                BIS.B   #10H,&P5OUT
                BIT.B   #01H,&P5IN
                JZ      KEY5
                MOV.B   #04H,&KEY_CODE
KEY5            BIT.B   #02H,&P5IN
                JZ      KEY6
                MOV.B   #05H,&KEY_CODE
KEY6            BIT.B   #04H,&P5IN
                JZ      KEY7
                MOV.B   #06H,&KEY_CODE        
KEY7            BIS.B   #20H,&P5OUT
                BIC.B   #18H,&P5OUT
                BIT.B   #01H,&P5IN
                JZ      KEY8
                MOV.B   #07H,&242H
KEY8            BIT.B   #02H,&P5IN
                JZ      KEY9
                MOV.B   #08H,&KEY_CODE
KEY9            BIT.B   #04H,&P5IN
                JZ      KEY0
                MOV.B   #09H,&KEY_CODE
KEY0            RET

;------------------------------------------------------------------
;
;		LED CONTROL	
;	
;	INPUTDATA:	244H 
;		
;------------------------------------------------------------------
LED_CONTROL	PUSH	R10				;	0	1	2	3	4	5	6	7
		PUSH	R11				;244H:	BZ	INPHASE	START	HELP	GAP	CONT	II	I	
		BIC.B	#08H,&P3OUT			;245H:	1A	1B	2A	2B	3A	3B	4A	4B
		MOV	#16,R11
		MOV	&LED_CODE,R10
LED_LOOP	RLC	R10
		JC	LED_LOOP1
		BIC.B	#40H,&P3OUT
		JMP	LED_LOOP2
LED_LOOP1	BIS.B	#40H,&P3OUT
LED_LOOP2	BIC.B	#80H,&P3OUT
		BIS.B	#80H,&P3OUT
		BIC.B	#80H,&P3OUT
		DEC	R11
		JNZ	LED_LOOP
		BIS.B	#08H,&P3OUT
		POP	R11
		POP	R10
		RET		
		

;------------------------------------------------------------------
;
;		LCD CONTROL
;	
;	LCD MODEL:	SMS0667 LCM	
;	LCDBUFFER:      260H-26CH
;	LCDCODE:        250H-255H	
;		
;	
;
;------------------------------------------------------------------
LCD_CONTROL	PUSH	R10				;SEND 250H-254H	DATA TO LCD MODEL
		PUSH	R11
		PUSH	R12
		CALL	#LCD_CHANGE
		CALL	#LCD_SEND
		POP	R12
		POP	R11
		POP	R10
		RET
		
LCD_RESET	PUSH	R11				;RESET LCD MODEL
		MOV.B	#0,R11
		CALL	#LCD_WRITE_CONTROL
		MOV.B	#2,R11
		CALL	#LCD_WRITE_CONTROL
		MOV.B	#1,R11
		CALL	#LCD_WRITE_CONTROL
		MOV.B	#3,R11
		CALL	#LCD_WRITE_CONTROL
		MOV.B	#29H,R11
		CALL	#LCD_WRITE_CONTROL
		POP	R11
		RET

LCD_CHANGE						;CHANGE	THE DATA TO LCD	BUFFER
		MOV	#0,&260H			;	0	1	2	3	4	5	6	7	
		MOV	#0,&262H			;250H:	心	呼
		MOV	#0,&264H			;251H:	/S	/M	BAT	TITLE	. 	.	.	:
		MOV	#0,&266H			;252H:	88    HEART FREQUENCY
		MOV	#0,&268H			;253H	88    BREATH FREQUENCY
		MOV	#0,&26AH			;254H	88    TIMER
		MOV	#0,&26CH
		
		BIT.B	#01H,&250H
		JZ	LCD_Z1
		BIS.B	#80H,&260H
LCD_Z1		BIT.B	#02H,&250H
		JZ	LCD_Z2
		BIS.B	#80H,&264H
LCD_Z2		
		MOV.B	&251H,&26CH
		AND.B	#0FH,&26CH
		
		BIT.B	#10H,&251H
		JZ	LCD_H3
		BIS.B	#80H,&262H
LCD_H3		BIT.B	#20H,&251H
		JZ	LCD_H5
		BIS.B	#80H,&266H
LCD_H5		BIT.B	#40H,&251H
		JZ	LCD_COL
		BIS.B	#80H,&26AH
LCD_COL		BIT.B	#80H,&251H
		JZ	LCD_88
		BIS.B	#80H,&268H
LCD_88		MOV.B	&252H,R5
		TST.B	R5
		JNZ	LCD_880
		MOV.B	#0AAH,R6
		JMP	LCD_882
LCD_880		CMP.B	#10,R5
		JGE	LCD_881
		ADD.B	#0A0H,R5
		MOV.B	R5,R6
		JMP	LCD_882
LCD_881		CALL	#BIN4_BCD2
LCD_882		MOV.B	R6,R7
		AND.B	#0FH,R7
		MOV.B	DIS_TAB(R7),R7
		ADD	R7,&262H
		MOV.B	R6,R7
		AND.B	#0F0H,R7
		CLRC
		RRC	R7
		RRC	R7
		RRC	R7
		RRC	R7
		MOV.B	DIS_TAB(R7),R7
		ADD	R7,&260H
		
		MOV.B	&253H,R5
		CMP.B	#10,R5
		JGE	LCD_883
		ADD.B	#0A0H,R5
		MOV.B	R5,R6
		JMP	LCD_884
LCD_883		CALL	#BIN4_BCD2
LCD_884		MOV.B	R6,R7
		AND.B	#0FH,R7
		MOV.B	DIS_TAB(R7),R7
		ADD	R7,&266H
		MOV.B	R6,R7
		AND.B	#0F0H,R7
		CLRC
		RRC	R7
		RRC	R7
		RRC	R7
		RRC	R7
		MOV.B	DIS_TAB(R7),R7
		ADD	R7,&264H
		
		MOV.B	&254H,R5
		CALL	#BIN4_BCD2
		MOV.B	R6,R7
		AND.B	#0FH,R7
		MOV.B	DIS_TAB(R7),R7
		ADD	R7,&26AH
		MOV.B	R6,R7
		AND.B	#0F0H,R7
		CLRC
		RRC	R7
		RRC	R7
		RRC	R7
		RRC	R7
		MOV.B	DIS_TAB(R7),R7
		ADD	R7,&268H
		RET
		
					
LCD_SEND    	MOV	#0,R11				;SEND	DATA	SUB	PROGRAM
LCD_SEND_LOOP	MOV	260H(R11),R12			;LCD BUFFER  260H-26CH
		CALL	#LCD_WRITE_DATA
		INC	R11
		INC	R11
		CMP	#13,R11
		JL	LCD_SEND_LOOP		
		RET	

LCD_WRITE_CONTROL					;SEND CONTROL_CODE SUB PROGRAM
		BIS.B	#04H,&P3OUT			;R10	LOOP TIMES
		BIC.B	#04H,&P3OUT			;R11	CONTROL CODE
		SETC					;0	LMD OFF
		CALL	#LCD_WRITE_BIT			;1	LMD ON
		CLRC					;2	LCD OFF
		CALL	#LCD_WRITE_BIT			;3      LCD ON
		CALL	#LCD_WRITE_BIT                  ;29H	LMD SET
		MOV.B	#08H,R10
LCD_WC_LOOP	RLC.B	R11
		CALL	#LCD_WRITE_BIT
		DEC	R10
		JNZ	LCD_WC_LOOP
		RLC.B	R11
		CALL	#LCD_WRITE_BIT
		BIS.B	#80H,&P5OUT
		BIS.B	#04H,&P3OUT
		RET		

LCD_WRITE_DATA	PUSH    R10
                PUSH    R11
                PUSH    R12
                BIS.B	#04H,&P3OUT			;SEND WORD SUB PROGRAM
		BIC.B	#04H,&P3OUT			;R10	LOOP TIMES
		SETC					;R11	LCDRAM ADDRESS(8BIT)
		CALL	#LCD_WRITE_BIT			;R12	DATA(8BIT)
		CLRC
		CALL	#LCD_WRITE_BIT
		SETC	
		CALL	#LCD_WRITE_BIT
		RLC.B	R11
		RLC.B	R11
		MOV.B	#6,R10
LCD_WD_LOOP	RLC.B	R11
		CALL    #LCD_WRITE_BIT
		DEC	R10
		JNZ	LCD_WD_LOOP
		RLC.B	R11
		MOV.B	#8,R10
LCD_WD_LOOP1	RRC.B	R12
		CALL    #LCD_WRITE_BIT
		DEC	R10		
		JNZ	LCD_WD_LOOP1
		RRC.B	R12
		BIS.B	#80H,&P5OUT
		BIS.B	#04H,&P3OUT
		POP     R12
		POP     R11
		POP     R10
		RET
		
LCD_WRITE_BIT	JC	LCD_WB_LOOP			;SEND ONE BIT DATA
		BIC.B	#80H,&P5OUT			;C  THE BIT READY TO SEND
		JMP	LCD_WB_LOOP1			
LCD_WB_LOOP	BIS.B	#80H,&P5OUT		
LCD_WB_LOOP1	NOP
		NOP
		BIS.B	#40H,&P5OUT
		NOP
		NOP
		BIC.B	#40H,&P5OUT
		NOP
		NOP
		BIS.B	#40H,&P5OUT
		RET
	

;------------------------------------------------------------------
;
;		BZ CONTROL	
;	
;		DELAY TIME	R10*0.1S
;	
;------------------------------------------------------------------	
BZ		BIS.B	#01H,&LED_CODE
		CALL	#LED_CONTROL
BZLOOP		TST	&DELAYTIME
		JNZ	BZLOOP
		BIC.B	#01H,&LED_CODE
		CALL	#LED_CONTROL
		RET
		
;******************************************************************
;
;               MPYU	16BIT X 16BIT
;
;		INPUT	R11,R12
;		OUTPUT	R15|R14
;******************************************************************		
MPYU		CLR	R14				;16BIT X 16BIT SUB PROGRAM
		CLR	R15				;R11 X R12 = R15|R14
MACU		CLR	R13
		MOV	#1,R10
MPY2		BIT	R10,R11
		JZ	MPY1
		ADD	R12,R14
		ADDC	R13,R15
MPY1		RLA	R12
		RLC	R13
		RLA	R10
		JNC	MPY2
		RET
		
;******************************************************************
;
;               DIVIDE	32BIT / 16BIT
;
;		INPUT	R15|R14 / R11
;		OUTPUT	R12
;******************************************************************
DIVIDE		CLR	R12				;32BIT / 16BIT SUB PROGRAM
		MOV	#17,R10				;R15|R14 / R11 = R12   
DIV1		CMP	R11,R15
		JLO	DIV2
		SUB	R11,R15

⌨️ 快捷键说明

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