本帖最后由 1003 于 2016-6-1 17:09 編輯
89176109.png (43.11 KB, 下載次數: 126)
下載附件
2016-6-1 17:09 上傳
ORG 0000H JMP START1 ; ORG 000BH ; 定時器/計數器0溢出中斷 JMP TIM0 ; 轉中斷程序 START1: MOV TMOD,#01H; 設定定時器0工作方式1 MOV TH0 , #HIGH(65536-50000); 設定初值 MOV TL0,#LOW(65536-50000); SETB TR0; 啟動定時器0 MOV IE,#82H; 定時器0開放中斷 MOV 24H,#0FFH; ANL P1,#00H; MOV R0,#14; 延時 START: MOVX @R0,A; 啟動A/D轉換 WAIT: JNB P2.1,SET0; 檢測溫度輸入 JB P2.0,ADC; 檢測轉換是否完成 JMP WAIT ADC: MOVX A,@R0; 將轉換好的值送入A LCALL L1; LCALL DISP; JMP START L1: CLR C; 清0 MOV 20H,#00H; MOV 21H,#00H; MOV R3,#08H; 顯示位數 NEXT: RLC A; 將A的內容和Cy左移一位,顯示準備 MOV R2,A; MOV A,20H; ADDC A,20H DA A; 對A進行十進制調整 MOV 20H,A; MOV A,21H; ADDC A,21H MOV 21H,A; MOV A,R2; DJNZ R2,NEXT; R2-1≠0 循環計數 L2: MOV A,20H ADD A,20H; DA A; MOV 20H,A; MOV A,21H; ADDC A,21H; DA A; MOV 21H,A; RET DISP: MOV A,20H; 顯示程序 ANL A,#0F0H SWAP A; 交換高低位 MOV 22H,A MOV A,21H; ANL A,#0FFH SWAP A ; ORL A,22H; MOV 23H,A MOV P1,A; MOV R7,#0FFH; DJNZ R7,$; 是否顯示完 RET SET0: LCALL DELAY; JNB P2.1,$; 等待按鍵操作 LCALL DELAY; 消除按鍵抖動 A2: CJNE R0,#0FFH,A1; MOV R0,#14; 延時 A1: MOV A,R0; MOV DPTR,#TABLE ; 數據指針指向表頭 MOVC A,@A+DPTR; 查表 MOV P1,A; MOV 24H,A; MOV R5,#4FH; D4: MOV R7,#0FFH D2: MOV R6,#0FFH D1: JNB P2.1,SET1; 有按鍵按下 轉SET1 DJNZ R6,D1 DJNZ R7,D2 DJNZ R5,D4 JMP START; SET1: LCALL DELAY; JNB P2.1,$; 等待按鍵操作 LCALL DELAY; 消除抖動 DEC R0; JMP A2; TIM0: PUSH ACC; 保護現場 PUSH PSW MOV TH0,#HIGH (65536 - 50000); 重裝定時初值 MOV TL0,#LOW (65536 -50000) CLR C ; 進位標志清0 MOV A,24H; 比較溫度 SUBB A,23H; JNC OFF; CLR C; MOV A,24H; SUBB A,23H; JNC OFF; CLR P3.0; 壓縮機停止工作 RETURN: POP PSW POP ACC RETI ; 中斷返回 OFF: SETB P3.0;驅動 壓縮機開始工作 JMP RETURN DELAY: MOV R7,#60; 延時程序 D3: MOV R6,#248 DJNZ R6,$ DJNZ R7,D3 RET TABLE: DB 20H,21H,22H,23H,24H; DB 25H,26H,27H,28H,29H DB 30H,31H,32H,33H,34H END
|