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

📄 yuying.txt

📁 在语音播控记事器的设计中
💻 TXT
📖 第 1 页 / 共 2 页
字号:
        MOV    3DH,38H
        MOV    3CH,37H
        LCALL  CHANGE
        LJMP    L1
LC1:  LJMP    L1
X2:   MOV    A,48H
        CJNE    A,#01H,X3
        MOV    3CH,37H
        MOV    3DH,38H
        LCALL  CHANGE
        MOV    29H,37H
        DEC     31H
        DEC     48H
        LJMP    L1
X3:    LJMP   LL
LO1:   MOV   A,31H                  ;LED显示位存储单元
        CJNE    A,#02H,LO2
        MOV    3CH,33H
        MOV    A,29H
        CJNE    A,?24,LA1            ;判断若小时=24,(29H)=0
        MOV    29H,#00H
LA1:   MOV   34H,29H
        MOV    3DH,34H
        LCALL  CHANGE
        LJMP    L1
LO2:  MOV    3DH,34H
        MOV    A,29H
        CJNE    A,#60,LA2             ;判断若分=60,(29H)=0
        MOV    29H,#0
LA2:   MOV    33H,29H
        MOV     3CH,33H
        LCALL   CHANGE
        LJMP     L1
LO3:  MOV     A   31H
        CJNE    A,#02H,LO4
        MOV    3CH,35H
        MOVA   29H
        CJNE    A,#13,LA3              ;判断若月份=19,(29H)=0
LA3:  MOV    36H,29H
        MOV    3DH,36H
        LCALL  CHANGE
        LJMP    L1
LO4:  MOV     A,36H
       CJNE     A,#30H,LA4             ;若月份=2,日期=30,(29H)=0
       MOV     29H,#00H
LA4:  MOV     35H,29H                 ;存储调整后的日值到35H
       MOV     3CH,35H
       LCALL   CHANGE
       LJMP     L1
LO5:  MOV     A,31H
       CJNE     A,#02H,LO6
       MOV     3CH,37H
       MOV     3DH,38H
       LCALL   CHANGE
       LJMP     L1
LO6:  MOV     A,29H
       CJNE     A,#08H,LA6           ;判断若星期=8,(29H)=0
       MOV     29H,#00H
LA6    MOV     3DH,38H
       MOV     37H,29H
       MOV     3CH,37H
       LCALL   CHANGE
L1:   LCALL   DISPLAY
       LJMP     LP0
LL:   MOV     32H,#00H               ;设置时钟的秒值=0
       LCALL    SET1302
       LJMP     ET

;定时时间设置子程序
ALARM:SETB   P3.5                     ;允许输入
        MOV    39H,#01H
        LCALL  SEARCH                  ;读原来的定时时间
PP0:   MOV    3CH,3AH
        MOV    3DH,#3BH
        LCALL  CHANGE 
NEXTA: LCALL  DISPLAY                 ;显示定时时间
        JB      P3.1NEXTA                 ;扫描键盘,重新设置定时时间
        LCALL  DISPLAY
        JB     P3.1,NEXTA
LD1B   LCALL  DISPLAY
        JNB    P3.1,LD11B
        LCALL  SEARCH
        MOV    3DH,3BH
        MOV    3CHM3AH
        LCALL  CHANGE
        MOV    31H,#02H
        MOV    29H,3BH
LPOB:  JB     P3.0,NEXTB
        LCALL  DISPLAY
        JB      P3.0,LPOB
LP1B: LCALL  DISPLAY
        JNB    P3.0,LP1B
        MOV   A,29H
        ADD   A,#01H
        DA     A
        MOV   29H,A
        SJMP   LO1B
NEXTB:LCALL  DISPLAY
        JB      P3.1,L1B
        LCALL  DISPLAY
        JB      P3.1,NEXTB
LD1B: LCALL  DISPLAY
        JNB     P3.1,LD1B
        MOV    29H,3AH
        DJNZ    31H,LO1B
        SJMP    LLB
LO1B: MOV    A,31H
        CJNE    A,#02H,LO2B
        MOV    A,29H
        CJNE    A,#24H,LA1B       ;控制设置的小时在0~23之间循环
        MOV    29H,#00H
LA1B:  MOV    3BH,29H
        MOV    3DH,3BH
        LCALL  CHANGE
        SJMP   L1B
LO2B: MOV   A,29H
        CJNE   A,#60H,LA2B         ;控制设置的分在0~59之间循环
        MOV    29H,#00H 
LA2B: MOV    3AH,29H
        MOV    3CH,3AH
        LCALL  CHANGE
L1B:   MOV    A,31H
        CJNE    A,#00H,LP0B
LLB:  LCALL  WRIT                  ;存储当前设置的定时时间
        INC    39H
        MOV   A,39H
        CJNE   A,#6,PA0            ;若设置的定时时间抄过5次,结束设置
        SJMP   ET
PA0:   LIMP   PP0
ET:    POP    PSW                   ;恢复现场
        POP    B
        POP    A
        MOV   TH1,#3CII             ;重装定时/计数器1的计数器、初值
        MOV   TL1,  #0B0H
        SETB   TR1	                  ;启动定时/计算器1
        SETB   ET1	                  ;开中断      
        SETB   PT1
        SETB   EX0
        SETB   EX1
        CLR    TR0
        CLR    ET0
        RET1	                        ;中断返回

WRIT: CLR     RS1                  ;存储设置的定时时间子程序
        SETB    RS0
        MOV     A,39H
        MOV     B,#3
        MUL     AB
        ADD     A,#46H
        MOV     R1,A
        MOV     R0,#39H
        MOV    R2,#3
MORE:MOV   A,@R0
        MOV    @R1,A	             ;定时时间存储在49H为首的地址的单元中 
        INC     R0          
        INC     R1
        DJNZ    R2,MORE
        RET
SEARCH:CLR    RS1                  ;读定时时间子程序
        SETB    RS0
        MOV    A,39H
        MOV     B,#3
        MUL     AB
        ADD    A,#46H
        MOV    R1,A
        MOV    R0,#39H
        MOV    R2,#2
        INC     R0
        INC     R1
MORE1MOV    A,@R1         ; 读出定时时间,并送到3AH,3BH单元             MOV     @RO,A
        INC     R0
        INC     R1
        DJNZ    R2,MORE1
        RET


INTA:   SETB    P3.0                 ;语音录入,播放中断子程序
        SETB    P3.1
        CLR	TR1
        CLR     ET1
        CLR     EX0
        CLR     EX1  
        PUSH    A
        PUSH    B
        PUSH    PSW
        JB      P3.4,RECORD
        LJMP    PLAY
;录音子程序
RECORD:MOV   3EH,#01H
RECORD:MOV   3CH,3EH
         MOV    3DH,#0AFH
         LCALL  CHANGE
NEXA:  LCALL  DISPLAY                ;显示录入语音的顺序号
         JB      P3.1,NEXA
         LCALL  DISPLAY
         JB      P3.1,NEXA
         MOV    A,3EH
         CJNE    A,#0H,TRY1           ;控制从第一个定时时间开始录音
         LJMP   REC1
TRY1:  CJNE   A,#02H,TRY2
        LJMP    REC2
TRY2:  CJNE   A,#03H,TRY3
        LJMP    REC3
TRY3:  CJNE   A,#04H,TRY4
        LJMP    REC4
TRY4:  CJNE   A,#05H,TRY5
        LJMP    REC5
TRY5:  LJMP   ETB
REC1:  MOV   58H,#40H           ;第一段录入语音存放的首地址为40H
        LCALL  CLRPO                 ;控制第一段语音录入
REC11: LACLL  RECM
        CINE    A,#48H,REC11
        LCALL  CLRP0
        INC     3EH
        SJMP    NE1
REC2:   MOV    58H,#48H           ;第二段录入语音存放的首地址为48H
	    LCALL   CLRP0                 ;控制第二段语音录入
REC22:  LCALL  RECM
        CJNE    A,#50H,REC22
        LCALL   CLRP0
        INC     3EH
        SJMP    NE1
REC3:   MOV    58H,#50H  	     ;第三段录入语音存放的首地址为50H
        LCALL   CLRP0                 ;控制第三段语音录入
REC33:  LACLL  RECM
        CJNE    A,#58H,REC33
        LCALL  CLRP0
        INE     3EH
        SJMP    NE1
REC4:    MOV     58H,#58H
         LCALL   CLRP0
REC44:   LCALL   RECM
         CJNE    A,#50H,REC44
         LCALL   CLRP0
         INC     3EH
         SJMP    NE1
REC5:    MOV    58H,#60H         ;第五段录入语音存放的首地址为60H
         LCALL   CLRP0
REC55:   LCALL   RECM
         CJNE     A,#68H,REC55
         LCALL   CLRP0
         JNC      3EH
         SJMP     NE2
NE1:    JNB     P3.1,RECORD2       
         LCALL   DISPLAY
         JNB      P3.1,NE1
         SJMP     NE1
NE2:    JB       P3.1,ETB1
           LJMP     ETB
ETB1:    LCALL   DISPLAY
           JNB      P3.1,NE2
           SJMP     NE2
RECORD2:JNB      P3.1,RECORDX
           LJMP     RECODR1               ;录音循环控制
RECORDX:LCALL   DISPLAY
           SJMP     RECORD2
;放音控制子程序
PLAY:   SETB    P3.4
         MOV     A,39H              ;39H为放音顺序号存储单元
         CJNE     A,#01H,TPL1       ;顺序放音控制
         SJMP     PLAY1
TPL1:   CJNE    A,#02H,TPL2
         SJMP     PLAY2   
TPL2:   CJNE    A,#03H,TPL3
         SJMP     PLAY3   
TPL3:   CJNE    A,#04H,TPL4
         SJMP     PLAY4  
TPL4:   CJNE    A,#05H,TPL5
         SJMP     PLAY5   
TPL5:   LJMP    ETB
PLAY1: MOV     58H,#80H            ;第一段放音的首地址为80H
         LCALL   CLRP0
PLAY11:LACLL   PLAYM
         CJNE     A,#88H,PLAY11
         LCALL   CLRP0
         LJMP     ETB
PLAY2:  MOV    58H,#88H           ;第二段放音的首地址为88H
         LCALL   CLRP0
PLAY22: LCALL  PLAYM
         CJNE     A,#90H,PLAY22
         LCALL   CLRP0
         LJMP     ETB
PLAY3:  MOV    58H,#90H
         LCALL   CLRP0
PLAY33;LCALL   PLAYM
         CJNE     A,#98H,PLAY33
         LCALL   CLRP0
         LJMP     ETB
PLAY4: MOV     58H,#98H
         LCALL   CLRP0
PLAY44:LCALL   PLAYM
         CJNE     A,#0A0H,PLAY44
         LCALL   CLRP0
         LJMP     ETB
PLAY5: MOV     58H,#0A0H        ;第五段放音的首地址为A0H
         LCALL   CLRP0
PLAY55:LCALL   PLAYM
         CJNE     A,#0A8H,PLAY55
         LCALL   CLRP0
ETB:    MOV    3CH,33H
         MOV     3DH,34H
         POP      PSW
         POP      B
	     POP      A
	     MOV    TH1,#3CH
	     MOV    TH2,#0B0H
	     SETB	  TR1
	     SETB    ET1
	     SETB    PT1
	     SETB    EX0
	     SETB    EX1
	     SETB    EA 
	    RET1

RECM:  MOV    3CH,#0FCH             ;录音控制子程序
          MOV    3DH,#0FFH
          LCALL  CHANGE
          LCALL  DISPLAY
          CLR     P2.6
          MOV    A,58H
          ORL     A,#0C0H
          MOV    P0,A
          SETB    P2.6
          NOP
          NOP
          CLR     P2.6
          MOV    A,58H
          MOV    P0,A
          SETB    P2.6
          LCALL  DEL500
          INC     58,H
          MOV    A,58H
          RET
PLAYM: MOV    3CH,39H               ;放音控制子程序
          MOV    3DH,#0AAH
          LCALL  CHANGE
          CLR     P2.6
          MOV    A,58H
          ORL     A,#0C0H
          MOV    P0,A
          SETB    P2.6
          NOP
          NOP
          CLER    P2.6
          MOV    A,58H
          MOV    P0,A
          SETB    P2.6
          LCALL  DEL500
          INC     58H
          MOV    A,58H
          RET
CLRP0:  CLR     P2.6	
          MOV    P0,#0C0H
          SETB    P2.6
          LCALL  DISPLAY
          RET
DEL500:  SETB   RS1
          SETB    RS0
          MOV    R5,#74H
LLOP:   LCALL  DISPLAY
          DJNZ    R5,LLOP
          RET


⌨️ 快捷键说明

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