FOUR EQU 45H
SUB EQU 46H ;减去高低位后的值 JWHOLD EQU 47H ;保存进位值
;赋初值//////////////////////////////////////////// MOV ADDHOLD,#00H MOV ADL,#00H MOV ADH,#00H MOV DISL,#00H MOV DISH,#00H MOV ADDJW,#00H MOV ADDFLAG,#00H MOV ENDFLAG,#00H MOV ADDTOTAL,#00H MOV ADH1,#00H MOV ADL1,#00H 33
MOV ADHOLDH,#00H MOV FOUR,#00H MOV ADHOLDL,#00H MOV JWHOLD,#00H MOV SUB,#00H
;//////////////////////////////////////////////////
MAIN1: ACALL DELAY ACALL DELAY ACALL AD ;取AD值 MAIN3: ACALL CAIFEN ACALL DISPLAY ;显示 ACALL DELAY ACALL DELAY
;算最大值和最小值////////////////////////////////// ACALL ADDH ACALL ADDL
;////////////////////////////////////////////////// ;加和值显示/////////////////////////////////////// ACALL ADD1 ACALL DISPLAY
;////////////////////////////////////////////////// ;判是否加到了6次/////////////////////////////////// INC ADDFLAG MOV A,ADDFLAG CJNE A,#06H,MAIN2
;///////////////////////////////////////////////// ACALL DELAY
34
ACALL DELAY ACALL DELAY ACALL DELAY ACALL DELAY ACALL DELAY
ACALL CAIFEN1 ;拆最小值 ACALL CAIFEN2 ;拆最大值 ACALL DISPLAY ;显示最大值最小值 LOOP: AJMP LOOP
;判有没有来新AD值,没有显示以前,有显示现在的/////// MAIN2: ACALL DELAY ACALL AD MOV A,ADNUMBER CJNE A,ADDTOTAL,MAIN3 AJMP MAIN2
;////////////////////////////////////////////////// ;AD转换//////////////////////////////////////////// AD: MOV DPTR,#7F00H ;指向转换地址 MOV A,#03H ;指向转换口 MOVX @DPTR,A ;转换
MOV R1,#64H
D1: DJNZ R1,D1 ;等100微秒转换完 MOVX A,@DPTR ;转换后的值给A MOV ADNUMBER,A ;转换的值给30H RET
;////////////////////////////////////////////////// ;拆分AD值程序////////////////////////////////////// 35 CAIFEN: MOV A,ADNUMBER ANL A,#0FH MOV ADL,A ;取低位 MOV A,ADNUMBER ANL A,#0F0H SWAP A
MOV ADH,A ;取高位 MOV DISL,ADL
MOV DISH,ADH ;给显示值 RET
;////////////////////////////////////////////////// ;显示////////////////////////////////////////////// DISPLAY:
MOV A,DISL MOV DPTR,#SETTAB MOVC A,@A+DPTR MOV SBUF,A D3: JNB TI,D3 CLR TI MOV A,DISH MOV DPTR,#SETTAB MOVC A,@A+DPTR MOV SBUF,A D4: JNB TI,D4 CLR TI MOV A,ADDJW MOV DPTR,#SETTAB 36
MOVC A,@A+DPTR MOV SBUF,A D5: JNB TI,D5 CLR TI MOV A,FOUR MOV DPTR,#SETTAB MOVC A,@A+DPTR