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

📄 text1.asm

📁 带存储功能的电子琴的源程序
💻 ASM
字号:
PORT1 EQU P1
PORT2 EQU P2
      ORG 0H
	  SJMP MAIN
	  ORG 0BH
	  LJMP TIME0
	  ORG 1BH
	  LJMP TIME1
	  ORG 30H
MAIN:CLR TR0
     CLR TR1
	 MOV SP,#4FH
	 MOV R0,#100
	 CLR P3.4
	 LCALL DELAY5
	 MOV 9H,#0
	 MOV 0AH,#0
	 MOV 0BH,#0
     MOV 0CH,#0
     MOV TMOD,#11H
	 MOV IE,#8AH
	 MOV 0DH,#88H
XIAN:JB P3.2,QT1
     SETB P3.4
	 LCALL DELAY1
	 LCALL DELAY1
	 JNB P3.2,$
	 LCALL DELAY1
	 LCALL DELAY1
	 LCALL SAO
	 JZ MAIN
	 MOV 0DH,A
	 LJMP SING0
 QT1:JB P3.3,QT3
     SETB P3.4
	 LCALL DELAY1
	 LCALL DELAY1
	 JNB P3.3,$
	 LCALL DELAY1
	 LCALL DELAY1
	 LCALL SAO
	 CJNE A,#OBH,QT11
	 LJMP MAIN
QT11:JC MAIN
     CJNE A,#OCH,M1
	 LCALL DELAY1
	 LCALL DELAY1
	 SJMP BIAN
  M1:LCALL DELAY1
     LCALL DELAY1
	 LCALL RWX80
	 SJMP MAIN
BIAN:MOV 0DH,#ODOH
     MOV 0BH,#0
	 LJMP LOOP
 QT3:LJMP XIAN
LOOP:CLR TR0
     CLR TR1
 AAA:JB P3.3,LOOP4
     LCALL DELAY1
	 LCALL DELAY1
	 MOV 0CH3,#0
	 LCALL WBAY
	 LCALL DELAY1
	 MOV 0DH,#12
	 LJMP SING0
LOOP4:MOV RO,#4
      MOV R3,#11101111B
	  MOV R2,#11111111B
NLINE:MOV A,R3
      MOV PORT1,A
	  MOV A,PORT1
	  ORL A,#0F0H
	  CJNE A,#0FFH,KEYIN
	  LCALL DELAY1
	  LCALL DELAY1
	  MOV A,R3
	  RL A
	  MOV R3,A
	  DJNZ R0,NLINE
	  LJMP LOOP
KEYIN:LCALL DELAY1
      LCALL DELAY1
	  MOV   R2,A
	  LCALL DELAY1
	  LCALL TRANF
	  ANL A,#0FH
	  SWAP A
	  MOV 09H,A
	  SWAP A
	  CJNE A,#0,ZZZ
	  CLR TR1
	  SETB TR0
	  LJMP ZZZZ
  ZZZ:DEC A
      MOV 22H,A
	  CLR C 
	  RLC A
	  PUSH DPH
	  PUSH DPL
	  MOV DPTR,#TABLE
	  MOVC A,@A+DPTR
	  MOV TH1,A
	  MOV 21H,A
	  MOV A,22H
	  CLR C RLC A 
	  INC A 
	  MOVC A,@A+DPTR
	  POP DPL
	  POP DPH
	  MOV TL1,A
	  MOV 20H,A
	  MOV TH0,#0C2H
	  MOV TL0,#0F6H
	  SETB TR0
	  SETB TR1
 ZZZZ:LCALL NOPEN
      CLR TR0
	  CLR TR1
	  MOV A,0AH
	  CLR C
	  RRC A 
	  CLR C
	  RRC A
	  CLR C
	  RRC A
	  CJNE A,#0FH,NODE
	  SJMP DDD
NODE: JC DDD
      MOV A,#0FH
  DDD:ORL 09H,A
      MOV 0AH,#0
  WWW:MOV A,09H
      MOV 0CH,A
	  LCALL DELAY5
	  INC 0BH
	  LJMP LOOP
DELAY1:MOV R7,#30
       MOV R6,#0
    S1:DJNZ R6,$
	   DJNZ R7,S1
	   RET
DELAY5:MOV R7,#10
       MOV R6,#0
	S5:DJNZ R6,$
	   DJNZ R7,S5
	   RET
 NOPEN:NOV A,PORT1
       ORL A,#0F0H
	   CJNE A,#0FFH,NOPEN
	   LCALL DELAY1
	   LCALL DELAY1
	   RET
 TRANF:MOV B,#0
       MOV A,R2
	C1:RRC A
	   JNC C2
	   INC B 
	   INC B 
	   INC B
	   INC B
	   LJMP C1
	C2:MOV A,R3
	   RR A 
	   RR A 
	   RR A 
	   RR A
	C3:RRC A
	   JNC C4
	   INC B
	   LJMP C3
	C4:MOV A,B
	   RET
 TIME0:INC 0AH
       MOV TH0,#0C2H
	   MOV TL0,#0F6H
	   RET1
 SING0:
       MOV 30,#00H
 NEXT: MOV A,0DH
       CJNE A,#01H,NN1
	   MOV DPTR,#TABLE1
	   LJMP WW
   NN1:CJNE A,#02H,NN2
       MOV DPTR,#TABLE2
	   LJMP WW
   NN2:CJNE A,#03H,NN3
       MOV DPTR,#TABLE3
	   LJMP WW
   NN3:CJNE A,#04H,NN4
       MOV DPTR,#TABLE4
	   LJMP WW
   NN4:CJNE A,#05H,NN5
       MOV DPTR,#TABLE5
	   LJMP WW
   NN5:CJNE A,#06H,NN6
       MOV DPTR,#TABLE6
	   LJMP WW	    
   NN6:CJNE A,#07H,NN7
       MOV DPTR,#TABLE7
	   LJMP WW	  	  	   
   NN7:CJNE A,#08H,NN8
       MOV DPTR,#TABLE8
	   LJMP WW	  	  	   
   NN8:CJNE A,#09H,NN9
       MOV DPTR,#TABLE9
	   LJMP WW	  	  	   
   NN9:CJNE A,#010,NN10
       MOV DPTR,#TABLE10
	   LJMP WW
  NN10:CJNE A,#011,NN11
       MOV DPTR,#TABLE11
	   LJMP WW
  NN11:CJNE A,#012,NN12
       MOV 0EH,#0A1H
	   MOV 0BH,#0H
	   LJMP WW
  NN12:CJNE A,#013,NN13
       MOV 0EH,#0A3H
	   MOV 0BH,#0H
	   LJMP MAIN
  NN13:CJNE A,#014,NN14
       MOV 0EH,#0A5H
	   MOV 0BH,#0H
	   LJMP MAIN
  NN14:CJNE A,#015,NN
       MOV 0EH,#0A7H
	   MOV 0BH,#0H
	   LJMP MAIN
	NN:LCALL RBAY
   NNT:MOVA,R6
       LJMP IIC
	WW:MOV A,30H
	   JZ WW0
	   MOVC A,@A+DPTR
	   SJMP IIC
   WW0:MOVC A,@A+DPTR
       MOV 30H,#1
	   MOV 31H,A
	   SJMP WW
   IIC:MOV R2,A
       JZ ENDF
	   ANL A,#OFH
	   MOV R5,A
	   MOV A,R2
	   SWAP A
	   ANL A,#OFH
	   JNZ SING
	   CLR TR1
	   SJMP DLY1
  SING:DEC A
       PUSH A
	   MOV A,0DH
	   CJNE A,#11,BD
	   POP A
	   SJMP DE
	BD:POP A
	   JNC BD0
	DE:ADD A,31H
   BD0:MOV 22H,A
       RL A
	   MOV DPTR,#TABLE
	   MOVC A,@A+DPTR
	   MOV TH1,A
	   MOV 21H,A
	   MOV A,22H
	   RL A 
	   INC A
	   MOVC A,@A+DPTR
	   MOV TL1,A
	   MOV 20H,A
	   SETB TR1
  DLY1:INC R5
       ACALL DELAY
	   INC 30H
	   INC 0BH
	   MOV A,ODH
	   CJNE A,#0BH,NNBD
 NEXT1:LJMP NEXT
  NNBD:JC JNEXT1
       LJMP NN
  ENDF:CLR TR1
       LJMP MAIN
 TIME1:PUSH ACC
       PUSH PSW
	   MOV TL1,20H
	   MOV TH1,21H
	   CPL P3.7
	   POP PSW
	   POP ACC
	   RETI
 DELAY:MOV R7,#125
  DLY2:MOV R4,#02
  DLY3:MOV R3,#248
       DJNZ R3,$
	   DJNZ R4,DLY3
	   DJNZ R7,DLY2
	   DJNZ R5,DELAY
	   RET
 TABLE:DW 63628,63835,64021,64103,64260
       DW 64400,64524,64580,64684
	   DW 94777,64820,64898,64968,65030
	   DW 65058,65110,65157,65178,65217
	   DW 65252,65283
 START:ETB,P3.1
       NOP
	   SETB P3.J0
	   NOP 
	   NOP
	   NOP
	   NOP
	   CLR P3.1
	   NOP
	   NOP
	   NOP
	   NOP
	   CLR P3.0
	   NOP
	   RET
 WRBYT:NOV R3,#8
 WRBYT1:RLC A
        JC WRBYT2
		CLR P3.1
		SETB P3.0
		NOP
		NOP
		NOP
		NOP
		CLR P3.0
		DJNZ R7,WRBYT1
		RET
 WRBYT2:SETB P3.1
        SETB P3.0
		NOP 
		NOP
		NOP
		NOP
		CLR P3.0
		CLR P3.1
		DJNZ R7,WRBYT1
		RET
	STOP:CLR P3.1
	     SETB P3.0
		 NOP
		 NOP
		 NOP
		 NOP
		 SETB P3.1
		 NOP
		 NOP
		 NOP
		 NOP
		 CLR P3.0
		 NOP
		 NOP
		 RET
	TACK:CLR P3.1
	     NOP
		 SETB P3.0
		 NOP
		 NOP
		 NOP
		 NOP
		 CLR P3.0
		 NOP
		 SETB P3.1
		 NOP 
		 RET
   CHACK:SETB P3.1
         SETB P3.0
		 NOP
		 NOV C,P3.1
		 CLR P3.0
		 NOP
		 RET
   RDBYT:MOV R7,#8
   RDBYT1:SETB P3.1
          SETB P3.0
		  MOV C,P3.1
		  MOV A,R6
		  RLC A
		  MOV R6,A
		  CLR P3.0
		  DJNZ R7,RDBYT1
		  RET
   NOTACK:NOP
          SETB P3.1
		  NOP
		  NOP
		  SETB P3.0
		  NOP 
		  NOP
		  NOP
		  CLR P3.0
		  RET
	 WBAY:LCALL START
	      MOV A,#0A0H
		  LCALL WRBYT
		  LCALL TACK
		  MOV A,0BH
		  LCALL WRBYT
		  LCALL TACK
		  MOV A,0CH
		  LCALL WRBYT
		  LCALL TACK
		  LCALL STOP
		  RET
	 RBAY:LCALL START
	      MOV A,#0A0H
		  LCALL WRBYT
		  LCALL TACK
		  MOV A,0BH
		  LCALL WRBYT
		  LCALL TACK
		  LCALL TDBYT
		  LCALL NOTACK
		  LCALL STOP
		  RET
    RWX80:CJNE A,#0DH,M2
	      MOV 0EH,#0A2H
		  SJMP MM
	   M2:CJNE A,#0EH,M3
	      MOV 0EH,#0A4H
		  SJMP MM
	   M3:MOV 0EH,#0A6H
	   MM:MOV 0BH,#0
	      MOV 0CH,#0H
   RWX801:LCALL RKX02
          LCALL WKXO2
		  INC 0BH
		  INC 0BH
		  INC 0BH
		  INC 0BH
		  INC 0CH
		  INC 0CH 
		  INC 0CH
		  INC 0CH
		  MOV A,0CH
		  CJNE A,#0H,RWX801
		  RET
	RKX02:LCALL START
	      MOV A,#0A0H
		  LCALL WRBYT
		  LCALL TACK
		  MOV A,0BH
		  LCALL WRBYT
		  LCALL TACK 
		  LCALL START
		  MOV A,#0A1H
		  LCALL WRBYT
		  LCALL TACK
		  LCALL RDBYT
		  LCALL TACK
		  MOV 10H,R6
		  LCALL RDBYT
		  LCALL TACK
		  MOV 11H,R6
		  LCALL RDBYT
		  LCALL TACK
		  MOV 12H,R6
		  LCALL NOTACK
		  LCALL STOP 
		  RET
    RKX02:MOV R1,#01H
          LCALL START
		  MOV A,0EH
		  LCALL WRBYT
		  LCALL TACK
		  MOV A,0CH
		  LCALL WRBYT
		  LCALL TACK
		  MOV R0,#4
   WKX021:MOV A,@R1
          LCALL WRBYT
		  LCALL TACK
		  INC R1
		  DJNZ R0,WKX021
		  LCALL STOP
		  LCALL DELAY5
		  LCALL DELAY5
		  RET
	WKX03:MOV R1,#10H
	      LCALL START
		  MOV A,#0A2H
		  LCALL WRBYT
		  LCALL TACK
		  MOV A,0CH
		  LCALL WRBYT
		  LCALL TACK
		  MOV R0,#4
   WKX031:MOV A,@R1
          LCALL WRBYT
		  LCALL TACK
		  INC R1
		  DJNZ R0,WKX031
		  LCALL STOP
		  LCALL DELAY1
		  LCALL DELAY1
		  RET
	  SAO:NOP
	 SAO1:MOV R1,#4
	      MOV R3,#11101111B
		  MOV R2,#11111111B
   NLINE1:MOV A,R3
          MOV PORT1,A
		  MOV A,PORT1
		  ORL A,#0F0H
		  CJNE A,#0FFH,KEYIN1
		  MOV A,R3
		  RL A
		  MOV R3,A
		  DJNZ R0,NLINE1
		  LJMP SAO1
   KEYIN1:MOV R2,A
          LCALL DELAY1
		  LCALL DELAY1
		  LCALL DELAY1
		  LCALL NOPEN
		  LCALL TRANF
		  RET
   TABLE1:;兰花草
          DB 02H,42H,82H,82H,82H,84H,02H,72H,62H,72H,62H
		  DB 52H,48H,0B2H,0B2H,0B2H,0B2H,0B4H,02H,0A2H
		  DB 12H,0A2H,0D2H,92H,88H,82H,0B2H,0B2H,0A2H,84H
		  DB 02H,72H,62H,72H,62H,52H,44H,02H,12H,12H,62H
		  DB 62H,52H,44H,02H,82H,72H,62H,52H,32H,48H,00H 	  		  		  	  		  	  	  	  		     
   TABLE2:;哈巴
          DB 04H,42H,42H,42H,52H,64H,04H,62H,62H,62H,72H,84H,04H
		  DB 92H,92H,82H,72H,64H,04H,82H,82H,52H,62H,44H,04H
		  DB 42H,42H,42H,52H,64H,04H,62H,62H,62H,72H,82H,04H
		  DB 92H,92H,82H,72H,64H,04H,82H,82H,52H,62H,44H,04H,00H
   TABLE3:;生日快乐
          DB 04H,82H,01H,81H,94H,84H,0B4H,0A4H,04H
		  DB 82H,01H,81H,94H,84H,0C4H,0B4H,04H
		  DB 82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H
		  DB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H,00H
   TABLE4:;不倒翁
          DB 04H,84H,94H,88H,64H,54H,68H,84H,64H
		  DB 54H,44H,62H,82H,42H,62H,58H
		  DB 84H,94H,88H,64H,54H,68H,84H,64H
		  DB 54H,44H,52H,42H,52H,62H,48H,00H
   TABLE5:;妹妹背着洋娃娃
          DB 04H,84H,02H,82H,64H,54H,64H,54H,48H,64H
		  DB 02H,52H,44H,24H,14H,18H
		  DB 24H,02H,22H,42H,24H,44H,54H,68H,54H
		  DB 02H,52H,84H,84H,54H,64H,48H,00H
   TABLE6:;两只老虎
          DB 04H,44H,54H,64H,44H,54H,64H,44H,64H,74H,88H,64H,74H,88H
		  DB 82H,92H,82H,72H,64H,44H,82H,92H,82H
		  DB 72H,64H,44H,84H,48H,44H,14H,48H,00H
   TABLE7:;三只小猫
          DB 04H,62H,82H,82H,62H,98H,92H,0B2H,0B2H,82H,98H
		  DB 02H,82H,82H,52H,68H,92H,0B2H,82H,98H
		  DB 62H,82H,82H,62H,92H,92H,94H
		  DB 92H,0B2H,0B2H,92H,84H,94H,0B8H,0B4H,04H,00H
   TABLE8:;绿
          DB 02H,42H,82H,82H,82H,84H,02H,72H,62H,72H,62H,72H,52H,48H
    	  DB 0B2H,0B2H,0B2H,0B2H,0B4H,02H,0A2H
		  DB 12H,0A2H,0D2H,92H,88H,82H,0B2H,0B2H,0A2H,84H
		  DB 02H,72H,62H,72H,62H,52H,44H,02H,12H
		  DB 12H,62H,62H,52H,44H,02H,82H,72H,62H,52H,32H,48H,00
   TABLE9:;绿岛小夜曲
          DB 00H,0C2H,0D2H,0F2H,0D2H,0C4H,0D2H,0F2H
		  DB 0D2H,0C2H,0A2H,92H,0A8H
		  DB 92H,0A2H,0C2H,0A2H,92H,82H,62H,82H,58H,58H
		  DB 0C4H,22H,0D2H,0C4H,0A4H,92H,0A2H,92H,82H,92H,0A4H,092H
		  DB 84H,82H,32H,54H,22H,62H,052H,058H
		  DB 64H,22H,52H,64H,84H,92H,0A2H,92H,82H,92H,0A4H,0C2H
		  DB 92H,94H,0A2H,0C4H,22H,0D2H,0C8H,0C8H
		  DB 0D2H,0D4H,0C2H,0A2H,0A2H,92H,0A2H,0C2H,0A8H
		  DB 92H,94H,82H,62H,52H,52H,82H,98H,98H
		  DB 0A2H,0A4H,92H,0A2H,0C2H,0A4H,92H,0A2H,92H,82H,68H
		  DB 52H,0C2H,0A2H,0F2H,0C2H,0C2H,0D2H,0A2H,92H,88H,88H
		  DB 0D2H,0D2H,0D2H,0C2H,0A2H,0A2H,22H
		  DB 92H,94H,82H,62H,52H,62H,82H,98H,98H
		  DB 0C2H,0D2H,0C2H,92H,0A2H,0A4H,0A2H
		  DB 92H,94H,82H,64H,84H,0C8H,0D1H,0C1H,0A2H,0C2H,0D4H,0D2H,0E2H
		  DB 0C2H,0D2H,0C2H,0A2H,98H
		  DB 0A4H,92H,82H,64H,22H,82H,92H,0A1H,91H,82H,92H,0A4H,22H,0C2H
		  DB 0D4H,22H,0A2H,94H,0A2H,92H,0A2H,92H,88H,88H,00H
  TABLE10:
          DB 00H,04H,42H,52H,62H,42H,42H,52H,62H,42H,62H,72H,86H,62H,72H,86H
		  DB 82H,92H,82H,72H,62H,42H,82H,92H,82H
		  DB 72H,62H,42H,42H,82H,46H,42H,12H,48H,00H
  TABLE11:
          DB 00H,23H,01H,63H,01H,51H,61H,41H,51H
		  DB 64H,22H,92H,51H,61H,72H,64H
		  DB 04H,63H,01H,93H,01H,81H,91H,0A1H,0A1H
		  DB 94H,53H,61H,41H,51H,41H,31H,24H,04H
		  DB 53H,61H,41H,51H,41H,31H,24H,04H,53H,61H,82H
		  DB 92H,0AAH,02H,93H,0A1H,91H,81H,98H,04H,91H
		  DB 81H,92H,04H,61H,51H,62H,04H,56H,42H,12H
		  DB 22H,32H,32H,28H,08H,00H
  TABLE12:DB 01H,00H
          END

		  	   

⌨️ 快捷键说明

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