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

📄 rrr.txt

📁 炉温控制系统的软件程序shiwode zhuopinfsdf f df f sdf sdf
💻 TXT
字号:
炉温控制系统的软件程序:
        ORG     0000H
        AJMP    MAIN
        ORG     0003H
        AJMP    PINTO
        ORG     0013H
        AJMP    PINT1
      
        ORG     0100H
MAIN:  MOV  32H,#67H  ;设给定温度初始值为404度
        MOV  33H,#00H  ;温度给定值的符号位为0
        MOV  3CH,#00H  ;前一时刻的偏差信号E(k-T)
        MOV  3DH,#00H  ;前一时刻的偏差信号E(k-T)符号位为0
        MOV  3EH,#00H  ;E(k-2T)
        MOV  3FH,#00H
        MOV  5FH,#00H  ;U的初值
        MOV  60H,#CCH  ;报警的上限温度值800
        MOV  61H,#66H  ;报警的下限温度值400
        MOV  DPTR,#7FFFH ;8279
        MOV  A,#0D1H
        MOVX @DPTR,A
WEIT:   MOVX A,@DPTR 
        JB   ACC.7,WEIT ;等待清显结束
        MOV  A,#34H    ;值分频系数,CLK=2MHz
        MOV  A,#12H    ;八字符显示,右端入口方式,n键轮回
        MOVX @DPTR,A
        SETB IT0        ;INTO边沿触发
        SETB EA         ;开中断
        SETB EX0        ;允许INTO中断
AD  :  SETB IT1        ;INT1边沿触发
        SETB EA         ;开中断
        SETB EX1        ;允许INT1中断  
        MOV  DPTR,#7FF8H;指向INO通道
        MOVX @DPTR,A   ;启动A/D
LOOP:  NOP
        AJMP LOOP
 
 
PINTO: PUSH PSW
        PUSH DPL
        PUSH DPH 
        PUSH ACC
        PUSH B
        SETB PSW.3
        MOV  DPTR,#7FFFH  ;置状态口地址
        MOV  A,@DPTR     ;读FIFO状态
        MOV  A,#5OH      ;置读FIFO命令(每次读后ai自动加一)
        MOV  @DPTR,A
        MOV  DPTR,#7FFEH  ;置数据口地址
        MOVX A,@DPTR     ;读数据
KEY:   MOV 3AH,A
        MOVX A,@DPTR
        MOV 39H,A
        MOVX A,@DPTR
        MOV 38H,A
        MOV A,@DPTR
        ACALL CHACK     ;检查按键是否是以“*”键结尾
        CJMP A,#OBH,PKYR ;如果不是中断返回
        MOV A,3AH       ;百位求键值
        ACALL CHACK
        MOV 3AH,A  
        MOV A,39H       ;十位求键值
        ACALL CHACK
        MOV 39H,A
        MOV A,38H       ;个位求键值
        ACALL CHACK
        MOV 38H,A
        MOV R0,#3AH     ; 把百位地址给R0,调显示子程序
        ACALL DIS
XIUGAI: CLR C            ; 以下程序用于修改给定温度值
        MOV B,#100
        MOV A,3AH        ;   
        MUL AB
        MOV R1,B
        MOV 3AH,A
        MOV B,#10
        MOV A,39H
        MUL AB 
        ADD A,38H       ;十位与个位相加
        ADD A,3AH       :十位与个位相加D的结果与百位的底 8位相加
        MOV A,R1
        ADDC A,00H       ;百位的高 8位加进位CY
        CLR C            ;把当前值/4放入给定温度地址
        RRC A
        MOV R1,A
        MOV A,3AH
        RRC A
        MOV 3AH,A
        MOV A,R1
        RRC A
        MOV A,3AH
        RRC A
        MOV 32H,A      ;修改完成
PKYR:  POP B 
        POP ACC
        POP DPH
        POP DPL
        POP PSW  
        RET1
        

PINT1: PUSH PSW
        PUSH DPL
        PUSH DPH 
        PUSH ACC
        PUSH B
        MOV  DPTR,#7FF8H
        MOVX A,@DPTR
PID  :  MOV 32H,A
        ACALL ALARM      ;调用报警子程序
        ACALL CHEN       ;温度采集值转化为十进制数(为了显示的需要) 
        MOV R0,#34H      ;十进制数的首地址
        ACALL DIS        ;显示
        MOV R0,#30H      ;给定值30H-31H
        MOV R1,#32H
        MOV R2,#3BH      ;3BH-3CH偏差信号E(k)  
        ACALL BSUB
        MOV A,#3CH      ;查看E(K)的符号位
        JB ACC.7,CONVER1
        MOV A,38H
        MOV B.#OAH
        MUL AB
        MOV 41H,A
        MOV 42H,B
        AJMP H1
CONVER1: MOV A,3BH
        DEC A
        CPL A 
        MOV B,#OAH
        MUL AB
        CPL A
        INC A
        MOV A,B 
        CPL A
        SETB ACC.7
        MOV 42H,A   
H1:   MOV A,3FH
        JB ACC.7,CONVER2
        MOV A,3DH
        MOV B,#0EH    ;
        MUL AB
        MOV 43H,A
        MOV 44H,B
        AJMP H2
        CONVER2 :MOV A,3DH
        DEC A
        CPL A
        MOV B,#0EH
        MUL AB 
        CPL A
        INC A
        MOV 43H,A
        MOV A,B
        CPL A
        INC A
        SETB ACC.7
        MOV 44H,A
        MOV R0,41H
        MOV R1,43H
        MOV R2,43H
        ACALL BSUB
        MOV A,4OH
        JB ACC.7,CONVER3
        MOV A,3FH
        MOV B,#05H
        MUL AB
        MOV 3FH,A
        MOV 40H,B
        AJMP H3
CONVER3 :MOV A,3FH
        DEC A
        CPL A
        MOV B,#05H
        MUL AB 
        CPL A
        INC A
        MOV 3FH,A
        MOV A,B
        CPL A
        INC A
        SETB ACC.7
        MOV 40H,A
        MOV R0,43H
        MOV R1,3FH
        MOV R2,3FH
        ACALL BADD
        CLR C          ;整体乘4
        MOV A,40H
        MOV R2,A      ;保存符号位
        RRC A
        MOV R1,A
        MOV 40H,A
        MOV A,3FH
        RRC A
        MOV 3FH,A
        MOV A,R1
        RRC A
        MOV 40H,A
        MOV A,3FH
        RRC A
        MOV 3FH,A
        MOV A,R2
        JNB ACC.7,H4
        MOV A,40H
        SETB ACC.7
        SETB ACC.6
H4   : CLR C
        MOV A,5EH  ;把KP的值给A
        MOV B,3FH  ;把△u的低8位给B
        MUL AB
        MOV 49H,A  ;低8位放到49H里
        MOV R6,B   ;高8位暂存入R6
        MOV A,5EH
        MOV B,40H  ;把△u的高8位给B
        MUL AB     
        ADD A,R6   ;
        MOV 4AH,A  ;
        MOV A,B
        ADDC A,#00H ;加进位
        MOV 4BH,A   ;△u*kp的高8位存入4BH
        MOV A, 5FH
        ADD A, 49H  ;
        MOV DPTR,#BFFFH
        MOV @DPTR,A     ;启动D/A
        ACALL DEL       ;延时
        MOV DPTR,#7FF8H
        MOVX @DPTR,A        ;再次启动A/D
        RET1            ;中断返回
;子程序
 ;双字节减法                    
BSUB: MOV  R7,#2                                                  
       CLR  C                         
LOOP1:MOV  A,@R0                    
       SUBB A, @R1                    
       MOV  R2,A                       
       INC  R0                       
       INC  R1                      
       INC  R2                     
       DJNZ R7,LOOP1                
       RET                                                             
;双字节加法
BADD: MOV  R7,#2
       CLR  C
LOOP1:MOV  A,@R0
       ADDC A, @R1
       MOV  R2,A
       INC  R0
       INC  R1
       INC  R2
       DJNZ R7,LOOP1
       RET

;显示子程序:
DIS :MOV  DPTR,#7FFFH   ;	置8279的命令/状态口地址
      MOV  R7,#03H       ;    三位显示
      MOV  A, #90H       ;    设置显示命令字
      MOVX @DPTR, A       ;    送显示命令字
      MOV  DPTR,#7FFEH   ;    设置数据口地址
LP  :MOV  A, @R0        ;    取显示数据
      ADD  A, #6
      MOVC A, @A+PC
      MOVX @DPTR, A
      INC  R0
      DJNZ R7,IP
      RET
SEG :DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7EH 6FH  
;温度采集值转化为十进制数(为了显示的需要) 
CHEN  :MOV A,32H     ;33H是温度采集的地址
        MOV B,#100    ;除以100得到百位数
        DIV AB   
        MOV 36H,A    
        MOV A,B
        MOV B,#10     ;除以10得到十位,个位数
        DIV AB
        MOV 35H,A     ;十位
        MOV 34H,B     ;个位
        MOV B  ,#4    ;整体乘以4变成需要显示的数
        MOV A,34H
        MUL AB 
        MOV B,#10
        DIV AB
        MOV 34H,B     ;需要显示的个位数存放在34H
        MOV R1,A      ;进位的数暂存R1中
        MOV A,35H
        MOV B,#4
        MUL AB 
        ADDC A,R1
        MOV B,#10
        DIV AB
        MOV 35H,B     ;需要显示的十位数存放在35H
        MOV R1,A
        MOV B,#4
        MOV A,36H
        MUL AB
        ADD A,R1
        MOV 36H,A     ;需要显示的百位数存放在36H
        RET
;报警程序: 
ALARM:MOV  P1,0FFH
       MOV  A,30H           
       SUB  A,60H   
       JNC  TMAX
       MOV  A,30H
       SUB  A,61H
       JC   TMIN
       ACALL DIS
       R:RET
       TMAX:MOV P1,0FBH    
       AJMP R
       TMIN:MOV P1,0FAH
       AJMP R

;检查按键是否是以“*”键结尾
CHACK :MOV R1,A
        ANL A,#07H   ;求列值
        MOV R2,A
        MOV A, R1
        ANL A, #38H  ;求行值
        RR  A
        RR  A
        RR  A
        MOV B,#3H
        MUL AB 
        ADD A,R2     ;求键值=行号*列数+列号
        RET
;延迟子程序
DEL : MOV R7,#3O
DEL1: MOV R6,#15
       NOP
DEL2: DJNZ R6,DEL2
       DJNZ R7,DEL1
       RET

⌨️ 快捷键说明

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