📄 rs485.asm
字号:
;=================IN THE NAME OF ALLAH===============
;GET TEMP & RPM AND COMPARE IT GIVEN VALUE ALSO SEND IT RS485
;
;====================================================
RS BIT P1.1
EN BIT P1.0
BUZZ BIT P2.7
RLY1 BIT P1.7
RLY2 BIT P1.6
RLY3 BIT P1.5
RLY4 BIT P1.4
SW1 BIT P2.3
SW2 BIT P2.2
SW3 BIT P2.0
SW4 BIT P2.1
TEM_S BIT P3.2
RPM_S BIT P3.3
SENB BIT P3.4
SMOKE BIT P3.5
;===================================================
TC0_F BIT 08H
FLG1 BIT 00H
FLG2 BIT 01H
FLG3 BIT 02H
;===================================================
;===================BYTE ASSIGNMENTS================
XRLOW EQU 30H
XRHIGH EQU 31H
XRVLOW EQU 32H
XRVHIGH EQU 33H
BCD0 EQU 34H
BCD1 EQU 35H
BCD2 EQU 36H
BCD3 EQU 37H
BCD4 EQU 38H
TC0 EQU 39H
RPM EQU 03AH
RPMLOW EQU 03BH
RPMHIGH EQU 03CH
CNT EQU 03DH
TVAL EQU 03EH
RBCD0 EQU 40H
RBCD1 EQU 41H
RBCD2 EQU 42H
RBCD3 EQU 43H
TBCD1 EQU 45H
TBCD2 EQU 46H
TBCD3 EQU 47H
CTBCD1 EQU 48H
CTBCD2 EQU 49H
CTBCD3 EQU 4AH
CRBCD0 EQU 4BH
CRBCD1 EQU 4CH
CRBCD2 EQU 4DH
CRBCD3 EQU 4EH
;===================================================
DATAPRT EQU 80H
;===================================================
ORG 00H
JMP INI
ORG 0003H
LJMP EX0ISR
ORG 000BH
LJMP T0ISR
ORG 0013H
LJMP EX1ISR
ORG 30H
;==============LCD INITILALIZATION==================
INI:
MOV R2,#50H
MOV R3,#0FFH
DJNZ R3,$
DJNZ R2,$-4
CLR RS
SETB EN
MOV DATAPRT,#01H
CALL CLOCK
MOV DATAPRT,#02H
CALL CLOCK
MOV DATAPRT,#00111100B
CALL CLOCK
MOV DATAPRT,#00001100B
CALL CLOCK
;===================================================
CLR BUZZ
MOV RPM,#00H
;===================================================
MOV TMOD,#21H
MOV IE,#087H
SETB IT0
SETB IT1
MOV TH0,#HIGH(-50000)
MOV TL0,#LOW(-50000)
MOV TC0,#20
SETB TR0
MOV SCON,#50H
MOV TH1,#0FDH
SETB TR1
MOV TVAL,#00H
MOV RBCD0,#00H
MOV RBCD1,#00H
MOV RBCD2,#00H
MOV RBCD3,#00H
MOV TBCD1,#00H
MOV TBCD2,#00H
MOV TBCD3,#00H
MOV CTBCD1,#00H
MOV CTBCD2,#00H
MOV CTBCD3,#00H
MOV CRBCD0,#00H
MOV CRBCD1,#00H
MOV CRBCD2,#00H
MOV CRBCD3,#00H
;==================MAIN PROGRAM=====================
MAIN:
CALL INPUT_R
CALL CDIS
CALL LINE1
CALL LINE2
ABC:
SETB TR0
JNB TC0_F,$
CLR TC0_F
MOV A,XRVLOW
MOV RPMLOW,A
MOV A,XRVHIGH
MOV RPMHIGH,A
CALL BCD_R
MOV CTBCD1,BCD1
MOV CTBCD2,BCD2
MOV CTBCD3,BCD3
CALL LINE3
CALL COMP1
MOV A,RPM
MOV B,#60
MUL AB
MOV RPMLOW,A
MOV RPMHIGH,B
CALL BCD_R
MOV CRBCD0,BCD0
MOV CRBCD1,BCD1
MOV CRBCD2,BCD2
MOV CRBCD3,BCD3
CALL LINE4
CALL COMP2
CALL DESC
CALL SER
MOV RPM,#00H
SJMP ABC
;====================INPUT ROUTINE=================
INPUT_R:
CALL INPMSG1
A3:
CALL OUTMSG1
JB SW1,A1
JNB SW1,$
INC TVAL
A1:
JB SW2,A2
JNB SW2,$
MOV A,TVAL
ADD A,#10
MOV TVAL,A
A2:
JB SW3,A3
JNB SW3,$
CALL INPMSG2
;================================================
MOV R0,#40H
B4:
CALL OUTMSG2
MOV A,@R0
JB SW1,B1
JNB SW1,$
CJNE A,#09,B6
MOV A,#00H
SJMP B7
B6:
INC A
B7:
MOV @R0,A
B1:
JB SW2,B2
JNB SW2,$
CJNE A,#00,B8
MOV A,#09H
SJMP B9
B8:
DEC A
B9:
MOV @R0,A
B2:
JB SW3,B3
JNB SW3,$
MOV A,R0
CJNE A,#44H,B5
MOV R0,#40H
SJMP B3
B5:
INC R0
B3:
JB SW4,B4
JNB SW4,$
RET
;=======================================================
;============COMPARASION ROUITNE 1===================
COMP1:
MOV A,TBCD1
CJNE A,BCD3,K1
MOV A,TBCD2
CJNE A,BCD2,K1
MOV A,TBCD3
CJNE A,BCD1,K1
CLR FLG1
SETB RLY1
RET
K1:
JC K2
CLR FLG1
SETB RLY1
RET
K2:
SETB FLG1
CLR RLY1
RET
;====================================================
;============COMPARASION ROUITNE 2===================
COMP2:
MOV A,RBCD3
CJNE A,BCD3,K3
MOV A,RBCD2
CJNE A,BCD2,K3
MOV A,RBCD1
CJNE A,BCD1,K3
MOV A,RBCD0
CJNE A,BCD0,K3
CLR FLG2
SETB RLY2
RET
K3:
JC K4
CLR FLG2
SETB RLY2
RET
K4:
SETB FLG2
CLR RLY2
RET
;====================================================
;===============DESCISION ROUITNE====================
DESC:
MOV C,P3.5
MOV FLG3,C
CPL C
MOV RLY3,C
MOV R0,#03
MOV CNT,#00H
MOV A,20H
CLR C
K6:
RRC A
JC K5
DJNZ R0,K6
SJMP K7
K5:
INC CNT
DJNZ R0,K6
K7:
MOV A,CNT
CJNE A,#02,K8
SETB BUZZ
RET
K8:
JC K9
SETB BUZZ
RET
K9:
CLR BUZZ
RET
;===================SERIAL ROUTINE=================
SER:
JNB RI,C_1
MOV A,SBUF
CLR RI
CJNE A,#'B',C_1
SJMP C_2
C_1:
RET
C_2:
SETB SENB
MOV A,TBCD1
ORL A,#30H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,TBCD2
ORL A,#30H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,TBCD3
ORL A,#30H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,RBCD3
ORL A,#30H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,RBCD2
ORL A,#30H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,RBCD1
ORL A,#30H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,RBCD0
ORL A,#30H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,CTBCD3
ORL A,#30H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,CTBCD2
ORL A,#30H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,CTBCD1
ORL A,#30H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,CRBCD3
ORL A,#30H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,CRBCD2
ORL A,#30H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,CRBCD1
ORL A,#30H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,CRBCD0
ORL A,#30H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,20H
MOV SBUF,A
JNB TI,$
CLR TI
CLR SENB
RET
;==============EX1 INTERUPT ROUTINE=================
EX0ISR:
PUSH ACC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -