⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 temperaturecontrol.asm

📁 proteus仿真实例大全
💻 ASM
📖 第 1 页 / 共 3 页
字号:




;****************************资源分配**************************
     FLAG1  EQU 54H;是否检测到DS18B20标志位
     FLAG2  EQU 00H
     COUNT  EQU 63H
     CSA    EQU P0.4
     CSB    EQU P0.3
     RS     EQU P0.2
     RW     EQU P0.1
     E      EQU P0.0
     COM    EQU 21H       ;命令字
     DAT    EQU 22H       ;显示数据

     column EQU 23H     ;列
     pagef  EQU 24h      ;页
     cpage  EQU 25H
     ccolumn EQU 26H    ;列(0-15)

     CODE             EQU 27h
     column2          EQU 52H
     pagef2           equ 60h
     cpage2           EQU 61H
     ccolumn2         EQU 62H

     column3          EQU 2eH
     pagef3           equ 2fh
     cpage3           EQU 30H
     ccolumn3         EQU 31H
     column4          EQU 32H
     pagef4           equ 33h
     cpage4           EQU 34H
     ccolumn4         EQU 35H
     column5          EQU 36H
     pagef5           equ 37h
     cpage5           EQU 38H
     ccolumn5         EQU 39H

;*****************************主程序开始******************
ORG 0000H
LJMP START

ORG 0003H
LJMP INT0                         ;外部中断

ORG 0030H
START: MOV SP,#70H
       MOV P2,#0F0H
       CLR A
       CLR F0                     ;清设置键
       CLR FLAG2                  ;清确认键
       MOV COUNT,#0               ;中断次数计数
       SETB IT0
       SETB EX0
       SETB EA

       LCALL INT                  ;LCD12864初始化子程序
       LCALL CLEAR                ;LDC12864清屏子程序

       LCALL DISPLAY1             ;显示"温度自动控制系统"
       LCALL DISPLAY2             ;显示"设置温度"
       LCALL DISPLAY3             ;显示预设的温度
       LCALL DISPLAY4             ;显示"实际温度"
       LCALL DISPLAY5

       LCALL GET_TEMPER           ;调用读温度子程序
       ACALL DISPLAY5             ;调用显示
M:
       LCALL GET_TEMPER
       LCALL DELAY1

MM:     LCALL DISPLAY3
MM1:    JB F0,MM4                ;是否按上"设置"键
        JNB F1,M                 ;是否按下"确认"键

        MOV A,48H
        CJNE A,43H,MM5

        MOV A,55H
        CJNE A,42H,MM5

        MOV A,56H
        CJNE A,41H,MM5
        LJMP MM8



MM4:    MOV A,COUNT
        CJNE A,#1,MM2
        LCALL DISPLAY8
        LCALL DISPLAY8
        LJMP MM

MM2:    CJNE A,#2,MM3

        LCALL DISPLAY9
        LCALL DISPLAY9
MM3:    CJNE A,#3,MM
        LCALL DISPLAY10
        LCALL DISPLAY10
        LJMP MM

MM5:    JC  MM7
        LJMP MM6

MM6:    LCALL DISPLAY6
        CLR  P0.5
        SETB P0.6
        SETB P0.7
        LJMP M

MM7:   LCALL DISPLAY7
       SETB P0.5
       CLR  P0.6
       SETB P0.7
       LJMP M

MM8:   LCALL DISPLAY11
       SETB P0.5
       SETB P0.6
       CLR  P0.7
       LJMP M

;***********************外部中断0子程序**************
INT0:
      CLR EX0
      INC COUNT                 ;中断计数器加1
      CPL P3.0
      MOV DPTR,#JS

      MOV A,P2
      MOV P2,#0FH
      MOV 47H,P2
      JNB ACC.4,E1
      JNB ACC.5,E2
      JNB ACC.6,E3
      JNB ACC.7,E4
      SETB EX0
      RETI

E1:   MOV 20H,#0
      LJMP KEYH
E2:   MOV 20H,#4
      LJMP KEYH
E3:   MOV 20H,#8
      LJMP KEYH
E4:   MOV 20H,#12
      LJMP KEYH

KEYH:MOV A,47H
     JNB ACC.0,D0
     JNB ACC.1,D1
     JNB ACC.2,D2
     JNB ACC.3,D3
     SETB EX0
     RETI

D0:  MOV A,#0
     ADD A,20H
     MOV 59H,A
     MOV B,#3
     MUL AB
     JMP @A+DPTR

D1:  MOV A,#1
     ADD A,20H
     MOV 59H,A
     MOV B,#3
     MUL AB
     JMP @A+DPTR


D2:  MOV A,#2
     ADD A,20H
     MOV 59H,A
     MOV B,#3
     MUL AB
     JMP @A+DPTR


D3:  MOV A,#3
     ADD A,20H
     MOV 59H,A
     MOV B,#3
     MUL AB
     JMP @A+DPTR

JS:  LJMP LOOP0
     LJMP LOOP1
     LJMP LOOP2
     LJMP LOOP3
     LJMP LOOP4
     LJMP LOOP5
     LJMP LOOP6
     LJMP LOOP7
     LJMP LOOP8
     LJMP LOOP9
     LJMP LOOP10
     LJMP LOOP11

LOOP0:

     ACALL SHIFT1
     MOV P2,#0F0H
     SETB EX0
     RETI

LOOP1:

     ACALL SHIFT1
     MOV P2,#0F0H
     SETB EX0
     RETI

LOOP2:
     ACALL SHIFT1
     MOV P2,#0F0H
     SETB EX0
     RETI

LOOP3:
     ACALL SHIFT1
     MOV P2,#0F0H
     SETB EX0
     RETI

LOOP4:
     ACALL SHIFT1
     MOV P2,#0F0H
     SETB EX0
     RETI

LOOP5:
     ACALL SHIFT1
     MOV P2,#0F0H
     SETB EX0
     RETI

LOOP6:
     ACALL SHIFT1
     MOV P2,#0F0H
     SETB EX0
     RETI

LOOP7:
     ACALL SHIFT1
     MOV P2,#0F0H
     SETB EX0
     RETI

LOOP8:
     ACALL SHIFT1
     MOV P2,#0F0H
     SETB EX0
     RETI

LOOP9:
     ACALL SHIFT1
     MOV P2,#0F0H
     SETB EX0
     RETI

LOOP10:
     SETB F0              ;按下设置键
     MOV COUNT,#1
     MOV P2,#0F0H
     SETB EX0
     RETI

LOOP11:                  ;按下"确认"键
     CLR F0
     SETB F1
     MOV COUNT,#0
     MOV P2,#0F0H
     SETB EX0
     RETI

SHIFT1:
      JB F0,LLL
      LJMP EXIT

LLL:  MOV A,COUNT
      CJNE A,#2,LLL1
      MOV 48H,59H
      LJMP EXIT

LLL1: CJNE A,#3,LLL2
      MOV 55H,59H
      LJMP EXIT

LLL2: CJNE A,#4,EXIT
      MOV 56H,59H
      SETB F1
      CLR  F0

EXIT: RET




;*************************显示子程序*************************
DISPLAY1:                        ;显示"自动温度控制系统" 循环效果

       mov column4,#48
       mov pagef4,#0             ;温
       mov code,#0
       lcall writeright2
       LCALL DELAY1

       mov column4,#32
       mov pagef4,#0             ;温
       mov code,#0
       lcall writeright2

       mov column4,#48
       mov pagef4,#0             ;度
       mov code,#1
       lcall writeright2
       LCALL DELAY1

       mov column4,#16
       mov pagef4,#0             ;温
       mov code,#0
       lcall writeright2

       mov column4,#32
       mov pagef4,#0             ;度
       mov code,#1
       lcall writeright2

       mov column4,#48
       mov pagef4,#0             ;自
       mov code,#2
       lcall writeright2

       LCALL DELAY1

       mov column4,#0
       mov pagef4,#0             ;温
       mov code,#0
       lcall writeright2

       mov column4,#16
       mov pagef4,#0             ;度
       mov code,#1
       lcall writeright2

       mov column4,#32
       mov pagef4,#0             ;自
       mov code,#2
       lcall writeright2

       mov column4,#48
       mov pagef4,#0             ;动
       mov code,#3
       lcall writeright2

       LCALL DELAY1

       mov column3,#48
       mov pagef3,#0             ;温
       mov code,#0
       lcall writeleft2

       mov column4,#0
       mov pagef4,#0             ;度
       mov code,#1
       lcall writeright2

       mov column4,#16
       mov pagef4,#0             ;自
       mov code,#2
       lcall writeright2

       mov column4,#32
       mov pagef4,#0             ;动
       mov code,#3
       lcall writeright2

       mov column4,#48
       mov pagef4,#0             ;控
       mov code,#4
       lcall writeright2
       LCALL DELAY1

       mov column3,#32
       mov pagef3,#0             ;温
       mov code,#0
       lcall writeleft2

       mov column3,#48
       mov pagef3,#0             ;度
       mov code,#1
       lcall writeleft2

       mov column4,#0
       mov pagef4,#0             ;自
       mov code,#2
       lcall writeright2

       mov column4,#16
       mov pagef4,#0             ;动
       mov code,#3
       lcall writeright2

       mov column4,#32
       mov pagef4,#0             ;控
       mov code,#4
       lcall writeright2

       mov column4,#48
       mov pagef4,#0             ;制
       mov code,#5
       lcall writeright2

       LCALL DELAY1

       mov column3,#16
       mov pagef3,#0             ;温
       mov code,#0
       lcall writeleft2

       mov column3,#32
       mov pagef3,#0             ;度
       mov code,#1
       lcall writeleft2

       mov column3,#48
       mov pagef3,#0             ;自
       mov code,#2
       lcall writeleft2

       mov column4,#0
       mov pagef4,#0             ;动
       mov code,#3
       lcall writeright2

       mov column4,#16
       mov pagef4,#0             ;控
       mov code,#4
       lcall writeright2

       mov column4,#32
       mov pagef4,#0             ;制
       mov code,#5
       lcall writeright2

        mov column4,#48
       mov pagef4,#0             ;系
       mov code,#6
       lcall writeright2
       LCALL DELAY1

       mov column3,#0
       mov pagef3,#0             ;温
       mov code,#0
       lcall writeleft2

       mov column3,#16
       mov pagef3,#0             ;度
       mov code,#1
       lcall writeleft2

       mov column3,#32
       mov pagef3,#0             ;自
       mov code,#2
       lcall writeleft2

       mov column3,#48
       mov pagef3,#0             ;动
       mov code,#3
       lcall writeleft2

       mov column4,#0
       mov pagef4,#0             ;控
       mov code,#4
       lcall writeright2

       mov column4,#16
       mov pagef4,#0             ;制
       mov code,#5
       lcall writeright2

       mov column4,#32
       mov pagef4,#0             ;系
       mov code,#6
       lcall writeright2

       mov column4,#48
       mov pagef4,#0             ;统
       mov code,#7
       lcall writeright2
       LCALL DELAY1
       RET

DISPLAY2:                         ;显示"设置温度"
       mov column3,#16            ;设
       mov pagef3,#2
       mov code,#8
       lcall writeleft2
       LCALL DELAY1

       mov column3,#32          ;置
       mov pagef3,#2
       mov code,#9
       LCALL writeleft2
       LCALL DELAY1

        mov column3,#48          ;温
       mov pagef3,#2

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -