?? node_03.asm
字號(hào):
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,#03H; 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
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -