|
本帖最后由 jili1986729 于 2009-10-7 13:42 编辑
# o- E6 }' O9 r0 R4 C7 p- d) U8 k' I. ~4 h. G
我自己用单片机做的电子琴,比较简单,用了一个功放,自己做了个矩阵键盘# x! I1 I7 _* }+ `0 _
单片机应该用892051,这里89c51,有点浪费
6 J" y2 L- G; ?" T: W, r3 |: o" c, A( J- w% R7 e+ S
程序:% o: m8 [3 |# t: \
ORG 00H' j M8 d1 W g6 s4 m
AJMP START, x7 V0 }* f" w& g7 @9 ]
ORG 001BH( s' h1 L0 N# Z
LJMP TIME1
. g" X9 N: \5 P& e# a$ SORG 30H" I7 a3 c4 z6 G1 ?1 _( h! B
START:MOV TMOD,#10H
4 l: R3 D h+ w! g0 T! q( V MOV IE,#88H
) F( G0 w8 Z! K% b$ \% cKEY:SETB F0+ q3 N. N. ^ @
CLR EA
$ ]/ I& e H+ Z9 Y; z7 S2 aCLR TR16 z5 c1 m$ w9 c+ ^
MOV P1,#0F0H
, p" I& E( Q+ I( Z, cKEY1:MOV A,P13 Y0 a& y9 t9 p% Z: m1 @4 K
CPL A
* d9 o7 l; K; k8 M1 A9 }7 R ANL A,#0F0H6 S8 ] p2 V, `
JZ KEY8 Z( B6 d, V- g: P* j
CLR F0
+ V4 T* F7 f3 y" H" t N# o" ZL1: LCALL SKEY
6 P7 u3 H/ Q$ J4 M# P CLR EA
" M9 }0 I1 n. a5 Y9 @: R CLR TR1
: W, Z% f: @; h' i JB F0,KEY
( U* S/ E0 ?8 j8 q8 B$ H w+ w4 TMOV 22H,A" F6 ^/ O/ P( ~
ADD A,22H
5 l8 v I8 m9 u. [$ T$ b5 b& t MOV R3,A
; x5 ]) r4 g( P1 { MOV DPTR,#TABLE1
* B1 F7 g% j) R MOVC A,@A+DPTR
( d+ B" `/ W3 x" q! }3 l g MOV TH1,A7 G; C, V# Y; d) K
MOV 21H,A
9 d* T" G$ H+ A3 ?+ g9 f: b MOV A,R3
1 ]9 U! r) `# a, y! t6 F INC A1 X; t: w6 V( X4 b% |6 O
MOVC A,@A+DPTR U7 s. C! R1 T
MOV TL1,A* ~& h4 O2 O8 h3 J5 \+ m2 ?- Q
MOV 20H,A
, h% d& s2 Y2 d& z. d! W SETB EA
& t, ]& \% x0 q- H+ q SETB TR1& M1 v, v, Z7 }. N: g
L2:CALL SKEY
# ^, U8 y5 ^! @# X4 q SETB EA, }: z" x6 T: f: C$ ^2 v
SETB TR1
* F6 l% e3 K9 W2 M JB F0,KEY
5 p0 k2 B) I4 h. b2 e LJMP L2
, J2 v Z, t1 h) s. zSKEY:MOV A,#00& G- V. S) f) j7 K: m+ }' a
MOV R0,A7 O0 O! v# ~5 A' c7 M
MOV R1,A9 i# P# U; n: C
MOV R3,#0FEH
. c( Q9 g/ o: ASKEY2:MOV A,R38 ]6 J3 @6 M. }
MOV P1,A
1 f% S% v/ U; S% _ NOP
/ E' B- |7 E4 F {/ }# t NOP
4 f3 X; G8 \9 Z8 A% ?5 p; N NOP
; u7 C7 \# i1 g$ d2 B& U3 i MOV A,P1 G8 B9 |" [+ Y4 Z: G
MOV R1,A8 W4 z6 X1 z) ]# d2 U' Q
CPL A
* e3 L H4 t1 r: c( U ANL A,#0F0H
: H; s; V5 E# ` KS123:JNZ SKEY30 A6 Q+ z4 w" e& w5 e% _
SETB F0
8 }; B7 {7 ], W- Z INC R05 P& i7 R, x8 l) N& j% X# z
SETB C/ i# A+ @: M; m& b
MOV A,R3. J, Y+ g% y6 C9 T* `* D
RLC A8 d( W9 J% }$ `1 W
MOV R3,A& _3 Q7 b' B5 A+ Q- Z1 ?
MOV A,R03 }- `( [6 r7 k( y# v1 p+ m
CJNE A,#04H,SKEY24 R& A6 o9 v6 r% K
EKEY:RET
. c" ^# E4 U* U# @SKEY3:CLR F0 R, o. x' I3 v" a4 G* O" `
MOV A,R1$ {: A8 l- g3 f, @4 F
JNB ACC.4,SKEY5( p- I& g7 K% v `* S+ D1 c
JNB ACC.5,SKEY6# u) x0 u% E) }: W% Y9 H* [
JNB ACC.6,SKEY7
6 W, {: x; c$ P2 d# T: y JNB ACC.7,SKEY8
0 m" e" \2 q: Q, I8 x8 A AJMP EKEY' [1 `8 e7 \, R0 B
SKEY5:MOV A,#00H
3 [" `) ?) k! _) e, p MOV R2,A" [, F: r6 {+ z( r/ B0 s
AJMP DKEY
5 z1 m" J3 s7 @! l0 U. BSKEY6:MOV A,#01H
' l& F: J ]0 ]8 b4 k MOV R2,A1 C9 K7 `# ?; L+ Z6 n6 v
AJMP DKEY
) v7 E+ c+ R# w" N1 r5 E, CSKEY7:MOV A,#02H/ ]' W* e# x6 T/ l; r
MOV R2,A+ p$ o* o9 T0 b, [: ]( ?9 a3 W
AJMP DKEY2 @/ u6 `, L+ Y4 _- x9 A( l
SKEY8:MOV A,#03H
4 D+ B" p: Z2 M8 C MOV R2,A
+ A# W$ g1 J" Z3 f AJMP DKEY- a2 M8 p5 Q" i* r( L) t
DKEY:MOV A,R0
6 j/ Y8 c8 C# W' Y8 \$ C( @ ACALL DECODE9 m: ~8 S! z$ f5 D& c
AJMP EKEY
# c! z! p- ~& U+ c, G- I, ?5 _DECODE:MOV A,R07 h4 d i" u5 G6 w0 N9 H8 Z& L, j' q
MOV B,#04H
, r1 ]- a& e, J T MUL AB
# a( a; L5 B' z- x ADD A,R2
4 ^5 w: W5 S- {7 U2 o! z) R3 C RET
, g4 `5 @9 r# f; t& WTIME1: PUSH ACC
3 K, q! A8 ?. Y0 ? PUSH PSW
" x/ y& W* W9 c0 a+ d CPL P2.4
2 [9 |% w( K+ {. ]# Y4 N3 p* c MOV TL1,20H
0 v" \+ Y3 S3 U& }% } MOV TH1,21H
7 p0 A! f+ I7 m& t+ T POP PSW8 B1 w- D0 _( i5 o- t- R8 W. b
POP ACC: b1 F2 N* Q P( f; K# ^
RETI
9 s" ^' P8 |2 E' m4 V1 j. @TABLE1: DW 64021,64103,64260,64400,64524,64580,64684,647771 W9 x& k$ w" |$ g
DW 64820,64898,64968,65030,65058,65110,65157,65178
C: k/ Q" v: q6 z! qEND |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
|