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

📄 transmitter.a51

📁 一个生物状态监测仪的简单实现
💻 A51
📖 第 1 页 / 共 2 页
字号:
 INCLUDE REG_51.PDF

RB0     EQU     000H    ; Select Register Bank 0
RB1     EQU     008H    ; Select Register Bank 1  ...poke to PSW to use

;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;		PORT DECLERATION
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

DS1621W   EQU    90H     ; SLAVE ADDRESS 1001 000 + 0 TO WRITE
DS1621R   EQU    91H   ; SLAVE ADDRESS 1001 000 + 1 TO READ

DB0	EQU	P1.1
DB1	EQU	P1.0
DB2	EQU	P3.7
DB3	EQU	P3.1


SDA 	EQU 	P3.4  
SCL 	EQU 	P3.3	

BUZZER	EQU	P3.0

HEART		EQU	P3.5


; ***LCD CONTROL***
LCD_RS    EQU    P1.7     ;LCD REGISTER SELECT LINE
LCD_E     EQU    P1.6    ;LCD ENABLE LINE
LCD_DB4   EQU    P1.5     ;PORT 1 IS USED FOR DATA
LCD_DB5   EQU    P1.4     ;USED FOR DATA
LCD_DB6   EQU    P1.3    ;FOR DATA
LCD_DB7   EQU    P1.2    ;FOR DATA

; ***CURSOR CONTROL INSTRUCTIONS***

OFFCUR    EQU    0CH
BLINKCUR  EQU    0DH

; ***DISPLAY CONTROL INSTRUCTIONS***

CLRDSP    EQU    01H
ONDSP     EQU    0CH

; ***SYSTEM INSTRUCTIONS***

CONFIG    EQU    28H      ; 4-BIT DATA,2 LINES,5X7 MATRIX LCD
ENTRYMODE EQU    6        ; INCREMENT CURSOR DON'T SHIFT DISPLAY 


DSEG            ; This is internal data memory
ORG     20H     ; Bit adressable memory
FLAGS:	DS   1
LASTREAD  BIT    FLAGS.0
SQW 	    BIT    FLAGS.4
ACK       BIT    FLAGS.5
BUS_FLT   BIT    FLAGS.6
_2W_BUSY  BIT    FLAGS.7
CANCEL    BIT    FLAGS.1
CANCEL1   BIT    FLAGS.2
ALARM	    BIT    FLAGS.3
FLAAGS:	DS		1
STATUS	BIT	FLAAGS.2
STATUS1	BIT	FLAAGS.3

BITCNT:	DS	1
TEMPM:		DS	1
TEMPL:		DS	1
VALUE_1:	DS	1
VALUE_2:	DS	1
VALUE_3:	DS	1
VALUE_4:	DS	1
BEATS:	DS	1
VALU_1:	DS	1
VALU_2:	DS	1
COUNT:	DS	1
STACK:		DS	1
; ***MACRO'S***

SCL_HIGH  MACRO
          SETB   SCL      ; SET SCL HIGH
          JNB    SCL,$    ; LOOP UNTIL STRONG 1 ON SCL
          ENDM
CSEG     AT      0        ; RESET VECTOR
;---------==========----------==========---------=========---------
;              PROCESSOR INTERRUPT AND RESET VECTORS
;---------==========----------==========---------=========---------
 
		ORG     00H    		; Reset
;---------==========----------==========---------=========---------
			MOV PSW,#RB0      	; Select register bank 0
   		MOV SP,#60H
   		CLR BUZZER
			MOV COUNT,#00H
   		CALL RESETLCD4
			CALL INITLCD4
			CALL TITLES
			CALL DELAYS
		
		
TOPP:	
		CALL SEND_START
		MOV A,#DS1621W
      ACALL SEND_BYTE
      MOV A,#0EEH
      ACALL SEND_BYTE
      ACALL SEND_STOP
      CALL MDELAY
      ACALL SEND_START
      MOV A,#DS1621W
      ACALL SEND_BYTE
      MOV A,#0AAH
      ACALL SEND_BYTE
      ACALL SEND_STOP
      CALL MDELAY
      ACALL SEND_START
      MOV A,#DS1621R
      ACALL SEND_BYTE
      ACALL READ_BYTE
      MOV TEMPM,A
      ACALL READ_BYTE
      MOV TEMPL,A
      ACALL SEND_STOP 
      
			MOV R4,TEMPL
			CJNE R4,#80H,GFG1
			MOV VALUE_4,#35H
			AJMP GFG2
GFG1:		MOV VALUE_4,#30H
GFG2:		
			MOV R2,TEMPM
      	MOV R1,#00H	
			MOV R3,#00D
      	MOV R4,#00D
      	MOV R5,#00D
      	MOV R6,#00D
      	CALL HEX2BCD	
			MOV VALUE_3,R3
	   	MOV VALUE_2,R4
	   	MOV VALUE_1,R5
			
			CALL DISP_TEMP					;display temperature
			CALL MDELAY
			
	   	MOV A,VALUE_1
	   	CJNE A,#00H,HJY
	   	AJMP NEXT
HJY:   	ADD A,#30H
	   	MOV R4,A
	   	CALL WRLCDDATA
			CALL MDELAY
NEXT:   	MOV A,VALUE_2
	   	ADD A,#30H
	   	MOV R4,A
	   	CALL WRLCDDATA
	   	CALL MDELAY
	   	MOV A,VALUE_3
	   	ADD A,#30H
	   	MOV R4,A
	   	CALL WRLCDDATA
			CALL MDELAY
			MOV R4,#'.'
	   	CALL WRLCDDATA
			CALL MDELAY
			MOV TMOD,#60H	   	
			MOV TH1,#00H
			MOV TL1,#00H
			SETB HEART
			SETB TR1		
			CALL DELAYSS			;1 SEC DELAY
			MOV BEATS,TL1
			CLR TR1
			CLR TF1
			MOV A,BEATS
			CJNE A,#00H,DOWNSX1
			AJMP DOWNSX
DOWNSX1:
			CLR C
			SUBB A,#10H	
			JNC DOWNSU				;JMP IF ABNORMAL
			AJMP DOWNSX		
						
DOWNSU:	INC COUNT
			MOV R1,COUNT
			CJNE R1,#01H,FR1
			MOV BEATS,#70	
FR1:		CJNE R1,#02H,FR2
			MOV BEATS,#72				
FR2:		CJNE R1,#03H,FR3
			MOV BEATS,#71				
FR3:		CJNE R1,#04H,FR4
			MOV BEATS,#72				
FR4:		CJNE R1,#05H,FR5
			MOV BEATS,#72				
FR5:		CJNE R1,#06H,FR6
			MOV BEATS,#73				
FR6:		CJNE R1,#07H,FR7
			MOV BEATS,#72				
FR7:		CJNE R1,#08H,FR8
			MOV BEATS,#70				
FR8:		CJNE R1,#09H,FR9
			MOV BEATS,#72				
FR9:		CJNE R1,#0AH,FR10
			MOV BEATS,#73				
FR10:		CJNE R1,#0BH,FR11
			MOV BEATS,#70				
FR11:		CJNE R1,#0CH,FR12
			MOV BEATS,#72	
			MOV COUNT,#00H				
FR12:				
							
DOWNSX:	
			
			MOV R2,BEATS
      	MOV R1,#00H	
			MOV R3,#00D
      	MOV R4,#00D
      	MOV R5,#00D
      	MOV R6,#00D
      	CALL HEX2BCD		
			MOV VALU_1,R4	
			MOV VALU_2,R3
			CALL HEART_DISP			;Display Heart beats
			CALL MDELAY
			MOV A,VALU_1
			ADD A,#30H
			MOV R4,A
			CALL WRLCDDATA
			CALL MDELAY
			MOV A,VALU_2
			ADD A,#30H
			MOV R4,A
			CALL WRLCDDATA
			CALL MDELAY
			
			MOV A,VALU_1
			SWAP A
			ORL A,VALU_2
			MOV BEATS,A
			CALL DELAY

			
			CJNE A,#00H,RTY131
			CLR STATUS
			AJMP RTY25
RTY131:	MOV A,BEATS
			CLR C
			SUBB A,#80H	
			JNC DOWNS				;JMP IF ABNORMAL
			MOV A,BEATS
			CLR C
			SUBB A,#65H
			JC DOWNS					;JMP IF ABNORMAL
			CLR STATUS
			AJMP RTY25		
DOWNS:	SETB STATUS
		
RTY25:	MOV A,TEMPM
			CJNE A,#00H,RTY1S1
			CLR STATUS1
			AJMP RTY22
RTY1S1:	MOV A,TEMPM
			CLR C
			SUBB A,#40	
			JNC DOWNSS				;JMP IF ABNORMAL
			MOV A,TEMPM
			CLR C
			SUBB A,#27
			JC DOWNSS				;JMP IF ABNORMAL
			CLR STATUS1			
			AJMP RTY22
DOWNSS:	SETB STATUS1

RTY22:	JB STATUS,ON_BUZZ
			JB STATUS1,ON_BUZZ
			CLR BUZZER
			AJMP TOPPS
ON_BUZZ: SETB BUZZER
			AJMP TOPPS
			
TOPPS:	MOV A,#0DH
			CALL SEND_DATA
			CALL DEELAYS
			MOV A,VALUE_1
			CALL SEND_DATA
			CALL DEELAYS
			MOV A,VALUE_2
			CALL SEND_DATA
			CALL DEELAYS
			MOV A,VALUE_3
			CALL SEND_DATA
			CALL DEELAYS
			MOV A,#0EH
			CALL SEND_DATA
			CALL DEELAYS
			MOV A,VALU_1
			CALL SEND_DATA
			CALL DEELAYS
			MOV A,VALU_2
			CALL SEND_DATA
			CALL DEELAYS
			MOV A,VALU_2
			CALL SEND_DATA
			CALL DEELAYS
			AJMP TOPP			

;---------==========----------==========---------=========---------
;######################################################			
SEND_DATA:
			JNB ACC.0,FG1
			SETB DB0
			AJMP FG2
FG1:		CLR DB0
FG2:		JNB ACC.1,FG3
			SETB DB1
			AJMP FG4
FG3:		CLR DB1
FG4:		JNB ACC.2,FG5
			SETB DB2
			AJMP FG6
FG5:		CLR DB2
FG6:		JNB ACC.3,FG7
			SETB DB3
			AJMP FG8
FG7:		CLR DB3	
FG8:		RET						
;##########################################################
;		DISPLAY ROUTINES
;##########################################################
TITLES:
	MOV DPTR,#MSAG
	CALL LCD_MSG
	RET
MSAG:
	DB 1H,81H,'* BIOMEDICAL *',0C1H,'MONITORING SYS',00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~		
DISP_TEMP:
	MOV DPTR,#MSAG1
	CALL LCD_MSG
	RET
MSAG1:
	DB 1H,80H,'Temperature:+',00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~		
HEART_DISP:
	MOV DPTR,#MSAG2
	CALL LCD_MSG
	RET
MSAG2:
	DB 0C1H,'Heart Beat:',00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~	
DELAYSS:
	   MOV R0,#0BH
RV3: 	MOV R1,#0FFH
RV1:	MOV R2,#0FFH
RV2:	DJNZ R2,RV2
		DJNZ R1,RV1  
		DJNZ R0,RV3  
  		RET
;**************************************************
HEX2BCD: 
		MOV R3,#00D
      MOV R4,#00D

⌨️ 快捷键说明

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