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

📄 wenkong.txt

📁 设计的一个温度控制程序
💻 TXT
📖 第 1 页 / 共 2 页
字号:

      ORG  0000H
      LJMP MAIN
      ORG  000BH
      LJMP T00
      ORG  001BH
      LJMP T100
      ORG  0030H
                        
MAIN:MOV R0,#7FH
MAIN1:MOV @R0,#00H
      DJNZ R0,MAIN1
      MOV SP,#60H
      MOV   08H,#32H
      MOV   0FH,#20H
      ;MOV   10H,#20H
      MOV TMOD,#11H       ;使T0工作在方式1  T1工作于方式1
      MOV TH0,#0FCH
      MOV TL0,#18H        ;设置定时初值1000us
      SETB TR0
      SETB ET0
     ; SETB IT0
     ; SETB EX0
      SETB EA             ;开中断
      SETB 2FH.4
;********************************************************************************
BEGIN:
DIS00:  MOV A,09H
        MOV B,#64H
        DIV AB
        MOV 35H,A
        MOV A,B
        MOV B,#0AH
        DIV AB
        MOV 36H,A
        MOV 37H,B

        MOV     A,43H                  ;主程序循环起点
        CJNE    A,#3aH,OUT01
        MOV     A,42H
        CJNE    A,#98H,OUT01
        MOV     42H,#00H
        MOV     43H,#00H
        LCALL   SAMP     ;15S时间到则启动A/D
        SETB    2FH.1

;********************************************************************************
OUT01:JNB   2FH.1,OUT02
        LCALL  FILTER
        CLR   2FH.1
        SETB  2FH.2
        MOV R2,25H              ;设定值U送R2
        MOV R3,24H              ;采样平均值R送R3
        LCALL CPL1
        LCALL SUM
        MOV   A,R2
        CJNE  A,#01AH,OUT04
        LJMP   OUT05
OUT04:JC  OUT05
        SETB   P1.2
        LJMP   OUT06
OUT05:MOV  26H,#12H
        MOV 27H,#1H
        MOV 28H,#1H
        LCALL PID
        MOV  TH1,2CH
        MOV  TL1,2DH
        SETB TR1
        SETB ET1
        LJMP  OUT06
;********************************************************************************
OUT02:MOV     A,45H
        CJNE    A,#03H,OUT06
        MOV     A,44H
        CJNE    A,#0E8H,OUT06
        MOV     44H,#00H
        MOV     45H,#00H
        MOV  TH1,2CH
        MOV  TL1,2DH
        SETB TR1
        SETB ET1                             ;500MS控制周期时间到则重复送PID计算的结果

OUT06:  JB 2FH.4,OUT07
        JNB  2FH.2,BEG
BEG:ljmp begin
OUT07: ; MOV     24H,#56H
        MOV  R0,24H
        LCALL   TRANSF
        MOV     32H,R0
        MOV     33H,R1
        MOV     34H,R2
      ;  MOV     25H,#0FFH
        MOV     R0,25H
        LCALL   TRANSF
        MOV     35H,R0
        MOV     36H,R1
        MOV     37H,R2
        CLR     2FH.2
        CLR      2FH.4
        LJMP BEGIN

;********************************************************************************

;********************************************************************************

;********************************************************************************
T100:CLR ET1
     PUSH  ACC
     PUSH  B
     PUSH  PSW
     PUSH  DPH
     PUSH  DPL



     CLR  P1.2                  ;调节占空比



    POP   DPL
    POP   DPH
    POP   PSW
    POP   B
    POP   ACC
    SETB  ET1
    RETI


;********************************************************************************
KEY1:   MOV 30H,#01H
        MOV A,#01H
        ADD A,09H
        MOV 09H,A
        MOV A,#00H
        ADDC A,13H
        MOV 13H,A
        RET
KEY2:   MOV 30H,#02H
        MOV A,#0AH
        MOV B,09H
        MUL AB
        SWAP A
        ADD A,B
        SWAP A
        MOV 09H,A
        RET
KEY3:   MOV 30H,#03H
        CLR C
        MOV A,#01H
        XCH A,09H
        SUBB A,09H
        MOV 09H,A
        RET
KEY4:   MOV 30H,#04H
        MOV 09H,#00H
        RET
;********************************************************************************
T00:CLR EA             ;中断程序———   显示,键盘查询
        PUSH ACC
        PUSH B
        PUSH PSW
        PUSH DPH
        PUSH DPL           ;保护现场
        CLR RS1            ;
        SETB RS0           ; 设置工作寄存器区为1区,R0--R7对应08H--0FH单元
        MOV TH0,#0FCH      ;
        MOV TL0,#25H       ; 重新设置计数器初值
        MOV DPTR,#7FFFH    ; 送位显码
        MOV A,#00H         ;
        MOVX @DPTR,A       ; 启动位显码
        MOV DPTR,#9FFFH    ; 送段显码
        MOV A,#0FFH        ;
        MOVX @DPTR,A       ; 启动段显码
        MOV A,@R0          ; R0中放置偏移地址 ,指定32H单元的内容为要显示的数据
        MOV DPTR,#TAB      ; DPTR中放置首地址
        MOVC A,@A+DPTR     ; 查表 ,将查的的数据放入A中
        MOV DPTR,#9FFFH    ; 重新启动段显码
        MOVX @DPTR,A       ; 送要显示的段数据   将数据显示
        MOV DPTR,#7FFFH    ; 重新启动位显码
        MOV A,R7           ; 选择要显示的位
        MOVX @DPTR,A       ; 送要显示的位数据
        INC R0             ; 指示下一个要显示的数据
        RR A               ;
        MOV R7,A           ; 送回,为下一次做准备
        CJNE R0,#38H,scan  ; 没有显示完全(32H--37H单元内容)则跳转到T101,否则执行下一条
        MOV R0,#32H        ;
        MOV R7,#20H
;******************************************************************************************
scan:MOV   A,42H
        ADD   A,#01H
        MOV   42H,A
        MOV   A,43H
        ADDC  A,#00H
        MOV   43H,A            ; 负责加1,定时15S   ————采样周期----启动A/D0809的周期
;******************************************************************************************
        MOV   A,44H
        ADD   A,#01H
        MOV   44H,A
        MOV   A,45H
        ADDC  A,#00H
        MOV   45H,A            ; 负责加1,定时500MS————控制周期  ----
;***************************************

KEY01:  MOV DPTR,#1FFFH
        MOV A,#0FEH
        MOVX @DPTR,A
        JB P1.7,KEY02
        INC 4aH
        MOV A,4aH
        CJNE A,#0AH,KEY02
        MOV 4aH,#00H
        MOV A,46H
        CJNE A,#00H,KEY02
        LCALL KEY2
        INC 46H

KEY02:  JNB P1.7,BECK1
        MOV 46H,#00H
BECK1:  MOV A,#0DFH
	MOVX @DPTR,A
        NOP
        NOP
        JB P1.7,KEY03
        INC R2
        INC 4bH
        MOV A,4bH
        CJNE A,#0FFH,LOOP02
        MOV 4bH,#00H
        INC 4cH
        MOV A,4cH
        SUBB A,#08H
        JNC LOOP03
LOOP02: CJNE R2,#0AH,KEY03
        MOV R2,#00H
        MOV A,47H
        CJNE A,#00H,KEY03
LOOP03: LCALL KEY1
        INC 47H
KEY03:  JNB P1.7,BECK2
        MOV 4bH,#00H
        MOV 4cH,#00H
        MOV 47H,#00H
BECK2:  MOV A,#0BFH
        MOVX @DPTR,A
        NOP
        NOP
        JB P1.7,KEY04
        INC R3
        INC R5
        CJNE R5,#0FFH,LOOP00
        MOV R5,#00H
        INC R6
        MOV A,R6
        SUBB A,#08H
        JNC LOOP01
LOOP00: CJNE R3,#08H,KEY04
        MOV R3,#00H
        MOV A,48H
        CJNE A,#00H,KEY04
LOOP01: LCALL KEY3
        INC 48H
KEY04:  JNB P1.7,BECK3
        MOV R5,#00H
        MOV R6,#00H
        MOV 48H,#00H
BECK3:  MOV A,#7FH
        MOVX @DPTR,A
        NOP
        NOP
        JB P1.7,T101
        INC R4
        CJNE R4,#0AH,T101
        MOV R4,#00H
        MOV A,49H
        CJNE A,#00H,T101
        LCALL KEY4
        INC 49H


T101:                      ;MOV  41H,#00H
        NOP                ;
        POP DPL            ;
        POP DPH            ;
        POP PSW            ;
        POP B              ;
        POP ACC            ;
        SETB EA            ;
        RETI               ;  子程序返回









;*******************采样**************************************************
SAMP:MOV R0,#20H           ;采样值起始地址送R0
     MOV R2,#04H           ;采样四次
     MOV DPTR,#5FFaH       ;启动A/D0809
SAM1:MOVX @DPTR,A
     NOP
WAIT:JB P3.2,WAIT          ;等待A/D完成
     MOVX A,@DPTR          ;采样值送A
     MOV @R0,A             ;存采样值
     INC R0
     DJNZ R2,SAM1          ;若采样次数到了,返回
     RET

⌨️ 快捷键说明

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