?? zj927.s43
字號:
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
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -