MOV R2,A
ACALL DSUM ;求Pi+Pp高十六位数
MOV 4DH,R7 MOV 4CH,
R6 ;保存和数高十六位数 MOV R5,39H MOV R4,3AH MOV R3,3DH MOV R3,3EH
ACALL DSOM ei+ei-2
MOV R5,R7 MOV R4,R6 MOV R3,3BH MOV R2,3CH ACALL R2,3CH
ACALL DSUM ei+ei-2-ei-1 MOV R5,R7 MOV R4,R6 MOV R3,3BH MOV R2,3CH ACALL CPL1
ACALL DSUM ;求Pi+ Pp+Pd
MOV R3,R7
;计算 ;计算 MOV R2,R6 MOV R5,2FH MOV R4,30H
ACALL DSUM ;求出Ui
MOV 2FH,
R7 MOV MOV 3DH, 3BH MOV 3EH ,3CH
MOV 3BH ,39H MOV 3CH , 3AH RET
6、温度控制子程序清单:
TC: MOV A, 2FH SUBB A, #8000H JNC KAI AJMP
KAI1:JB P1.0,KAI2 SETB P1.0 RET
KAI2:JB P1.1,KAI3 SETB P1.1 RET
KAI3:SETB P1.2 RET
GUAN3:JNB P1.2,GAUN2
,R6
;Ui→Ur-1 ;ei-1→ei-2
;ei-1→ei-1 30HCLR P1.2 RET
GUAN2:JNB P1.1,GUAN1 CLR P1.1 RET
GUAN1:CLR P1.0 RET
7、温度给定子程序清单:
TIN: MOV A, P1 ;读入拨盘值 ANL A,#0F0H ;屏蔽低8位
SWAP A, ;给定值交换到低半子节 JZ ERR ;给定值为另转到 CJNE A,#04H,BP1 ;给定值≥04H转ERR BP1: JNC ERR
SETB EA ;给定值合法,允许系统中断 CJNE A,#01H,BP2 ;(A)≠01转BP2
MOV 51H,#50H ;(A)=01将室温设定值50H 51H RET
BP2: CJNE A,#03H,BP3 ;(A)≠02转到BP3
MOV 51H,#0A0H ;(A)=02,将30℃设定值A0H 51H RET
BP3: CJNE A,#03H,BP4 ;(A)≠03转BP4
MOV 51H,#0C8H ;(A)=03,将设定值C8H51H
BP4: RET
ERR: MOV 5FH,#0AH ;显示“ГГ、Г” MOV 5EH, #0AH MOV 5DH, #OAH
ACALL SDIR
ANL P1, #F8H ;关闭两个电炉 CLR EA RET
8、温度显示子程序清单:
DIR: SETB P3.3 ;P3.3=1,允许TXD引脚同步移位脉冲输出 MOV R7, #08H ;送入的段码个数计数器 MOV R0, #7FH ;7FH-78H为显示数据缓冲区 DL0: MOV A,@R0 ;取出要显示的数送A ADD A, #0DH ;加上偏移量
MOVC A, 0DH ;查段码表SEGMENT,取出段码 MOV SBUF, A ;将段码送SBUF
DL1: JNB TI,DL1 ;输出段码,查询TI状态,1B的段码输出 CLR TI ;1B的段码输出完,清TI标志 DEC R0 ;指向下一个显示数据单元
DJNZ R7,DL0 ;段码个数计数器R7是否为0,如不为0,继续送段码
CLR P3.3 ;8个段码输出完毕,关闭显示器输出返回 RET ;返回
SEGMENT: DB 0C0H,0F9H,0A4H,0B0H,99H ;共阳极段码表,0,1,2,3,4
DB 92H,82H,0F8H,80H,90H ;5,6,7,8,9 DB 88H,83H,0C6H,0A1H,86H ;A,B,C,D,E DB 8EH,0BFH,0FFH,0FFH,0DEH 9、温度转换子程序清单:
ADCBCD: MOV A,50H
ANL A,#03H ;温度值小数部分
相关推荐: