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

📄 node_04.asm

📁 矿井中各节点路有通讯程序
💻 ASM
字号:
PROCESS_POINTER      EQU 34H
LED_MAP              EQU 35H
TIMER_COUNTER        EQU 36H
LOSS_NETWORK_COUNTER EQU 37H
BUF_1_WR             EQU 38H
BUF_1_RD             EQU 39H
BUF_2_WR             EQU 3AH
BUF_2_RD             EQU 3BH
REPEAT_COUNT_H       EQU 3CH
REPEAT_COUNT_M       EQU 3DH
REPEAT_COUNT_L       EQU 3EH
SENDING_BUF          EQU 3FH
BUF_2_WR_L           EQU 61H
BUF_1_WR_L           EQU 62H
DATA_LENGTH          EQU 63H
DATA_LENGTH_1        EQU 64H

ON_SENDING           BIT 00H
FIND_NETWORK         BIT 01H
RED   BIT  P1.2
BLUE  BIT  P1.3

ORG 0000H
LJMP 1000H

ORG 000BH
LJMP TTTT 

ORG 0023H
	PUSH PSW
	JB RI, REC
	CLR TI
	CLR ON_SENDING
	POP PSW
	RETI
REC: 	PUSH ACC
	PUSH DPH
	PUSH DPL

PROCESS_0:MOV A,PROCESS_POINTER
	CJNE A,#00H,PROCESS_1
	MOV A,SBUF
	CJNE A,#12H,PROCESS_0_1
	MOV PROCESS_POINTER,#01H
PROCESS_0_1:LJMP RETURN
	
PROCESS_1:CJNE A,#01H,PROCESS_2
	MOV A,SBUF
	CJNE A,#34H,PROCESS_1_1
	MOV PROCESS_POINTER,#02H
	LJMP RETURN
PROCESS_1_1:MOV PROCESS_POINTER,#00H
	LJMP RETURN

PROCESS_2:CJNE A,#02H,PROCESS_4
	MOV A,SBUF
PROCESS_2_1:CJNE A,#22H,PROCESS_2_2
	MOV BUF_1_WR_L,#00H
	MOV PROCESS_POINTER,#04H
	LJMP RETURN
PROCESS_2_2:CJNE A,#33H,PROCESS_2_3
	MOV PROCESS_POINTER,#05H
	LJMP RETURN
PROCESS_2_3:MOV PROCESS_POINTER,#00H
	LJMP RETURN

PROCESS_4:CJNE A,#04H,PROCESS_5
	MOV A,SBUF
	MOV DPH,BUF_2_WR
	MOV DPL,BUF_2_WR_L
	MOVX @DPTR,A
	MOV A,BUF_2_WR_L
	INC A
	CJNE A,#05H,PROCESS_4_1
	MOV BUF_2_WR_L,#00H
	MOV A,BUF_2_WR
	INC A
	CJNE A,#60H,PROCESS_4_2
	MOV BUF_2_WR,#40H
	MOV PROCESS_POINTER,#00H
	SJMP PROCESS_4_3
PROCESS_4_2:INC BUF_2_WR
	MOV PROCESS_POINTER,#00H
	SJMP PROCESS_4_3
PROCESS_4_1:MOV BUF_2_WR_L,A
PROCESS_4_3:LJMP RETURN

PROCESS_5:CJNE A,#05H,PROCESS_6
	MOV A,SBUF
	CJNE A,44H,PROCESS_5_1
	MOV PROCESS_POINTER,#06H
	LJMP RETURN
PROCESS_5_1:MOV PROCESS_POINTER,#08H
	LJMP RETURN

PROCESS_6:CJNE A,#06H,PROCESS_7
	MOV A,SBUF
	MOV DPH,BUF_1_WR
	MOV DPL,#00H
	MOVX @DPTR,A
	MOV DATA_LENGTH,A
	MOV BUF_1_WR_L,#01H
	MOV PROCESS_POINTER,#07H
	LJMP RETURN

PROCESS_7:CJNE A,#07H,PROCESS_8
	MOV DPH,BUF_1_WR
	MOV DPL,BUF_1_WR_L
	MOV A,SBUF
	MOVX @DPTR,A
	INC BUF_1_WR_L
	MOV A,DATA_LENGTH
	DEC A
	JNZ PROCESS_7_1
	MOV PROCESS_POINTER,#00H
	MOV BUF_1_WR_l,#00H
	MOV A,BUF_1_WR
	INC A
	CJNE A,#40H,PROCESS_7_2
	MOV A,#00H
PROCESS_7_2:MOV BUF_1_WR,A
	LJMP RETURN
PROCESS_7_1:MOV DATA_LENGTH,A
	LJMP RETURN

PROCESS_8:CJNE A,#08H,PROCESS_9
	MOV A,SBUF
	MOV DATA_LENGTH_1,A
	MOV PROCESS_POINTER,#09H
	LJMP RETURN

PROCESS_9:CJNE A,#09H,PROCESS_10
	MOV PROCESS_POINTER,#0AH
	DEC DATA_LENGTH_1
	MOV A,SBUF
	INC A
	CJNE A,44H,PROCESS_9_1
	SETB FIND_NETWORK
PROCESS_9_1:LJMP RETURN

PROCESS_10:CJNE A,#0AH,FAIL_TO_VERIFY
	MOV A,SBUF
	DEC DATA_LENGTH_1
	MOV A,#00H
	CJNE A,DATA_LENGTH_1,PROCESS_10_1
	MOV PROCESS_POINTER,#00H
PROCESS_10_1:LJMP RETURN

FAIL_TO_VERIFY: MOV PROCESS_POINTER,#00H
	LJMP RETURN

RETURN:	CLR RI
	POP DPL
	POP DPH
	POP ACC
	POP PSW
	RETI






ORG 1000H

START:  MOV PROCESS_POINTER,#00H
	MOV LED_MAP,#00H
	MOV TIMER_COUNTER,#04H
	MOV LOSS_NETWORK_COUNTER,#00H
	MOV BUF_1_WR,#00H
	MOV BUF_1_RD,#00H
	MOV BUF_2_WR,#40H
	MOV BUF_2_RD,#40H
	MOV REPEAT_COUNT_L,#00H
	MOV REPEAT_COUNT_M,#00H
	CLR ON_SENDING
	CLR FIND_NETWORK
	MOV 3FH,#12H
	MOV 40H,#34H
	MOV 41H,#33H
	
	LCALL READ_KEY_BOARD; READ NODE NUMBER AND DISTANCE
	MOV A,44H; WRITE DOWN DESTINATION ADDRESS 
	DEC A
	MOV 42H,A
	
	MOV SCON,#78H; mode1
    	MOV 0CBH,#0FFH ;BAUD - 9600 BPS
	MOV 0CAH,#0DCH
	MOV 0C8H,#30H  ;0C8H, 
	SETB 0CAH
	MOV IP,#00H
	MOV IE,#10H
	CLR RI
	
XBEE_INT:NOP;           INITIALIZING THE WIRELESS MODULE
	MOV R0,#08H;    GIVE A GUARD TIME 
	LCALL DELAY_125mS; 
	JB P1.4,$;  SEND +++ TO INTER CMD MODE
	MOV SBUF,#2BH
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#2BH
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#2BH
	JNB TI,$
	CLR TI
	MOV R0,#18H;    WAIT FOR OK RESPONCE 
	LCALL DELAY_125mS
	CLR RI
	MOV A,SBUF        

	JB P1.4,$;     CHANGE BAUD RATE TO 115200. SEND ATBD07<CR>
	MOV SBUF,#41H
	JNB TI,$
	JB P1.4,$
	CLR TI
	MOV SBUF,#54H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#42H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#44H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#30H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#37H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#0DH
	JNB TI,$
	CLR TI
	JNB RI,$;           WAIT FOR OK RESPONCE
	MOV A,SBUF
	CLR RI
	JNB RI,$
	MOV A,SBUF
	CLR RI	
	MOV A,SBUF
	JNB RI,$
	CLR RI
	MOV A,SBUF    ;     SET MY, SEND ATMYxx<CR>
	JB P1.4,$
	MOV SBUF,#41H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#54H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#4DH
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#59H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV A,44H
	LCALL ASCII_BYTE
	MOV A,R0
	MOV SBUF,A 	
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV A,R1 
	MOV SBUF,A
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#0DH
	JNB TI,$
	CLR TI
	JNB RI,$;               WAIT FOR OK RESPONCE
	MOV A,SBUF
	CLR RI
	JNB RI,$
	MOV A,SBUF
	CLR RI
	JNB RI,$
	MOV A,SBUF 
	CLR RI
 ;  CHANGE DESTINATION TO BROADCAST. SEND ATDH0<CR>
	JB P1.4,$
	MOV SBUF,#41H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#54H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#44H
	JB P1.4,$
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#48H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#30H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#0DH
	JNB TI,$
	CLR TI
	JNB RI,$;     WAIT FOR OK RESPONCE
	MOV A,SBUF
	CLR RI
	JNB RI,$
	MOV A,SBUF
	CLR RI
	JNB RI,$
	MOV A,SBUF 
	CLR RI
 	JB P1.4,$;     CHANGE DESTINATION TO BROADCAST. SEND ATDLFFFF<CR>
	MOV SBUF,#41H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#54H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#44H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#4CH
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#46H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#46H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#46H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#46H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#0DH
	JNB TI,$
	CLR TI
	JNB RI,$;     WAIT FOR OK RESPONCE
	MOV A,SBUF
	CLR RI
	JNB RI,$
	MOV A,SBUF
	CLR RI
	MOV A,SBUF
	JNB RI,$
	CLR RI
	MOV A,SBUF    ;     RETURN FROM COMMAND MODE, SEND ATCN<CR>
	JB P1.4,$
	MOV SBUF,#41H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#54H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#43H
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#4EH
	JNB TI,$
	CLR TI
	JB P1.4,$
	MOV SBUF,#0DH
	JNB TI,$
	CLR TI
	JNB RI,$;     WAIT FOR OK RESPONCE
	MOV A,SBUF
	CLR RI
	JNB RI,$
	MOV A,SBUF
	CLR RI
	JNB RI,$
	CLR RI
	MOV A,SBUF    
	
	MOV SCON,#78H; mode1
	MOV 0CBH,#0FFH ;BAUD - 115200 BPS
	MOV 0CAH,#0FDH
	MOV 0C8H,#30H  ;0C8H, 
	SETB 0CAH
	MOV IP,#00H
	MOV IE,#10H
	MOV   36H,#8
    SETB  ET0
    SETB  TR0
    SETB EA
	
MAIN:SETB P1.7
	MOV REPEAT_COUNT_H,#04H
MAIN_1:	MOV A,BUF_1_WR
 	CJNE A,BUF_1_RD,RELAY
	DEC REPEAT_COUNT_L
	MOV A,REPEAT_COUNT_L
	JNZ MAIN_1
	DEC REPEAT_COUNT_M
	MOV A,REPEAT_COUNT_M
	JNZ MAIN_1
	DEC REPEAT_COUNT_H
	MOV A,REPEAT_COUNT_H
	JNZ MAIN_1
	LJMP READ_SENSORS
RELAY:  MOV DPH,BUF_1_RD
	MOV DPL,#00H
	MOVX A,@DPTR
	INC A 
	MOV R0,A
	JB P1.4,$
	MOV SBUF,#12H
	SETB ON_SENDING
	JB ON_SENDING,$
	JB P1.4,$
	MOV SBUF,#34H
	SETB ON_SENDING
	JB ON_SENDING,$
	JB P1.4,$
	MOV SBUF,#33H
	SETB ON_SENDING
	JB ON_SENDING,$
	JB P1.4,$
	MOV A,44H
	DEC A 
	MOV SBUF,A 
	SETB ON_SENDING
	JB ON_SENDING,$	
	MOV DPL,#00H
RELAY_1:MOVX A,@DPTR
	JB P1.4,$
	MOV SBUF,A
	SETB ON_SENDING
	JB ON_SENDING,$
	INC DPL
	DJNZ R0,RELAY_1
	MOV R0,#00H
	DJNZ R0,$
	MOV A,BUF_1_RD
	INC A
	CJNE A,#40H,RELAY_2
	MOV A,#00H
RELAY_2:MOV BUF_1_RD,A	
	LJMP MAIN_1
	
	
	
READ_SENSORS:CLR P1.7; READ SENSORS PARAMATERS
	MOV 46H,00H
	MOV 47H,01H
	MOV 48H,02H
CHECH_GAS: NOP; SEE IF GAS INDEX OVER RANGE
	MOV A,LED_MAP
	ANL A,#0FBH
	MOV LED_MAP,A 
DISPLAY:NOP
	NOP
CHECK_BATT: NOP; CHECK THE BATTERIES VOLTAGE
	NOP
	MOV A,LED_MAP
	ANL A,#0FDH
	MOV LED_MAP,A
COMM_CHECK: JNB FIND_NETWORK,LOSS_1
	MOV A,LED_MAP
	ANL A,#0FEH
	MOV LED_MAP,A
	CLR FIND_NETWORK 
	MOV LOSS_NETWORK_COUNTER,#00H
	SJMP SEND_PACKET
LOSS_1:	MOV A,LOSS_NETWORK_COUNTER
	JNZ LOSS_2
	INC A
	MOV LOSS_NETWORK_COUNTER,A
	SJMP SEND_PACKET
LOSS_2:	MOV A,#01H
	ORL LED_MAP,A
SEND_PACKET:MOV A,BUF_2_RD
	MOV R3,BUF_2_WR
	CLR C
	SUBB A,R3 
	JNZ SEND_PACKET_1
	MOV  43H,#05H
	MOV R2,#00H
	SJMP SEND_PACKET_2
SEND_PACKET_1:MOV A,R3
	CLR C
 	SUBB A,BUF_2_RD
	JNC SEND_PACKET_3
	MOV A,#60H
	CLR C
	SUBB A,BUF_2_RD
	ADD A,R3
	CLR C
	SUBB A,#40H
SEND_PACKET_3:MOV R2,A
	MOV B,#05H
	MUL AB
	ADD A,#05H
	MOV 43H,A
SEND_PACKET_2:	MOV R0,#3FH
	MOV R1,#0AH
SEND_PACKET_4:MOV A,@R0
	JB P1.4,$
	MOV SBUF,A
	SETB ON_SENDING
	JB ON_SENDING,$
	INC R0
	DJNZ R1,SEND_PACKET_4
	MOV A,R2
	JNZ SEND_PACKET_5
	LJMP SEND_PACKET_6
SEND_PACKET_5:MOV R1,#05H
	MOV DPH,BUF_2_RD
	MOV DPL,#00H
SEND_PACKET_7:MOVX A,@DPTR
	JB P1.4,$
	MOV SBUF,A
	INC DPL 
	SETB ON_SENDING
	JB ON_SENDING,$
	DJNZ R1,SEND_PACKET_7
	MOV A,BUF_2_RD
	INC A
	CJNE A,#60H,SEND_PACKET_8
	MOV A,#40H
SEND_PACKET_8:MOV BUF_2_RD,A
	DJNZ R2,SEND_PACKET_5
SEND_PACKET_6:MOV R0,#00H
	DJNZ R0,$
	LJMP MAIN

        

READ_KEY_BOARD: MOV 44H,#04H;           SET THE SHORT ADDRESS OF THE NODE 
	MOV 45H,#32H;           SET THE DISTANCE
	RET
	
TTTT:    PUSH  PSW
         PUSH  ACC
         CLR   TR0
         DEC   36H
         MOV   A, 36H
         JZ    XIAN
         SETB  TR0
         POP   ACC
         POP   PSW
         RETI
XIAN:    MOV   A,  35H
         JNB    ACC.2, BATTER
         CLR   BLUE
         MOV   36H, #8
         SETB  RED
         SETB  TR0
         POP   ACC
         POP   PSW
         RETI
BATTER:  JNB    ACC.1, CMUNI
         CLR   BLUE
         CPL   RED
         MOV   36H, #8
         SETB  TR0
         POP   ACC
         POP   PSW
         RETI
CMUNI:   JNB    ACC.0, OUT
         CLR   RED
         CPL   BLUE
         MOV   36H, #8
         SETB  TR0
         POP   ACC
         POP   PSW
         RETI
OUT:     CLR   RED
         SETB  BLUE
         MOV   36H, #8
         SETB  TR0
         POP   ACC
         POP   PSW
         RETI


DELAY_125mS: NOP
DELAY2:	MOV R2,#00H
DELAY1:	MOV R1,#00H
	DJNZ R1,$
	DJNZ R2,DELAY1
	DJNZ R0,DELAY2
	RET

ASCII_BYTE:CLR C
	MOV B,#10
	DIV AB
	ADD A,#30H
	MOV R0,A
	MOV A,B
	ADD A,#30H
	MOV R1,A
	RET
END

⌨️ 快捷键说明

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