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

📄 草稿1.asm

📁 及时准确地得到温度信息并对其进行适时的控制
💻 ASM
📖 第 1 页 / 共 2 页
字号:
              CLR   P3.0
              SETB   EX1
              LJMP  OVER
    BO_4:
              MOV   46H,#0E2H
              MOV   47H,#0B3H
              CLR   P3.0
               SETB   EX1
              LJMP  OVER
    BO_8:
              MOV    46H,#0DDH
              MOV    47H,#0D1H
              CLR   P3.0
               SETB   EX1

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  OVER:    MOV   P0,  #00H
         SETB   P2.5            ;地址锁存
         NOP
         CLR    P2.5
                           ;0111 1100----CS 111 11 A& R/^C     ;A&=0为12位转换
                             ;起动A/D 的12位转换
         SETB  P2.7                          ;P2.7用于打开A/D的CE端,打开AD
         JB    P2.6,$                        ;P2.4用于指示转换完比与否,等待转换完毕

         CLR   P2.7                          ;关闭A/D
         MOV   P0 ,#01H                      ;读取高8位
         SETB   P2.5                      ;0111 1101------CS 111 11 A& R    ;A& R为
         NOP                               ;高8位的读取
         CLR    P2.5
         NOP
         mov   p0,#0ffh
         SETB  P2.7
         MOV   A, P0
         MOV   R2,A
         CLR   P2.7                          ;高8位读取完毕
         MOV   P0 ,#03H                      ;读取低8位
         SETB   P2.5
         NOP                              ;0111 1111------CS 111 11 A& R
         CLR    P2.5                       ;A& R为低四位+0000的读取
         NOP
         mov   p0,#0ffh
         SETB  P2.7
         MOV   A, P0
         MOV   R3,A
         CLR   P2.7                          ;低8位读取完毕
         MOV   A,R3                          ;12位数据调整
         SWAP  A
         ORL   A,#0F0H
         MOV   R3,A
         MOV   A,R2
         SWAP  A
         MOV   R2,A
         ORL   A,#0FH
         ANL   A,R3
         MOV   R3,A
         MOV   A,R2
         ANL   A,#0FH
         MOV   R2,A
         POP  A
   RETI
;===========外部中断1的中断服务程序==============
;当过零检测电路的脉动冲到来,其下跳沿引起外部中断1
;=======    在此主要进行温度控制程序   ========
INT1: PUSH   A
      CLR   TR0
      CLR   TR1
      MOV   TH1,46H
      MOV   TL1,47H
      SETB   P3.0
       SETB   TR1
       SETB   TR0

             ;由于导通角的大小为0-10ms,不可忽略,可
                          ;能在些期间会有更优先的中断到来,所以暂时关闭
            ;P2.6接的是温度控制电路,其高电平时间就是导通角
            ;此处延时的长短为导通角

      ;SETB   TR0
      ;SETB   TR1
      POP    A

      RETI
;==========    定时器1中断程序   ==============

T1:   PUSH  A
      CLR   TR0
      CLR   P3.0
      SETB   TR0
      POP   A
      RETI



;=================主程序====================
MAIN:MOV A,48H
     CJNE   A,#01H,KEYWORK
     LCALL  DISPLAY

;----------------键盘扫描-------------------
;===========================================
KEYWORK:
        SETB  P2.3
        SETB  P2.4
        CLR P2.0
        CLR P2.1
        CLR P2.2

        JNB P2.3,KEY0
        JNB P2.4,K8
        SETB P2.0

        JNB P2.3,K1
        JNB P2.4,K9


        CLR P2.0
        SETB P2.1

        JNB P2.3,K2
        JNB P2.4,K10

        SETB P2.0

        JNB P2.3,K3
        JNB P2.4,K11

       CLR P2.0
        CLR P2.1
        SETB P2.2

        JNB P2.3,K4
        JNB P2.4,K12

        SETB P2.0

        JNB P2.3,K5
        JNB P2.4,K13

        CLR P2.0
        SETB P2.1

        JNB P2.3,K6
        JNB P2.4,K14

        SETB P2.0

        JNB P2.3,K7
        JNB P2.4,K15

        LJMP  MAIN
K1:LJMP  KEY1
K2:LJMP  KEY2
K3:LJMP  KEY3
K4:LJMP  KEY4
K5:LJMP   KEY5
K6:LJMP  KEY6
K7:LJMP  KEY7
K8:LJMP KEY8
K9:LJMP KEY9
K10:LJMP KEY10
K11:LJMP KEY11
K12:LJMP KEY12
K13:LJMP KEY13
K14:LJMP KEY14
K15:LJMP KEY15
;==================键盘扫描部分到此==================
key0:jnb p2.3,$
      mov B,#00h
      ljmp xswz
 key1: jnb p2.3,$
      mov B,#01h
      ljmp xswz
 key2:jnb p2.3,$
      mov B,#02h
      ljmp xswz
 key3:jnb p2.3,$
      mov B,#03h
      ljmp xswz
 key4:jnb p2.3,$
       mov B,#04h
      ljmp xswz
 key5:jnb p2.3,$
       mov B,#05h
      ljmp xswz
 key6: jnb p2.3,$
       mov B,#06h
      ljmp xswz
 key7: jnb p2.3,$
        mov B,#07h
       ljmp xswz
 key8: jnb p2.4,$
       mov B,#08h
       ljmp xswz
 key9: jnb p2.4,$
        mov B,#09h
        ljmp xswz
 key10: jnb p2.4,$
        mov B,#0ah
        ljmp xswz
KEY11:  LJMP   MAIN
         ;jnb p2.4,$
        ;ljmp  COL
KEY12:LJMP  MAIN
KEY13: JNB   P2.4,$
       CLR   EX1
       SETB  P3.0
       MOV   48H,#00H      ;关比较
      LJMP  MAIN
KEY14: JNB   P2.4,$
      SETB     E
       MOV   P1,#0CH    ;关光标
       LCALL  ENABLE
        SETB  TR0       
        CLR      P3.0
        MOV   48H,#01H      ;开比较
      LJMP  MAIN
;==============启动==================
KEY15:  JNB   P2.4,$

        ;SETB     EX0                        ;允许外部中断0,下跳沿中断


        ;SETB  TR1
     ql:MOV P1,#01H; 清零
        ACALL ENABLE
        MOV P1,#38H;8位点阵方式
        ACALL ENABLE
        MOV P1,#0FH;开显示
        ACALL ENABLE

        LJMP  MAIN
;==============================================
xswz:
     inc  r0
     mov  a,B
     mov  @r0,a
     mov   p1,R4
     lcall  enable
      mov  dptr ,#table4
      call write5

     LJMP   MAIN

write1:                   ;显示字符串
       mov r1,#00h
    a1:mov a,r1
       movc a,@a+dptr
       call write2
       inc r1
       cjne a,#20H,a1

       Ret
write2:                      ;共用
       mov p1,a
       setb rs
       clr rw
       clr e
       call delay
       setb e
       INC R4
       ret
WRITE3:
MOV A,@R1
MOVC A,@A+DPTR
CALL WRITE2
RET

;WRITE4:
;MOV A,R1
;MOVC A,@A+DPTR
;CALL WRITE2
;RET

WRITE5:
MOV A,@R0
MOVC A,@A+DPTR
CALL WRITE2
RET

;================液晶显示====================
DISPLAY:MOV R4,#080H               ;显示字符串"COL:  "
      MOV P1,R4
      CALL ENABLE
      MOV DPTR,#TABLE1
      CALL WRITE1

;===============
      MOV R4,#085H
      MOV P1,R4
      CALL ENABLE
      MOV DPTR,#TABLE4     ;??????????
      MOV R1,#30H
    GO:CALL WRITE3          ;显示温度
      INC R1
      MOV A,R1
      CJNE A,#35H,GO
      INC R4

;=================

SET_0:MOV R4,#0C0H
      MOV P1,R4
      CALL ENABLE
      MOV DPTR,#TABLE2
      CALL WRITE1              ;显示字符串"SET: "
     RET



ENABLE:CLR RS
       CLR RW
       CLR E
       NOP
       ACALL DELAY
       SETB E
       RET




delay:mov YS1,#100
   d1:mov YS2,#100
   d2:djnz YS2,d2
      djnz YS1,d1
      ret
;=============================================
TABLE1:DB 43H,4FH,4CH,3AH,20H
TABLE2:DB 53H,45H,54H,3AH,20H
table4:db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h,2eh,20h


 END

⌨️ 快捷键说明

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