?? wendudongzhi.txt
字號:
;閉環溫度控制程序
;第九組
;參數定義
DA_ADDR EQU 0BFFFH
AD_ADDR EQU 0D000H
DP_ADDR1 EQU 0E000H
DP_ADDR2 EQU 0E100H
DP_ADDR3 EQU 0E200H
DP_ADDR4 EQU 0E300H
KEY_READ1 EQU 0e400H
KEY_READ2 EQU 0e500H
KEY_READ3 EQU 0e600H
KEY_READ4 EQU 0e700H
DP_L EQU 60H
DP_H EQU 61H
LR_H EQU 63H
LR_L EQU 65H
L_BUF EQU 30H
H_BUF EQU 31H
;程序初始化
START: ;清除顯示;
MOV A,#0FFH
MOV DPTR,#DP_ADDR1
MOVX @DPTR,A
MOV DPTR,#DP_ADDR2
MOVX @DPTR,A
MOV DPTR,#DP_ADDR3
MOVX @DPTR,A
MOV DPTR,#DP_ADDR4
MOVX @DPTR,A
MOV A,#00H
;鍵盤
MOV R4,#00H
MOV R4,#1
MOV A,#0FFH
MOV DPTR,#DP_ADDR3
MOVX @DPTR,A
MOV DPTR,#DP_ADDR4
MOVX @DPTR,A
JP2:
;鍵盤讀取
JPDQ1: MOV R7,#-1
INC R7
MOV DPTR,#KEY_READ1
MOVX A,@DPTR
ORL A,#0E0H
CPL A
JZ JPDQ2
MOV R5,#5
MOV R6,#-1
JPDQ1_1: INC R6
RRC A
JC LP1
DJNZ R5,JPDQ1_1
JMP JPDQ2
LP1: CALL JPCL
CALL DISJP
CALL DELAY2
JMP JP2
JPDQ2: INC R7
MOV DPTR,#KEY_READ2
MOVX A,@DPTR
ORL A,#0E0H
CPL A
JZ JPDQ3
MOV R5,#5
MOV R6,#-1
JPDQ2_2: INC R6
RRC A
JC LP2
DJNZ R5,JPDQ2_2
JMP JPDQ3
LP2: CALL JPCL
CALL DISJP
CALL DELAY2
JMP JP2
JPDQ3: INC R7
MOV DPTR,#KEY_READ3
MOVX A,@DPTR
ORL A,#0E0H
CPL A
JZ JPDQ4
MOV R5,#5
MOV R6,#-1
JPDQ3_1: INC R6
RRC A
JC LP3
DJNZ R5,JPDQ3_1
JMP JPDQ4
LP3: CJNE R6,#1,LP3_1
MOV A,#0C0H
MOV DPTR,#DP_ADDR3
MOVX @DPTR,A
MOV DPTR,#DP_ADDR4
MOVX @DPTR,A
MOV R4,#1
JMP JP2
LP3_1: JMP QD
JPDQ4:
JMP JP2
JPCL: ;鍵值處理
MOV A,#00H
CJNE R7,#1,JPCL_1
MOV A,#5
JPCL_1: ADD A,R6
MOV R6,A
RET
DISJP: ;鍵盤顯示
MOV A,R6
MOV DPTR,#TAB
MOVC A,@A+DPTR
CJNE R4,#1,DISJP1
MOV DPTR,#DP_ADDR3
MOVX @DPTR,A
DEC R4
MOV H_BUF,R6
RET
DISJP1:
MOV DPTR,#DP_ADDR4
MOVX @DPTR,A
MOV R4,#1
MOV L_BUF,R6
RET
DELAY2: ;鍵盤顯示延遲程序
MOV R5,#00H
D2: MOV R6,#0H
DJNZ R6,$
DJNZ R5,D2
RET
QD: MOV A,H_BUF
MOV LR_H,A
MOV A,L_BUF
MOV LR_L,A
MAIN:
;溫度數據采集
;CW:
MOV DPTR,#AD_ADDR
MOVX @DPTR,A
CALL DELAY1
MOVX A,@DPTR
;溫度數值計算;
MOV B,#100
MUL AB
MOV A,B
;二進制到十進制轉換;
CALL BCD
;溫度數值顯示;
CALL DISCW
;延時等待;
CALL DELAY1
CALL DELAY1
CALL DELAY1
CALL DELAY1
CALL DELAY1
CALL DELAY1
CALL DELAY1
CALL DELAY1
CALL DELAY1
CALL DELAY1
CALL CORE
JMP MAIN
;RET
CORE: ;啟動閉環控制
CLR A
CLR C
MOV A,LR_H
CJNE A,DP_H,CORE1
CLR A
CLR C
MOV A,LR_L
CJNE A,DP_L,CORE2
MOV A,85H
JMP LPDA
CORE1: JC COLD1 ;設定溫度高位低
MOV R1,A
MOV A,#0FFH
JMP LPDA
CORE2: JC COLD2 ;設定溫度低位低
MOV R1,A
MOV A,#0E0H
JMP LPDA
COLD1: MOV R1,A
MOV A,#00H
JMP LPDA
COLD2: MOV R1,A
MOV A,#20H
JMP LPDA
LPDA: MOV DPTR,#DA_ADDR
MOVX @DPTR,A
CALL DELAY3
RET
DELAY3: MOV R5,#0FH
D3: MOV R6,#0FH
DJNZ R6,$
DJNZ R5,D3
RET
BCD: ;二進制到十進制轉換
MOV B,#10
DIV AB
MOV DP_H,A
MOV DP_L,B
RET
DISCW: ;采集溫度數值顯示
MOV A,DP_H
;個位顯示數值轉換為段碼數據:
CALL DECODE
;個位段碼數據;
MOV DPTR,#DP_ADDR1
MOVX @DPTR,A
MOV A,DP_L
;十位顯示數值轉換為段碼數據:
CALL DECODE
;送十位段碼數據;
MOV DPTR,#DP_ADDR2
MOVX @DPTR,A
MOV A,#00H
RET
DECODE: ; 換碼程序;
MOV DPTR,#TAB
MOVC A,@A+DPTR
RET
DELAY1: ;測溫顯示延時程序;
MOV R5,#80H
D1: MOV R6,#0H
DJNZ R6,$
DJNZ R5,D1
RET
TAB: ;換碼數據表;
DB 0C0H,0F9H,0A4H,0B0H,099H
DB 092H,082H,0F8H,080H,090H
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -