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

📄 recplay.asm

📁 录音机控制51源程序
💻 ASM
📖 第 1 页 / 共 3 页
字号:
reset1:            lcall   open_dct           ;启动电磁铁
                   lcall   wait_400ms
                   djnz    r7,reset0
                   lcall   stop           ;动作6次不成功则启动stop退出
                   sjmp    reset0a
;
;
                   nop
		   nop
		   ljmp    start
		   nop
		   nop
;
play:              clr     moto_on
                   lcall   wait_100ms
                   mov     a,ff_old
                   cjne    a,#00h,play0
                   lcall   open_dct        ;stop->play
                   sjmp    play4
                   ;
play0:             cjne    a,#01h,play1    ;play->play
                   sjmp    play4
                   ;
play1:             cjne    a,#02h,play2
                   lcall   open_dct        ;ff->play
                   lcall   wait_130ms
                   lcall   open_dct
                   sjmp    play4
                   ;
play2:             cjne    a,#03h,play3
                   lcall   open_dct        ;rew->play
                   lcall   wait_130ms
                   lcall   open_dct
                   sjmp    play4
                   ;
play3:             lcall   open_dct        ;stop->play
play4:             lcall   wait_300ms
                   mov     ff_old,#01h
                   setb    fang
                   mov     play_m,#0       ;退出暂停状态
                   ret
;
;
                   nop
		   nop
		   ljmp    start
		   nop
		   nop
;
ff:                clr     moto_on
                   lcall   wait_100ms
                   mov     a,ff_old
                   cjne    a,#00h,ff_0
                   lcall   open_dct        ;stop->ff
                   lcall   wait_450ms
                   lcall   open_dct
                   sjmp    ff_4
                   ;
ff_0:              cjne    a,#01h,ff_1
                   lcall   open_dct        ;play->ff
                   sjmp    ff_4
                   ;
ff_1:              cjne    a,#02h,ff_2
                   sjmp    ff_4
                   ;
ff_2:              cjne    a,#03h,ff_3
                   lcall   open_dct        ;rew->ff
                   lcall   wait_130ms
                   lcall   open_dct
                   lcall   wait_450ms
                   lcall   open_dct
                   sjmp    ff_4
                   ;
ff_3:              lcall   open_dct       ;stop->ff
                   lcall   wait_450ms
                   lcall   open_dct
ff_4:              lcall   wait_300ms
                   mov     ff_old,#02h
                   setb    fang
                   mov     play_m,#0       ;退出暂停状态
                   ret
;
;
                   nop
		   nop
		   ljmp    start
		   nop
		   nop
;
rew:               clr     moto_on
                   lcall   wait_100ms
                   mov     a,ff_old
                   cjne    a,#00h,rew0
                   lcall   open_dct        ;stop->rew
                   lcall   wait_450ms
                   lcall   open_dct
                   lcall   wait_35ms
                   lcall   open_dct
                   sjmp    rew4
                   ;
rew0:              cjne    a,#01h,rew1      ;play_>rew
                   lcall   open_dct
                   lcall   wait_35ms
                   lcall   open_dct
                   sjmp    rew4
                   ;
rew1:              cjne    a,#02h,rew2      ;ff->rew
                   lcall   open_dct
                   lcall   wait_130ms
                   lcall   open_dct
                   lcall   wait_450ms
                   lcall   open_dct
                   lcall   wait_35ms
                   lcall   open_dct
                   sjmp    rew4
                   ;
rew2:              cjne    a,#03h,rew3      ;rew->rew
                   sjmp    rew4
                   ;
rew3:              lcall   open_dct        ;stop->rew
                   lcall   wait_450ms
                   lcall   open_dct
                   lcall   wait_35ms
                   lcall   open_dct
rew4:              lcall   wait_300ms
                   mov     ff_old,#03h
                   clr     fang
                   mov     play_m,#0       ;退出暂停状态
                   ret
;
stop:              mov     r4,#04h
                   jb      mode_sw,stop_d2
stop_d0:           lcall   open_dct
                   lcall   wait_190ms
                   djnz    r4,stop_d1
                   sjmp    stop_d2
stop_d1:           jnb     mode_sw,stop_d0
stop_d2:           lcall   wait_110ms
                   setb    moto_on
                   lcall   wait_300ms
                   mov     ff_old,#00h
                   clr     fang
                   mov     play_m,#0       ;退出暂停状态
                   ret
                   ;
;
                   nop
		   nop
		   ljmp    start
		   nop
		   nop
;
led_dis:           mov     a,play_mem
                   cjne    a,#01h,led_dis1
                   cjne    a,play_m,rec_led2   ;录音
rec_led1:          jb      san_bit,rec_led2
                   setb    rec_led
                   sjmp    rec_led3
rec_led2:          clr     rec_led
rec_led3:          setb    play_led
                   setb    rew_led
                   setb    ffw_led
                   ret
                   ;
led_dis1:          cjne    a,#02h,led_dis2
                   cjne    a,play_m,play_led2   ;放音
play_led1:         jb      san_bit,play_led2
                   setb    play_led
                   sjmp    rec_led3
play_led2:         clr     play_led
play_led3:         setb    rec_led
                   setb    rew_led
                   setb    ffw_led
                   ret
                   ;

led_dis2:          cjne    a,#03h,led_dis3
                   clr     ffw_led          ; 快进
                   setb    play_led
                   setb    rew_led
                   setb    rec_led
                   ret
                   ;

led_dis3:          cjne    a,#04h,led_dis4
                   clr     rew_led          ;快倒
                   setb    play_led
                   setb    ffw_led
                   setb    rec_led
                   ret
                   ;

led_dis4:          setb    rew_led          ;停止
                   setb    play_led
                   setb    ffw_led
                   setb    rec_led
                   ret

;
;
                   nop
		   nop
		   ljmp    start
		   nop
		   nop
;
                   ;
transram:	   lcall   wrcom     ;lcd数据传送
		   ret
;
lcdreset:	   setb    cspin         ;lcd复位
		   setb    clkpin
		   setb    dipin
		   mov	   lcdmm,#01h	 ;sys en
		   lcall   lcdcm
		   mov	   lcdmm,#03h	 ;lcd on
		   lcall   l_cmd
		   mov	   lcdmm,#04h	 ;timer dis
		   lcall   l_cmd
		   mov	   lcdmm,#05h	 ;wdt  dis
		   lcall   l_cmd
		   mov	   lcdmm,#08h	 ;tone dis
		   lcall   l_cmd
		   mov	   lcdmm,#18h	 ;rc256k
		   lcall   l_cmd
		   mov	   lcdmm,#29h	 ;1/3 bias 4
		   lcall   l_cmd
		   mov	   lcdmm,#80h	 ;irq dis
		   lcall   l_cmd
		   mov	   lcdmm,#0e3h	  ;normal
		   lcall   l_cmd
		   setb    cspin
		   nop
		   setb    clkpin
		   nop
		   setb    dipin
		   ret
;
lcdcm:		   clr	    cspin	 ;写入命令字
		   mov	    a,#80h
		   mov	    r7,#03h
lcm1:		   clr	    clkpin
		   rlc	    a		 ;写入100代码
		   mov	    dipin,c
		   nop
		   setb     clkpin
		   nop
		   nop
		   nop
		   djnz     r7,lcm1
		   lcall    l_cmd
		   ret
		   ;
l_cmd:		   mov	    r7,#08h
		   mov	    a,lcdmm	  ;写入命令代码
lcm2:		   clr	    clkpin
		   rlc	    a
		   mov	    dipin,c
		   nop
		   setb     clkpin
		   nop
		   nop
		   nop
		   djnz     r7,lcm2
		   nop
		   nop
		   clr	    clkpin
		   nop
		   clr	    dipin
		   nop
		   nop
		   setb     clkpin
		   nop
		   nop
		   setb     dipin
		   ret
;
lwr3_1: 	   clr	    clkpin
		   rrc	    a
		   mov	    dipin,c
		   nop
		   setb     clkpin
		   nop
		   nop
		   nop
		   djnz     r7,lwr3_1
		   ret
;
lwr3_2: 	   clr	    clkpin
		   rlc	    a
		   mov	    dipin,c
		   nop
		   setb     clkpin
		   nop
		   nop
		   nop
		   djnz     r7,lwr3_2
		   ret
;
wrcom:		   clr	    cspin	  ;写入数据
		   mov	    r0,#60h
		   mov	    r7,#03h
		   mov	    a,#0a0h
		   lcall    lwr3_2	;写入101代码
		   ;
		   mov	    r7,#06h
		   mov	    a,#00h
		   rlc	    a
		   rlc	    a
		   lcall    lwr3_2     ;写入地址
		   ;
		   mov	    r7,#08h
		   mov	    a,60h	 ;写入双数据60h
		   lcall    lwr3_1
		   ;
		   mov	    r7,#04h
		   mov	    a,61h	 ;写入单数据61h.l
		   anl	    a,#0fh
		   lcall    lwr3_1
		   ;
		   mov	    r0,#62h
		   mov	    r6,#08h
lwr4_1: 	   mov	    r7,#08h
		   mov	    a,@r0	;写入双数据62-69h
		   lcall    lwr3_1
		   inc	    r0
		   djnz     r6,lwr4_1
		   ;
		   mov	    r7,#04h
		   mov	    a,61h	 ;写入单数据61h.h
		   swap     a
		   anl	    a,#0fh
		   lcall    lwr3_1
		   ;
		   mov	    r0,#6ah
		   mov	    r6,#02h
lwr4_2: 	   mov	    r7,#08h
		   mov	    a,@r0	;写入双数据6a-6bh
		   lcall    lwr3_1
		   inc	    r0
		   djnz     r6,lwr4_2
		   setb     cspin
		   nop
		   setb     dipin
		   ret
;                  笔画对应
                   ;a1:60 01    a2:60 02    a3:60 04
                   ;b1:60 10    b2:60 20    b3:60 40
                   ;c1:61 01    c2:61 02    c3:61 04
                   ;d1:62 01    d2:62 02    d3:62 04
                   ;e1:62 10    e2:62 20    e3:62 40
                   ;f1:63 10    f2:63 20    f3:63 40
                   ;g1:63 01    g2:63 02    g3:63 04
lcd_data:          mov	    60h,#00h
		   mov	    61h,#00h
		   mov	    62h,#00h
		   mov	    63h,#00h
		   mov	    64h,#00h
		   mov	    65h,#00h
		   mov	    66h,#00h
		   mov	    67h,#00h
		   mov	    68h,#00h
		   mov	    69h,#00h
		   mov	    6ah,#00h
		   mov	    6bh,#00h
                   mov      a,count3_t          ;高位
                   mov      dptr,#labk
                   movc     a,@a+dptr
                   mov      22h,a
                   jnb      10h,jjj1            ;a
                   mov      a,60h
                   orl      a,#01h
                   mov      60h,a
jjj1:              jnb      11h,jjj2            ;b
                   mov      a,60h
                   orl      a,#10h
                   mov      60h,a
jjj2:              jnb      12h,jjj3            ;c
                   mov      a,61h
                   orl      a,#01h
                   mov      61h,a
jjj3:              jnb      13h,jjj4            ;d
                   mov      a,62h
                   orl      a,#01h
                   mov      62h,a
jjj4:              jnb      14h,jjj5            ;e
                   mov      a,62h
                   orl      a,#10h
                   mov      62h,a
jjj5:              jnb      15h,jjj6            ;f
                   mov      a,63h
                   orl      a,#10h
                   mov      63h,a
jjj6:              jnb      16h,jjj7            ;g
                   mov      a,63h
                   orl      a,#01h
                   mov      63h,a
jjj7:
                   mov      a,count2_t          ;中位
                   mov      dptr,#labk
                   movc     a,@a+dptr
                   mov      22h,a
                   jnb      10h,ljj1            ;a
                   mov      a,60h
                   orl      a,#02h
                   mov      60h,a
ljj1:              jnb      11h,ljj2            ;b
                   mov      a,60h
                   orl      a,#20h
                   mov      60h,a
ljj2:              jnb      12h,ljj3            ;c
                   mov      a,61h
                   orl      a,#02h
                   mov      61h,a
ljj3:              jnb      13h,ljj4            ;d
                   mov      a,62h
                   orl      a,#02h
                   mov      62h,a
ljj4:              jnb      14h,ljj5            ;e
                   mov      a,62h
                   orl      a,#20h
                   mov      62h,a
ljj5:              jnb      15h,ljj6            ;f
                   mov      a,63h
                   orl      a,#20h
                   mov      63h,a
ljj6:              jnb      16h,ljj7            ;g
                   mov      a,63h
                   orl      a,#02h
                   mov      63h,a
ljj7:
                   mov      a,count1_t          ;低位
                   mov      dptr,#labk
                   movc     a,@a+dptr
                   mov      22h,a
                   jnb      10h,kjj1            ;a
                   mov      a,60h
                   orl      a,#04h
                   mov      60h,a
kjj1:              jnb      11h,kjj2            ;b
                   mov      a,60h
                   orl      a,#40h
                   mov      60h,a
kjj2:              jnb      12h,kjj3            ;c
                   mov      a,61h
                   orl      a,#04h
                   mov      61h,a
kjj3:              jnb      13h,kjj4            ;d
                   mov      a,62h
                   orl      a,#04h
                   mov      62h,a
kjj4:              jnb      14h,kjj5            ;e
                   mov      a,62h
                   orl      a,#40h
                   mov      62h,a
kjj5:              jnb      15h,kjj6            ;f
                   mov      a,63h
                   orl      a,#40h
                   mov      63h,a
kjj6:              jnb      16h,kjj7            ;g
                   mov      a,63h
                   orl      a,#04h
                   mov      63h,a
kjj7:              ret

;
;
labk:		   db	   3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h,40h,00h
                   ;    0(00),1(01),2(02),3(03),4(04),5(05),6(06),7(07),8(08),9(09),A(0a),B(0b),C(0c),D(0d),E(0e),F(0f),-(10),(11)

		   end

⌨️ 快捷键说明

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