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

📄 zj927.s43

📁 这是一个电脉冲治疗仪的实用程序
💻 S43
📖 第 1 页 / 共 3 页
字号:
;..................................................................
;
;     This program is bulit for the CPCR                 
;   which design by Sixms.                                      
;                                                               
;   Title:        CPCR  program                         
;   MCU:          Msp430f133                                   
;   CREATE by:    Sixms                                         
;   Company:      YIWENKEJI                                     
;   SUPPORT TEL:  020-89225322-231                              
;   Version:      1.03A                                         
;   Data:         2004/10/1                                    
;
;..................................................................

#include  "msp430x13X.h"

;..................................................................

CH1WIDTH		EQU	200H
CH1RANGE		EQU	202H
CH1FREQ			EQU	204H
CH1TIME			EQU	206H

CH2WIDTH		EQU	208H
CH2RANGE		EQU	20AH
CH2FREQ			EQU	20CH
CH2TIME			EQU	20EH
CH2PULSE		EQU	210H

CH3WIDTH		EQU	212H
CH3RANGE		EQU	214H
CH3FREQ			EQU	216H
CH3TIME			EQU	218H


CH4WIDTH		EQU	21AH
CH4RANGE		EQU	21CH
CH4FREQ			EQU	21EH
CH4TIME			EQU	220H

DELAYTIME		EQU	232H
POINTTIMER		EQU	234H
SHOWFREQ		EQU	236H
SHOWFREQ2		EQU	238H
SHOWFREQ3		EQU	23AH	
WAVEFREQ		EQU	23CH
WAVETIME		EQU	23EH

DADATA			EQU	240H
DACONT			EQU	241H
KEY_CODE		EQU	242H
RELAY_CODE		EQU	243H
LED_CODE		EQU	244H
STATE			EQU	24AH
TIMER1			EQU	24CH
TIMER2			EQU	24DH
TATIMER			EQU	24EH

LCDBUF			EQU	250H				;250H-255H WAS THE LCDBUF

TIMERDATA		EQU	25EH
DOT			EQU	270H
S_START			EQU	1
S_HELP			EQU	2
S_INPHASE		EQU	4
S_POINT			EQU	8
S_POINTSEL		EQU	10H
S_WAVE			EQU	20H
S_WAVEGAP		EQU	40H


KEY_UP			EQU	1
KEY_DOWN		EQU	2
KEY_INPHASE		EQU	4
KEY_START		EQU	5
KEY_HELP		EQU	6
KEY_WAVE		EQU	7
KEY_TIME		EQU	8
KEY_POINT		EQU	9

WR			EQU	1
S			EQU	2
A			EQU	4
B			EQU	8
CH4			EQU	10H
CH3			EQU	20H
CH2			EQU	40H
CH1			EQU	80H

BAT			EQU	1
POWER			EQU	2
CSLCD			EQU	4
STR			EQU	8
D			EQU	40H
CLK			EQU	80H

CLKLCD			EQU	40H
DLCD			EQU	80H

A0			EQU	1
A1			EQU	2
A2			EQU	4
A3			EQU	8
A4			EQU	10H
A5			EQU	20H
A6			EQU	40H
A7			EQU	80H

								
WAVEGAPI		EQU	25				;1 / ( 25 * 2MS ) = 20 Hz
WAVEGAPII		EQU	125				;1 / ( 125 * 2MS) = 4 Hz
WAVEGAPC		EQU	5000				;5000 * 2MS = 10 S

;******************************************************************
		ORG	0E000H
            	
RESET		MOV.W 	#300H,SP				;设置堆栈
STOPWDT		MOV.W	#WDTPW+WDTHOLD,&WDTCTL			;停止看门狗
SETUPCLK	
		MOV.B   #00H,&BCSCTL2				;
		MOV.B	#73H,&DCOCTL
SETUPIO		MOV.B	#0FFH,&P1DIR				;设置各个IO口的输入输出方式
		MOV.B	#0FFH,&P2DIR
		MOV.B	#0DEH,&P3DIR
		MOV.B	#030H,&P3SEL				;P3.4,P3.5为串口
		MOV.B	#0FBH,&P4DIR
		MOV.B	#0F8H,&P5DIR
		MOV.B	#000H,&P6DIR				
		MOV.B	#0FFH,&P6SEL				;P6口采用外围模块ADC12
		BIC.B	#0F0H,&P2OUT
		BIS.B	#POWER,&P3OUT
RESETINI	CALL	#RESETDA
		CALL	#RESETTIMER
		CALL	#RESETHELP
		CALL	#RESETLCD
		MOV	#0,&DOT
RESETLED	MOV	#05508H,&LED_CODE		
RESETRELAY	BIC.B	#0F0H,&P2OUT
		MOV.B	#01H,&RELAY_CODE	
RESETKEY	MOV.B	#00H,&KEY_CODE
		BIS.B	#A,&P2OUT
		BIC.B	#B,&P2OUT	
		CALL	#SETUPTA
		MOV	#1000,&DELAYTIME
		CALL	#BZ	
		JMP	MAINLOOP
;---------------------------------------------------------------	
RESETHELP	
		MOV	#18,&CH1WIDTH
		MOV	#0,&CH1RANGE
		MOV	#375,&CH1FREQ
		MOV	#0,&CH1TIME
		
		MOV	#37,&CH2WIDTH
		MOV	#0,&CH2RANGE
		MOV	#1500,&CH2FREQ
		MOV	#0,&CH2TIME
		MOV	#4,&CH2PULSE
		
		MOV	#18,&CH3WIDTH
		MOV	#0H,&CH3RANGE
		MOV	#100,&CH3FREQ
		MOV	#0,&CH3TIME
		
		MOV	#18,&CH4WIDTH
		MOV	#0H,&CH4RANGE
		MOV	#100,&CH4FREQ
		MOV	#0,&CH4TIME
		
		MOV	#80,&SHOWFREQ
		MOV	#20,&SHOWFREQ2
		MOV	#0,&WAVEFREQ
		MOV	#0,&WAVETIME
	
		MOV.B	#3,&250H
		MOV.B	#0AH,&251H
		MOV.B	&SHOWFREQ,&252H
		MOV.B	&SHOWFREQ2,&253H
		MOV.B	#00H,&254H
		MOV.B	#0,&TIMER1
		MOV.B	#0,&TIMER2
		MOV.B	#01H,&RELAY_CODE
		BIC	#0FFFBH,&LED_CODE
		BIS	#05508H,&LED_CODE                  ;@@@@@@@@@
		BIC	#S_START,&STATE
		BIS	#S_HELP,&STATE
		BIC	#S_INPHASE,&STATE
		BIC	#S_WAVE,&STATE
		BIC	#S_POINT,&STATE
		RET

;----------------------------------------------------------------
RESETINPHASE			
		MOV	#18,&CH1WIDTH
		MOV	#0,&CH1RANGE
		MOV	#375,&CH1FREQ
		MOV	#0,&CH1TIME
		
		MOV	#37,&CH2WIDTH
		MOV	#0,&CH2RANGE
		MOV	#1500,&CH2FREQ
		MOV	#0,&CH2TIME
		MOV	#4,&CH2PULSE
		
		MOV	#18,&CH3WIDTH
		MOV	#28H,&CH3RANGE
		MOV	#0,&CH3TIME
		
		MOV	#18,&CH4WIDTH
		MOV	#0H,&CH4RANGE
		MOV	#100,&CH4FREQ
		MOV	#0,&CH4TIME
		
		MOV	#80,&SHOWFREQ
		MOV	#20,&SHOWFREQ2
		MOV	#750,&WAVEFREQ
		MOV	#0,&WAVETIME
		
		MOV.B	#3,&250H
		MOV.B	#0AH,&251H
		MOV.B	&SHOWFREQ,&252H
		MOV.B	&SHOWFREQ2,&253H
		MOV.B	#00H,&254H
		MOV.B	#0,&TIMER1
		MOV.B	#0,&TIMER2
		MOV.B	#3,&RELAY_CODE
		BIC	#0FFFBH,&LED_CODE
		BIS	#0A502H,&LED_CODE                    ;@@@@@@@@@@@@@@@@@
		BIC	#S_HELP,&STATE
		BIS	#S_INPHASE,&STATE
		BIC	#S_POINT,&STATE
		RET
		
;---------------------------------------------------------------		
RESETPOINT1	MOV	#26,&CH1WIDTH
		MOV	#2DH,&CH1RANGE
		MOV	#10H,&CH2RANGE
		MOV	#28H,&CH3RANGE
		MOV	#0FH,&CH4RANGE
		MOV	#100,&CH1FREQ
		MOV	#0,&CH1TIME
		
		MOV	#0,&SHOWFREQ
		MOV	#15,&SHOWFREQ2
		MOV	#5,&SHOWFREQ3
		MOV	#3000,&WAVEFREQ
		MOV	#0,&WAVETIME
		
		MOV	#15,&POINTTIMER
		MOV.B	&POINTTIMER,&TIMER2
		MOV.B	#60,&TIMER1
		MOV.B	#0H,&250H
		MOV.B	#09H,&251H
		MOV.B	#00H,&252H
		MOV.B	#5,&253H
		MOV.B	&POINTTIMER,&254H
		MOV	#0AAA0H,LED_CODE
		BIS.B	#S_POINT,&STATE
		BIC.B	#S_HELP,&STATE
		BIC.B	#S_WAVE,&STATE
		BIC.B	#S_INPHASE,&STATE
		BIC.B	#S_POINTSEL,&STATE
		RET

RESETPOINT2	MOV	#26,&CH1WIDTH
		MOV	#34H,&CH1RANGE
		MOV	#2DH,&CH2RANGE
		MOV	#32H,&CH3RANGE
		MOV	#1EH,&CH4RANGE
		MOV	#100,&CH1FREQ
		MOV	#0,&CH1TIME
		
		MOV	#0,&SHOWFREQ
		MOV	#15,&SHOWFREQ2
		MOV	#5,&SHOWFREQ3
		MOV	#3000,&WAVEFREQ
		MOV	#0,&WAVETIME
		
		MOV	#15,&POINTTIMER
		MOV.B	&POINTTIMER,&TIMER2
		MOV.B	#60,&TIMER1
		MOV.B	#0H,&250H
		MOV.B	#09H,&251H
		MOV.B	#00H,&252H
		MOV.B	#5,&253H
		MOV.B	&POINTTIMER,&254H
		MOV	#0AA60H,LED_CODE
		BIS.B	#S_POINT,&STATE
		BIC.B	#S_HELP,&STATE
		BIC.B	#S_INPHASE,&STATE
		BIC.B	#S_WAVE,&STATE
		BIS.B	#S_POINTSEL,&STATE
		RET
;----------------------------------------------------------------
RESETWAVE	MOV.B	#0,&250H
		MOV.B	#9,&251H
		MOV.B	#20,&252H
		MOV.B	#04H,&253H
		MOV.B	&POINTTIMER,&254H
		
		RET
RESETWAVE2	
		
		MOV	#0,&SHOWFREQ
		MOV	#15,&SHOWFREQ2
		MOV	#5,&SHOWFREQ3
		MOV	#3000,&WAVEFREQ
		MOV	#0,&WAVETIME
		
		MOV.B	&POINTTIMER,&TIMER2
		MOV.B	#60,&TIMER1
		MOV.B	#0,&250H
		MOV.B	#09H,&251H
		MOV.B	#0,&252H
		MOV.B	#5,&253H
		MOV.B	&POINTTIMER,&254H

		RET
		
;----------------------------------------------------------------
RESETLCD	MOV.B	#3,&250H
		MOV.B	#0AH,&251H
		MOV.B	&SHOWFREQ,&252H
		MOV.B	&SHOWFREQ2,&253H
		MOV.B	#00H,&254H
		CALL    #LCD_RESET
		RET

;----------------------------------------------------------------		
RESETTIMER	MOV.B	#0,&TIMER1
		MOV.B	#0,&TIMER2
		MOV	#1600,&TATIMER
		RET
		
;----------------------------------------------------------------		
RESETDA		MOV.B	#0FFH,&DADATA
		MOV.B	#0H,&DACONT
		CALL	#DA
		MOV.B	#1H,&DACONT
		CALL	#DA
		RET
		
;----------------------------------------------------------------
SETUPTA		MOV.W	#TASSEL1+TACLR,&TACTL
SETUPC0		MOV.W	#CCIE,&CCTL0
		MOV.W	&TATIMER,&CCR0
		BIS.W	#MC0,&TACTL
SETUPTB		MOV.W	#TBSSEL0+TBCLR,&TBCTL
SETUPTBC0	MOV.W	#CCIE,&TBCCTL0
		MOV.W	#32768,&TBCCR0
		BIS.W	#MC0,&TBCTL
		EINT
		RET
		
;---------------------------------------------------------------
MAINLOOP	
                CALL    #KEY
		CALL	#LED_CONTROL
		CALL	#LCD_CONTROL
		CALL    #MAIN
		CALL	#BATTER
		JMP	MAINLOOP
	
;************************************************************
;
;		BATTER
;
;************************************************************	
BATTER			
		BIT.B	#BAT,&P3IN
		JC	BATTER1
		BIS.B	#4H,&251H
		JMP	BATTER2
BATTER1		BIC.B	#04H,&251H
BATTER2		RET
;************************************************************
;
;		MAIN
;
;************************************************************			
MAIN            BIT	#S_POINT,&STATE
		JC	MAIN1
		MOV	#85,R11
		MOV	&CH2PULSE,R12
		CALL	#MPYU
		MOV	&CH2FREQ,R11
		CALL	#DIVIDE
		MOV	R12,&CH2RANGE
MAIN1		
		BIT.B	#04H,&P4IN
		JC	MAIN2
		BIS.B	#04H,&LED_CODE
		JMP	MAIN3
MAIN2		BIC.B	#04H,&LED_CODE
MAIN3		
		CMP.B	#KEY_START,&KEY_CODE
		JEQ	KEYSTART
		CMP.B	#KEY_UP,&KEY_CODE
		JEQ	KEYUP
		CMP.B	#KEY_DOWN,&KEY_CODE
		JEQ	KEYDOWN
		CMP.B	#KEY_HELP,&KEY_CODE
		JEQ	KEYHELP
		CMP.B	#KEY_INPHASE,&KEY_CODE
		JEQ	KEYINPHASE
		CMP.B	#KEY_WAVE,&KEY_CODE
		JEQ	KEYWAVE
		CMP.B	#KEY_POINT,&KEY_CODE
		JEQ	KEYPOINT
		CMP.B	#KEY_TIME,&KEY_CODE
		JEQ	KEYTIME		
                RET
;----------------------------------------------------------	
KEYSTART	MOV.B	#0,&KEY_CODE
		MOV	#1000,&DELAYTIME
		CALL	#BZ
		BIT.B	#S_START,&STATE
		JC	KEYSTART1
		BIS	#S_START,&STATE	
                BIS.B	#04H,&LED_CODE
		BIS.B	#0F0H,&P2OUT

		BIC.B	#POWER,&P3OUT
                RET
KEYSTART1	BIC	#S_START,&STATE
		BIC.B	#0F0H,&P2OUT

		BIC.B	#04H,&LED_CODE
		BIC.B	#080H,&251H
		BIS.B	#POWER,&P3OUT
		
		RET
;----------------------------------------------------------		
KEYUP		MOV.B	#0,&KEY_CODE
		MOV	#100,&DELAYTIME
		CALL	#BZ
		BIT	#S_HELP,&STATE
		JC	KEYUP_H1
		BIT	#S_INPHASE,&STATE
		JC	KEYUP_H1
		BIT	#S_POINT,&STATE
		JC	KEYUP_P
		RET
		
KEYUP_H1	
		CMP	#96,&SHOWFREQ
		JHS	KEYUP_H2
		ADD	#04H,&SHOWFREQ
		JMP	KEYUP_H3
KEYUP_H2	MOV	#96,&SHOWFREQ
KEYUP_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
		
KEYUP_P		BIT	#S_WAVE,&STATE
		JC	KEYUP_P4
		CMP	#20,&SHOWFREQ3
		JHS	KEYUP_P2
		INC	&SHOWFREQ3
		JMP	KEYUP_P3
KEYUP_P2	MOV	#20,&SHOWFREQ3
KEYUP_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
KEYUP_P4	RET
		
FREQ_TAB	DB	1,2,3,4,5,6,7,8,9,10
		DB	15,20,30,40,50,60,70,80,90,99						
;---------------------------------------------------------		
KEYDOWN		MOV.B	#0,&KEY_CODE
		MOV	#100,&DELAYTIME
		CALL	#BZ
		BIT	#S_HELP,&STATE
		JC	KEYDOWN_H1
		BIT	#S_INPHASE,&STATE
		JC	KEYDOWN_H1
		BIT	#S_POINT,&STATE
		JC	KEYDOWN_P

⌨️ 快捷键说明

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