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

📄 source1.asm

📁 基于单片机的电话遥控器毕业设计pcb原理图文件
💻 ASM
字号:
ORG     0000H
       LJMP    START
       ORG     000BH
       LJMP    PIT0
       ORG     001BH
       LJMP    PIT1
       ORG     0100H
 START:MOV     SP,#60H
       MOV     R0,#50H
       MOV     R7,#06H
   ML1:MOV     @R0,#00H
       INC     R0
       DJNZ    R7,ML1
       MOV     30H,#06H   ;初始密码6位
       MOV     31H,#06H
       MOV     32H,#06H
       MOV     33H,#05H
       MOV     34H,#02H
       MOV     35H,#01H
       MOV     4CH,#00H   ;定时单元
       MOV     4DH,#00H
       MOV     4EH,#00H
       MOV     4FH,#00H
       CLR     P1.4    ;开关控制
       CLR     P1.5    ;判断有效DTMF信号
       SETB    ET0
       SETB    ET1
       SETB    EA
       MOV     TMOD,#61H
       MOV     SCON,#00H
       MOV     TH1,#0FAH
       MOV     TL1,#0FAH
       MOV     TH0,#17H
       MOV     TL0,#0B8H
       MOV     36H,#10
       SETB    TR1
   ML0:LCALL   XIANSHI
       JNB     P2.7,K7
       JNB     P2.6,K6
       JNB     P2.5,K5
       JNB     P2.4,K4
       SJMP    ML0
    K7:LCALL   DELAY1
       JNB     P2.7,KK7  ;打开开关1
       LJMP    ML0
    K6:LCALL   DELAY1
       JNB     P2.6,KK6  ;关闭开关1
       LJMP    ML0
    K5:LCALL   DELAY1
       JNB     P2.5,KK5  ; 打开开关2
       LJMP    ML0
    K4:LCALL   DELAY1
       JNB     P2.4,KK4  ; 关闭开关2
       LJMP    ML0
DELAY1:MOV    R4,#250
    II:MOV    R5,#250
       DJNZ   R5,$
       DJNZ    R4,II
       RET
   KK7:MOV     R7,#04H
       MOV     R0,#50H   ;调用语音提示
    YY:MOV     @R0,#00H
       INC     R0
       DJNZ    R7,YY
       CLR     P2.1
       SETB   TR0
       LCALL  RING2           ;开关1已打开
       LJMP   ML0
   KK6:SETB   P2.1
       CLR    TR0
       LCALL  RING2      ;开关1已闭合
       LJMP   ML0
   KK5:CLR    P2.0
       LCALL  RING2      ;开关2已打开
       LJMP   ML0
   KK4:SETB   P2.0
       LCALL  RING2      ;开关2已闭合
       LJMP   ML0
  PIT1:SETB    P1.4     ;摘机
       LCALL   RING2    ;请输入密码
       CLR    TR1       ;停止计数
       MOV    R3,#03H
    IN:MOV    R0,#40H
       MOV    R2,#06H
   TO2:JNB    P1.5,TO2
       MOV    A,P1
       ANL    A,#0FH
       MOV    @R0,A
       INC    R0
    NN:JB     P1.5,NN
       LCALL  RING1
       DJNZ   R2,TO2
       MOV    R2,#06H    ;检验密码、
       MOV    R0,#30H
       MOV    R1,#40H
   CMP:MOV    A,@R1
       XRL    A,@R0
       INC    R0
       INC    R1
       JZ     AAA
       LJMP   QQ         ;密码错误
   AAA:DJNZ   R2,CMP
       LJMP   LL        ;密码正确
    QQ:DJNZ    R3,IN1
       LJMP   RRET      ;挂机
   IN1:LCALL  RING3      ;密码错误重新输入
       LJMP   IN
    LL:LCALL   RING0
    PP:JNB    P1.5,PP
       MOV    A,P1
       ANL    A,#0FH
       RL     A     ;左移一位相当于乘二
       MOV    DPTR,#TAB1
       JMP    @A+DPTR
  TAB1:AJMP    LL
       AJMP    ONE     ; 关闭开关1
       AJMP    TWO     ; 打开开关1
       AJMP    THREE   ; 关闭开关2
       AJMP    FOUR    ; 打开开关2
       AJMP    FIVE    ; 修改密码
       AJMP    SIX     ; 定时
       AJMP    RRET    ;退出
       AJMP    LL
       AJMP    LL
       AJMP    LL
  RRET:CLR     P1.4
       SETB    TR1
       RETI
 ONE:CLR     P2.1     ;  开关1已关闭
      MOV     R7,#06H
      MOV     R0,#50H
   XX:MOV     @R0,#00H
      INC     R0
      DJNZ    R7,XX
      SETB    TR0
      LCALL    RING2
      LJMP      PP
  TWO:SETB     P2.1
      CLR     TR0
      LCALL    RING2    ;  开关1已打开
      LJMP     PP
 THREE:CLR     P2.0
       LCALL   RING2     ;开关2已关闭
       LJMP    PP
  FOUR:SETB    P2.0
       LCALL   RING2     ;开关2已打开
       LJMP     PP
 FIVE:SETB    RS1 ;当前工作寄存器第二工作区
       CLR     RS0
       LCALL   RING2
       MOV     R2,#06H
       MOV     R1,#40H
 WPIN0:JNB     p1.5,WPIN0    ;等待INT0中断
       MOV     A,P1
       ANL     A,#0FH
       MOV     @R1,A
       INC     R1            ;单元40到45
   EEE:JB      P1.5,EEE
       LCALL   RING1
       DJNZ    R2,WPIN0 ;第一次密码输入完毕
       LCALL   RING2    ;请再次输入密码
       MOV     R2,#06H
       MOV     R1,#46H
 WPIN1:JNB     P1.5,WPIN1 ;等待INT0中断
       MOV     A,P1
       ANL     A,#0FH
       MOV     @R1,A
       INC     R1
   GGG:JB      P1.5,GGG
       LCALL   RING1
       DJNZ    R2,WPIN1   ;第二次输入完毕
       MOV     R2,#06H
       MOV     R0,#46H
       MOV     R1,#40H
 READ1:MOV     A,@R1
       XRL      A,@R0
       JNZ      BBB
       JZ        CCC
   BBB:LCALL   RING3  ;两次输入不相付,请重新输入
       LJMP    FIVE
   CCC:INC     R0
       INC     R1
       DJNZ    R2,READ1 ;判断输入密码是否为6位,否跳转READ1
       MOV     R0,#40H
       MOV     R1,#30H
       MOV     R2,#06H
   DDD:MOV     A,@R0
       MOV     @R1,A
       INC      R0
       INC     R1
       DJNZ    R2,DDD
       LCALL   RING2      ;新密码已建立
       LJMP    PP
  SIX: LCALL   RING2
       MOV     R2,#04H    ;四位包括时 分
       MOV     R1,#4FH
    SS:JNB      P1.5,SS
       MOV     A,P1
       ANL     A,#0FH
       MOV     38H,A
       XRL     A,#0AH
       JNZ     SSS
       MOV     A,#00H
       SJMP    HH
   SSS:MOV     A,38H
    HH:MOV     @R1,A
       DEC     R1
   HHH:JB      P1.5,HHH
       LCALL   RING1
       DJNZ    R2,SS
       LCALL   RING2     ;定时成功
       LJMP     PP
   PIT0:  PUSH    PSW
          PUSH    ACC
          SETB     PSW.3
          MOV     TH0,#17H
          MOV     TL0,#0B8H
          MOV     A,36H
          DEC     A
          MOV     36H,A
          JNZ      RET0
          MOV     36H,#10
          MOV     R0,#51H
          ACALL   DAAD1
          MOV     A,R2
          XRL     A,#60H
          JNZ      RET0
          ACALL   CLR0
          MOV     R0,#53H
          ACALL   DAAD1
          MOV     37H,R2
          MOV     A,55H ;判断定时是否到
          XRL      A,4FH
          JNZ       EE
          MOV      A,54H ;判断定时是否到
          XRL      A,4EH
          JNZ      EE
          MOV     A,53H ;判断定时是否到
          XRL     A,4DH
          JNZ      EE
          MOV     A,52H ;判断定时是否到
          XRL      A,4CH
          JNZ       EE
          SETB     P2.1
          CLR      TR0
          LCALL    RING2
          LJMP     RET0
      EE: MOV      R2,37H
          MOV      A,R2
          XRL      A,#60H
          JNZ       RET0
          ACALL    CLR0
          MOV      R0,#55H
          ACALL    DAAD1
     RET0:POP       ACC
          POP       PSW
          RETI
    DAAD1:MOV    A,@R0
          DEC    R0
          SWAP   A
          ORL    A,@R0
          ADD    A,#01H
          DA     A
          MOV    R2,A
          ANL    A,#0FH
          MOV    @R0,A
          MOV    A,R2
          INC    R0
          ANL    A,#0F0H
          SWAP   A
          MOV    @R0,A
          RET
     CLR0:CLR    A
          MOV    @R0,A
          DEC    R0
          MOV    @R0,A
          RET
 XIANSHI:  MOV   R7,#06H
           MOV   R0,#55H
      DL0: MOV   A,@R0
           MOV   DPTR,#TAB
           MOVC   A,@A+DPTR
           MOV    SBUF,A
      DL1:JNB     TI,DL1
           CLR    TI
           DEC   R0
           DJNZ  R7,DL0
           MOV   R4,#100
     LOOP: MOV    R5,#30
      LOP: DJNZ   R5,LOP
           DJNZ   R4,LOOP
           RET
     TAB : DB  11H,0D7H,32H,92H,0D4H
           DB  98H,18H,0D3H,10H,90H
     RING1:MOV   R6,#70 ; 嘀嘀一长声
        MM:MOV   R7,#70
        WW:MOV   R5,#50
           CPL   P2.2
           DJNZ  R5,$
           DJNZ  R7,WW
           DJNZ  R6,MM
           RET
     RING0:CLR   P0.6
           SETB  P0.6
           RET
     RING2:MOV   R3,#02    ; 嘀嘀 两声
        FF:MOV   R6,#20
        VV:MOV   R5,#70
        KK:MOV   R7,#20
           CPL   P2.2
           DJNZ  R7,$
           DJNZ  R5,KK
           DJNZ  R6,VV
           LCALL DELAY2    ;0。5秒延时
           DJNZ   R3,FF
           RET
     DELAY2:MOV    R5,#250
         OO:MOV    R4,#250
            DJNZ   R4,$
            DJNZ   R5,OO
            RET
     RING3:MOV   R3,#03    ; 嘀嘀 两声
        FFF:MOV   R6,#20
        VVV:MOV   R5,#70
        KKK:MOV   R7,#20
           CPL   P2.2
           DJNZ  R7,$
           DJNZ  R5,KKK
           DJNZ  R6,VVV
           LCALL DELAY2    ;0。5秒延时
           DJNZ   R3,FFF
           RET


⌨️ 快捷键说明

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