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

📄 audio.asm

📁 51单片机实现语音与超声波系统
💻 ASM
字号:
         SEGNUM EQU 40H
         CS273  EQU 0CFA0H
         CS244  EQU 0CFA8H
         TEST   BIT 20H
         
         CSEG AT 0000H
	     LJMP START
	     
         CSEG AT 4100H
START:   MOV  DPTR,#0CFE9H ;8279命令字
	     MOV A,#0D1H       ;清显示
	     MOVX @DPTR,A
LOOP1:   MOV  DPTR,#0CFE9H
         MOVX A,@DPTR
	     ANL A,#0FH
	     JZ LOOP1          ;有键按下?没有则循环等待
;	     MOV A,#0A0H       ;显示\消隐命令
;	     MOVX @DPTR,A
	     MOV A,#40H        ;读FIFO命令
	     MOVX @DPTR,A
	     MOV DPTR,#0CFE8H  ;读键值
	     MOVX A,@DPTR
         MOV  R1,A         ;保存键值
         
         CLR  C
         SUBB A, #0C6H
         JNC  LOOP1
         MOV  A, R1
         CLR  C
         SUBB A, #0C0H
         MOV  B, #03H
         MUL  AB
         MOV  DPTR, #KPRG
         JMP  @A+DPTR
KPRG:    LJMP KPRG0
         LJMP KPRG1
         LJMP KPRG2
         LJMP KPRG3
         LJMP KPRG4
         LJMP KPRG5
         
KPRG0:   CLR  A
         MOV  SEGNUM, A
         MOV  DPTR, #CS273  
         MOV  A, #7FH      ;O0表示PD,O1表示CE,O7表示CA0
         MOVX @DPTR, A
         LCALL DEL20MS
         MOV  A, #7EH
         MOVX @DPTR, A
         CLR  TEST
         MOV  R2, #00H
         LCALL DISP
         LJMP  LOOP1
         
KPRG1:   MOV   DPTR, #CS244
         MOVX  A, @DPTR
         JB    ACC.7, PLAY1   ;IN7为录放选择
         LJMP  LOOP1
PLAY1:   MOV  DPTR, #CS273  
         MOV  A, #7FH    
         MOVX @DPTR, A
         LCALL DEL20MS
         MOV  A, #7EH
         MOVX @DPTR, A
         MOV  A, #7CH
         MOVX @DPTR, A
         NOP
         NOP
         MOV  A, #7EH
         MOVX @DPTR, A
         MOV  R2, #01H
         LCALL  DISP
         LJMP LOOP1
         
KPRG2:   MOV   DPTR, #CS244
         MOVX  A, @DPTR
         JB    ACC.7, PLAY2   ;IN7为录放选择
         LJMP  LOOP1
PLAY2:   MOV  DPTR, #CS273  
         MOV  A, #0FFH    
         MOVX @DPTR, A
         LCALL DEL20MS
         MOV  A, #0FEH
         MOVX @DPTR, A 
         MOV  A, #0FCH
         MOVX @DPTR, A
         NOP
         NOP
         MOV  A, #7EH
         MOVX @DPTR, A          
WAIT1:   MOV  DPTR, #CS244
         MOVX A, @DPTR
         JB   ACC.0, WAIT1
         MOV  DPTR, #CS273
         MOV  A, #7CH
         MOVX @DPTR, A
         NOP
         NOP
         MOV  A, #7EH
         MOVX @DPTR, A
         MOV  R2, #02H
         LCALL  DISP
         LJMP LOOP1 
         
KPRG3:   MOV   DPTR, #CS244
         MOVX  A, @DPTR
         JB    ACC.7, PLAY3   ;IN7为录放选择
         LJMP  LOOP1
PLAY3:   MOV  DPTR, #CS273  
         MOV  A, #0FFH    
         MOVX @DPTR, A
         LCALL DEL20MS
         MOV  A, #0FEH
         MOVX @DPTR, A 
         MOV  A, #0FCH
         MOVX @DPTR, A
         NOP
         NOP
         MOV  A, #0FEH
         MOVX @DPTR, A          
WAIT2:   MOV  DPTR, #CS244  ;IN0表示EOM
         MOVX A, @DPTR
         JB  ACC.0, WAIT2
         MOV  DPTR, #CS273
         MOV  A, #0FCH
         MOVX @DPTR, A
         NOP
         NOP
         MOV  A, #07EH
         MOVX @DPTR, A
WAIT3:   MOV  DPTR, #CS244  ;IN0表示EOM
         MOVX A, @DPTR
         JB  ACC.0, WAIT3 
         MOV  DPTR, #CS273
         MOV  A, #7CH
         MOVX @DPTR, A
         NOP
         NOP
         MOV  A, #7EH
         MOVX @DPTR, A        
         MOV  R2, #03H
         LCALL  DISP
         LJMP LOOP1 

KPRG4:   MOV   DPTR, #CS244
         MOVX  A, @DPTR
         JNB    ACC.7, REC1   ;IN7为录放选择
         LJMP  LOOP1        
REC1:    CPL   TEST
         MOV  DPTR, #CS273
         MOV  A, #7CH
         MOVX @DPTR, A
         NOP
         NOP
         MOV  A, #7EH
         MOVX @DPTR, A
         JNB   TEST, REC2         
         LJMP  LOOP1
REC2:    INC   SEGNUM
         MOV   A, SEGNUM
         MOV   R2, A
         LCALL DISP
         LJMP  LOOP1
         
KPRG5:   MOV   DPTR, #CS244
         MOVX  A, @DPTR
         JB    ACC.7, PLAY5   ;IN7为录放选择
         LJMP  LOOP1
PLAY5:   MOV  DPTR, #CS273  
         MOV  A, #7FH    
         MOVX @DPTR, A
         LCALL DEL20MS
         MOV  A, #7EH
         MOVX @DPTR, A 
         MOV  A, #7CH
         MOVX @DPTR, A
         NOP
         NOP
         MOV  A, #7EH
         MOVX @DPTR, A 
         MOV  R2, #01H
         LCALL DISP         
WAIT4:   MOV  DPTR, #CS244
         MOVX A, @DPTR
         JB   ACC.0, WAIT4
         LCALL DEL20MS
         MOV  DPTR, #CS273
         MOV  A, #7CH
         MOVX @DPTR, A
         NOP
         NOP
         MOV  A, #7EH
         MOVX @DPTR, A
         MOV  R2, #02H
         LCALL  DISP
WAIT5:   MOV  DPTR, #CS244
         MOVX A, @DPTR
         JB   ACC.0, WAIT5
         LCALL DEL20MS
         MOV  DPTR, #CS273
         MOV  A, #7CH
         MOVX @DPTR, A
         NOP
         NOP
         MOV  A, #7EH
         MOVX @DPTR, A
         MOV  R2, #03H
         LCALL  DISP 
WAIT6:   MOV  DPTR, #CS244
         MOVX A, @DPTR
         JB   ACC.0, WAIT6
         LCALL DEL20MS
         MOV  DPTR,#0CFE9H   ;有键按下?  
         MOVX A,@DPTR
	     ANL A,#0FH
	     JZ  PLAY5                  
         LJMP LOOP1 
                                               
DEL20MS: MOV  R6, #20
DELL1:   MOV  R7, #250
DELL2:   NOP
         NOP
         DJNZ R7, DELL2
         DJNZ R6, DELL1
         RET  
                

DISP:    MOV DPTR,#0CFE9H  ;写显示RAM命令
	     MOV A,#80H        ;选中LED1
	     MOVX @DPTR,A
	     MOV  A, R2      
         MOV DPTR,#TAB
	     MOVC A,@A+DPTR    ;取段显码
	     MOV DPTR,#0CFE8H  ;写显示RAM
	     MOVX @DPTR,A
	     RET
	     
TAB:     DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H  ;段显码表
         db 7fh,6fh,77h,7ch,39h,5eh,79h,71h
END

⌨️ 快捷键说明

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