用八个按钮控制p1端口使电子琴发出do,re,mi,fa,so,la,si,deo(用单片机汇编语言编程 用蜂鸣器发生

如题所述

这是以前写的,用的是P0口。
T0H EQU 30H
T0L EQU 31H
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV SP,#5FH
MOV TMOD,#01H
SETB ET0
SETB EA
LOOP:
MOV DPTR,#FREQ
MOV A,P2 ;控制高中低音区
MOV R1,#0
ANL A,#03H
JB ACC.0,LOOP01
MOV R1,#14
SJMP LOOP0
LOOP01:
JB ACC.1,LOOP0
MOV R1,#28
LOOP0:
JB P0.0,LOOP1 ;控制音频1234567
MOV A,R1
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP1:
JB P0.1,LOOP2
MOV A,R1
ADD A,#2
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#2
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP2:
JB P0.2,LOOP3
MOV A,R1
ADD A,#4
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#4
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP3:
JB P0.3,LOOP4
MOV A,R1
ADD A,#6
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#6
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP4:
JB P0.4,LOOP5
MOV A,R1
ADD A,#8
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#8
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP5:
JB P0.5,LOOP6
MOV A,R1
ADD A,#10
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#10
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP6:
JB P0.6,LOOP7
MOV A,R1
ADD A,#12
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#12
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP7:
CLR TR0
LJMP LOOP
;-----------------------------
T0ISR:
CLR TR0
MOV TH0,T0H
MOV TL0,T0L
SETB TR0
CPL P3.0
RETI
;-----------------------------
FREQ:
DB 0F2H,03DH ;低音1
DB 0F3H,0BDH ;低音2
DB 0F5H,014H ;低音3
DB 0F5H,0B1H ;低音4
DB 0F6H,0D0H ;低音5
DB 0F7H,0D1H ;低音6
DB 0F8H,0B5H ;低音7

DB 0F9H,01EH ;中音1
DB 0F9H,0DEH ;中音2
DB 0FAH,08AH ;中音3
DB 0FAH,0D8H ;中音4
DB 0FBH,068H ;中音5
DB 0FBH,0E8H ;中音6
DB 0FCH,05AH ;中音7

DB 0FCH,08FH ;高音1
DB 0FCH,0EFH ;高音2
DB 0FDH,045H ;高音3
DB 0FDH,06CH ;高音4
DB 0FDH,0B4H ;高音5
DB 0FDH,0F4H ;高音6
DB 0FEH,029H ;高音7
;-----------------------------
END
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-23
  蜂鸣器效果不太好 不如直接用个喇叭
  org 0000h
  ljmp main
  org 0100h
  main:mov p0,0ffh

  aa:mov p0,#0ffh
  mov p2,#0ffh
  clr tf1
  jnb p2.1,l1
  JnB p2.2,l2
  jnb p2.3,l3
  jnb p2.4,l4
  jnb p2.5,l5
  jnb p2.6,l6
  jnb p2.7,l7
  jnb p1.0,l11
  jmp aa
  l5:ljmp l8
  l6:ljmp l9
  l7:ljmp l10
  l11:ljmp l12

  l1:mov tmod,#10h
  mov th1,#0fch
  mov tl1,#44h
  setb tr1
  loop1:jnb tf1,loop1
  clr tf1
  cpl p2.0
  mov th1,#0fch
  mov tl1,#44h
  jnb p2.1,loop1
  ljmp aa

  l2:mov tmod,#10h
  mov th1,#0fch
  mov tl1,#0ach
  setb tr1
  loop2:jnb tf1,loop2
  clr tf1
  cpl p2.0
  mov th1,#0fch
  mov tl1,#0ach
  jnb p2.2,loop2

  ljmp aa

  l3:mov tmod,#10h
  mov th1,#0fdh
  mov tl1,#09h
  setb tr1
  loop3:jnb tf1,loop3
  clr tf1
  cpl p2.0
  mov th1,#0fdh
  mov tl1,#09h
  JnB p2.3,loop3

  ljmp aa

  l4:mov tmod,#10h
  mov th1,#0fdh
  mov tl1,#34h
  setb tr1
  loop4:jnb tf1,loop4
  clr tf1
  cpl p2.0
  mov th1,#0fdh
  mov tl1,#34h
  jnb p2.4,loop4
  ljmp aa

  l8:mov tmod,#10h
  mov th1,#0fdh
  mov tl1,#82h
  setb tr1
  loop5:jnb tf1,loop5
  clr tf1
  cpl p2.0
  mov th1,#0fdh
  mov tl1,#82h
  jnb p2.5,loop5

  ljmp aa

  l9:mov tmod,#10h
  mov th1,#0fdh
  mov tl1,#0c8h
  setb tr1
  loop6:jnb tf1,loop6
  clr tf1
  cpl p2.0
  mov th1,#0fdh
  mov tl1,#0c8h
  jnb p2.6,loop6
  ljmp aa

  l10:mov tmod,#10h
  mov th1,#0feh
  mov tl1,#06h
  setb tr1
  loop7:jnb tf1,loop7
  clr tf1
  cpl p2.0
  mov th1,#0feh
  mov tl1,#06h
  jnb p2.7,loop7

  ljmp aa

  l12:mov tmod,#10h
  mov th1,#0feh
  mov tl1,#22h
  setb tr1
  loop8:jnb tf1,loop8
  clr tf1
  cpl p2.0
  mov th1,#0feh
  mov tl1,#22h
  jnb p1.0,loop8

  ljmp aa
  end
  图不好发,看看应该能明白本回答被网友采纳
第2个回答  2011-12-20
简易电子琴.rar Proteus仿真
相似回答