为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

温度

2010-07-13 13页 doc 74KB 27阅读

用户头像

is_194889

暂无简介

举报
温度 NENG1 BIT P1.7;1为正常数字键,0为功能键 FLAG0 BIT 30H ;标志位是26H FLAG1 BIT 31H FLAG2 BIT 32H FLAG3 BIT 33H FLAG4 BIT 34H FLAG5 BIT 35H FLAG6 BIT 36H FLAG7 BIT 37H H_TEMP EQU 38H ;温度上限 ...
温度
NENG1 BIT P1.7;1为正常数字键,0为功能键 FLAG0 BIT 30H ;标志位是26H FLAG1 BIT 31H FLAG2 BIT 32H FLAG3 BIT 33H FLAG4 BIT 34H FLAG5 BIT 35H FLAG6 BIT 36H FLAG7 BIT 37H H_TEMP EQU 38H ;温度上限 L_TEMP EQU 39H ;温度下限 H_SHZ EQU 3AH ;设置模拟温度上限 L_SHZ EQU 3BH ;设置温度下限 DH_SHZ EQU 3CH ;设置数字温度上限 DL_SHZ EQU 3EH ;设置温度下限 ORG 0000h AJMP MAIN ORG 0003H LJMP INT11 ;外部中断0 ORG 0013H LJMP INT22 ;外部中断1 MAIN: MOV TMOD,#11H ;定时器用方式1 SETB EA ;开中断 SETB EX0 ;外部中断0 SETB EX1 ;外部中断1 SETB IT0 ;电平触发 CLR IT1 ;边沿触发 CLR ET0 CLR ET1 CLR TF1 ;溢出标志位 CLR TF0 MOV R6,#00H MOV R5,#00H MOV TL1,#0B0H MOV TH1,#3CH MOV TL0,#0B0H MOV TH0,#3CH ;(65536-15536)\(6000000\12)=0.1s即100ms MOV L_SHZ,#10 MOV H_SHZ,#50 MOV DH_SHZ,#125 MOV DL_SHZ,#25 MWE: JNB NENG1,MWE1 LCALL SHEZHI;高电平进入设置 MWE1: MOV R0,#00H ;低电平正常显示 MOV 47H,#50H MOV 44H,47H SETB P1.6 LCALL AD ;调用AD转换,所有温度值存储在50-7F的存储空间中 MOV R0,#00H MOV 47H,#50H MOV 44H,47H AGA: LCALL BAOJING ;设置26H标志位,1为 超范围,0为正常 MOV A,26H JZ BT ABC: LCALL BJD LCALL AD JNB P3.7,ABC AJMP AGA BT: MOV 47H,#50H NET: SETB P3.7 ACALL DISP INC R0 MOV A,47H ADD A,#06H MOV 47H,A ACALL KINP JB PSW.5,WUJ ;无键不处理键值 AJMP DISP2 WUJ: CJNE R0,#08H,NET ;ACALL DELY6 AJMP MWE SJMP $ ;A/D zhunhuan AD: MOV 3FH,R0 PUSH 3FH MOV DPTR,#0FFFEH MOV R1,#50H ;R1要显示的温度值 MOV A,#00H ;a和R2是通道号 MOV R2,#00H MOV R0,#48H ;R0是转化之后的数字量 LOP1: MOV A,R2 PUSH ACC MOVX @DPTR,A JNB P3.0,$ MOVX A,@DPTR MOV @R0,A INC R0 MOV B,#04H MUL AB ACALL CONVERT ACALL SEP MOV @R1,30H INC R1 MOV @R1,31H INC R1 MOV @R1,32H INC R1 MOV @R1,33H INC R1 MOV @R1,34H INC R1 MOV @R1,35H INC R1 POP ACC MOV R2,A INC R2 MOV A,R2 CJNE R2,#08H,LOP1 POP 3FH MOV R0,3FH RET CONVERT: PUSH PSW SETB PSW.4 ;设置当前寄存器 CLR PSW.3 MOV R6,B ;R6(高位)R7(低位) MOV R7,A CLR A MOV R3,A ;清零, R3(最高位)R4(高位)R5(低位) MOV R4,A MOV R5,A MOV R2,#10H ;转换双字节十六进制整数 H_B: MOV A,R7 ;从高端移出待转换数的一位到CY中 RLC A MOV R7,A MOV A,R6 RLC A MOV R6,A MOV A,R5 ;BCD码带进位自身相加,相当于乘2 ADDC A,R5 DA A ;十进制调整 MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A MOV A,R3 ADDC A,R3 MOV R3,A ;双字节十六进制数的万位数不超过6,不用调整 DJNZ R2,H_B MOV 20H,R4 MOV 21H,R5 POP PSW ;处理完16bit RET SEP: MOV A,R2 MOV B,#10H DIV AB MOV 30H,B MOV A,20H MOV B,#10H DIV AB MOV 35H,A MOV 34H,B MOV A,21H MOV B,#10H DIV AB MOV 33H,A MOV 32H,B MOV 31H,#0CH RET ;显示子程序 DISP: SETB TR1 XUN1: ACALL DISP1 JNB TF1,XUN1 INC R6 CLR TF1 CJNE R6,#10,XUN1 MOV R6,#0 RET DISP1:MOV R1,47H ;显示缓冲首址 MOV R2,#01H MOV A,47H ADD A,#03H MOV 46H,A ;位控初始码(先亮最低位) LOOP:MOV A,#0FFH ;共阳 灭码???????????? MOV DPTR,#0FFDCH MOVX @DPTR,A MOV A,R2 ;送位控信号 MOV DPTR,#0FFDDH MOVX @DPTR,A MOV A,@R1 PUSH ACC MOV A,R1 CJNE A,46H,WUD AJMP DIAN ;从显示缓冲中取数 WUD: MOV DPTR,#TAB1 AJMP CHU DIAN: MOV DPTR,#TAB CHU: POP ACC MOVC A,@A+DPTR ;查出字形代码 MOV DPTR,#0FFDCH MOVX @DPTR,A ;送显示字符段代码 ACALL DY1MS ;稳定显示信息 INC R1 ;取下一个数 MOV A,R2 JB ACC.5,EXIT2 ;判断是否送到最高位? RL A MOV R2,A ;得到下一个位控信号 AJMP LOOP EXIT2: RET ;延时子程序 DY1MS:MOV R7,#0FFH DJNZ R7,$ RET TAB:DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H,08H,03H,46H,21H,06H,0EH;0,1, 2,3,4,5,6,7,8,9,A,B,C,D,E,F TAB1:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH DISP2:;PUSH 47H MOV A,45H MOV B,#08H ;有键,分离键码 DIV AB MOV 40H,B INC 40H MOV B,#04H MUL AB ADD A,40H MOV 41H,A DEC A MOV B,#06H MUL AB ADD A,44H MOV 47H,A HUAN: JNB P1.6,DNE ACALL DISP1 ACALL AD ACALL KINP JB PSW.5,WUJ1 AJMP DISP2 WUJ1: AJMP HUAN DNE: LJMP MWE ;扫描键子程序 KINP:LCALL KAP JNZ KP1 ;有键 SETB PSW.5 ;置无键标志 RET KP1:LCALL DELY ;去抖 LCALL KAP ;再次扫描键盘 JNZ KP2 ;转识键码程序 SETB PSW.5 ;置无键标志 RET KP2:CLR PSW.5 ;置有键操作标志 MOV R2,#0FEH ;逐列扫描初始值,第一列 MOV R4,#00H ;0列加数 ,记录列 KP4:MOV DPTR,#0FFDDH MOV A,R2 MOVX @DPTR,A ;送列扫描信号 MOV DPTR,#0FFDEH MOVX A,@DPTR ;回读行信号 JB ACC.0,L3 ;不是第一行,转第二行 MOV A,#00H ;是第一行吗=0 AJMP KP5 L3:JB ACC.1,NEXT ;不是第二行,转下一列 MOV A,#08H ;是第二行,行码=24 KP5:ADD A,R4 MOV 45H,A ;对应的行码+对应的列码=键码 PUSH ACC ;保护已经得到的键码 KP3:LCALL DELY LCALL KAP ;继续扫描 JNZ KP3 ;A值不等于0,示手未松开! POP ACC ;A值等于0,手已经松开,弹回键码! RET NEXT:INC R4 ;下一列列码加1 MOV A,R2 JNB ACC.4,KINP ;列到最后列了吗? RL A ;下一列置0 MOV R2,A ;下一列 AJMP KP4 ;扫描下一列 ;全扫描子程序 KAP:MOV A,#0F0H ;全扫描字(列) MOV DPTR,#0FFDDH MOVX @DPTR,A ;送全扫描字 MOV DPTR,#0FFDEH MOVX A,@DPTR ;回读行信息 CPL A ANL A,#03H ;得到A值,=0,无键;≠0,有键 RET ;去抖子程序 DELY:MOV R6,#14H ;去抖! DL:MOV R7,#0FFH DJNZ R7,$ DJNZ R6,DL RET ;BAOJING BAOJING:MOV H_TEMP,DH_SHZ MOV L_TEMP,DL_SHZ CLR FLAG0 CLR FLAG1 CLR FLAG2 CLR FLAG3 CLR FLAG4 CLR FLAG5 CLR FLAG6 CLR FLAG7 TONG0: MOV A,48H SUBB A,H_TEMP JNC NEXT1 NEXT2: MOV A,48H SUBB A,L_TEMP JC NEXT1 JNC TONG1 NEXT1: SETB FLAG0 TONG1: MOV A,49H SUBB A,H_TEMP JNC NEXT3 NEXT4: MOV A,49H SUBB A,L_TEMP JC NEXT3 JNC TONG2 NEXT3:SETB FLAG1 TONG2: MOV A,4AH SUBB A,H_TEMP JNC NEXT5 NEXT6: MOV A,4AH SUBB A,L_TEMP JC NEXT5 JNC TONG3 NEXT5:SETB FLAG2 TONG3: MOV A,4BH SUBB A,H_TEMP JNC NEXT7 NEXT8: MOV A,4BH SUBB A,L_TEMP JC NEXT7 JNC TONG4 NEXT7:SETB FLAG3 TONG4: MOV A,4CH SUBB A,H_TEMP JNC NEXT9 NEXT10: MOV A,4CH SUBB A,L_TEMP JC NEXT9 JNC TONG5 NEXT9:SETB FLAG4 TONG5: MOV A,4DH SUBB A,H_TEMP JNC NEXT11 NEXT12: MOV A,4DH SUBB A,L_TEMP JC NEXT11 JNC TONG6 NEXT11:SETB FLAG5 TONG6: MOV A,4EH SUBB A,H_TEMP JNC NEXT13 NEXT14: MOV A,4EH SUBB A,L_TEMP JC NEXT13 JNC TONG7 NEXT13:SETB FLAG6 TONG7: MOV A,4FH SUBB A,H_TEMP JNC NEXT15 NEXT16: MOV A,4FH SUBB A,L_TEMP JC NEXT15 JNC EXT7 NEXT15:SETB FLAG7 EXT7: RET DISP3: SETB TR0 XUN3: ACALL DISP1 JNB TF0,XUN3 INC R5 CLR TF0 CJNE R5,#3,XUN3 MOV R5,#0 RET BJD: CLR P3.7 CLR C MOV C ,FLAG0 MOV 47H,#50H JNC LAST0 ACALL DISP3 ACALL DELY6 LAST0:MOV C, FLAG1 MOV 47H,#56H JNC LAST1 ACALL DISP3 ACALL DELY6 LAST1:MOV C,FLAG2 MOV 47H,#5CH JNC LAST2 ACALL DISP3 ACALL DELY6 LAST2:MOV C,FLAG3 MOV 47H,#62H JNC LAST3 ACALL DISP3 ACALL DELY6 LAST3:MOV C,FLAG4 MOV 47H,#68H JNC LAST4 ACALL DISP3 ACALL DELY6 LAST4:MOV C,FLAG5 MOV 47H,#6EH JNC LAST5 ACALL DISP3 ACALL DELY6 LAST5:MOV C,FLAG6 MOV 47H,#74H JNC LAST6 ACALL DISP3 ACALL DELY6 LAST6:MOV C,FLAG7 MOV 47H,#7AH JNC LAST7 ACALL DISP3 ACALL DELY6 LAST7:RET DELY6:MOV R6,#0FFH ;去抖! DL6:MOV R7,#0FFH DJNZ R7,$ DJNZ R6,DL6 RET SHEZHI: ;PUSH ACC SZ: LCALL KINP JNB NENG1,COMP JB PSW.5,SZ MOV A,45H CJNE A,#00H,KEYS ;0键上限减一 DEC H_SHZ ACALL SUAN ACALL JISUAN ACALL DISP AJMP COMP KEYS:CJNE A,#01H,KEYA ;1键上限加一 INC H_SHZ ACALL SUAN ACALL JISUAN ACALL DISP AJMP COMP KEYA:CJNE A,#02H,KEYB ;2键下限减一 DEC L_SHZ ACALL SUAN ACALL JISUAN ACALL DISP AJMP COMP KEYB:CJNE A,#03H,COMP ;3键下限加一 INC L_SHZ ACALL SUAN ACALL JISUAN ACALL DISP COMP:JB NENG1,SZ MOV A,H_SHZ MOV B,#2 MUL AB MOV 1FH,A MOV A,H_SHZ MOV B,#2 DIV AB ADD A,1FH MOV DH_SHZ,A MOV A,L_SHZ MOV B,#2 MUL AB MOV 1FH,A MOV A,L_SHZ MOV B,#2 DIV AB ADD A,1FH MOV DL_SHZ,A ;POP ACC RET JISUAN: MOV A,20H MOV B,#10H DIV AB MOV 55H,A MOV 54H,B MOV A,21H MOV B,#10H DIV AB MOV 52H,A MOV 51H,B MOV 50H,#0CH MOV 53H,#0CH MOV 47H,#50H RET SUAN:MOV A,L_SHZ MOV B,#00 LCALL CONVERT PUSH 21H MOV A,H_SHZ MOV B,#00 LCALL CONVERT MOV 20H,21H POP 21H RET INT11:SETB P3.7 RETI INT22:CLR P1.6 RETI END
/
本文档为【温度】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索