机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 6813|回复: 13

我自己用单片机做的电子琴

[复制链接]
发表于 2009-10-7 13:40:44 | 显示全部楼层 |阅读模式
本帖最后由 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
回复

使用道具 举报

发表于 2009-10-8 06:51:24 | 显示全部楼层
jili1986729 网友好!
1 m5 `; j6 A1 K.
  u6 c4 x# h/ c( F1 B( C% E进入任何一门“陌生”的知识领域,选准正确的路径由为重要,会使你少走弯路。
" E* |7 Z2 ]6 A* U7 R; b; ]1 g.( ^! q' ^9 T+ W* t
汇编语言,是在计算机技术发展的过程中,由机器码走向高级语言的过程中的一个
! B! Y8 N/ z! C# a' D过渡语言,当出现了能做底层操作的高级语言的C语言后,汇编语言就应该从高校的8 x# @: l; I8 o% b# B$ n3 f6 e% w
教材中清除出去,以免浪费学生的精力,以提高学时的有效性。
; C$ F' [7 a' p' b6 \, Y.: P( a8 x* G# P
我国高校教材的更新存在着滞后现象,做为学生应该学会取舍。9 N  X7 e2 {, m9 d- a
对此,我能给出如下建议:
: z9 U0 E  h$ x+ |0 @" e, o.2 b* x1 U* H$ u' Z. j/ ]' f" }
1、学单片机应该改用C语言,而抛弃汇编。2 Q5 V3 [1 E) v
2、应该尽可能的设计出一套自己专用的万能板,以应对“所有的项目”。
, X# }8 {# J9 E8 U( ?3、一定要在画专业的PCB电路板方面下足功夫。
% N; F; O) [2 Z7 R4、……
! S8 c: p5 ^1 g8 L0 ?.
2 m5 d* `! [- J# [- csyw  091008---06.51
回复 支持 反对

使用道具 举报

发表于 2009-10-8 10:21:03 | 显示全部楼层
不错啊,我在学习!
回复 支持 反对

使用道具 举报

发表于 2009-10-8 13:27:28 | 显示全部楼层
现在用C语言的比较多
回复 支持 反对

使用道具 举报

发表于 2009-10-8 14:42:44 | 显示全部楼层
嗯 不错 其实不应该叫电子琴  这个离电子琴远啦  不过能自己动手做东西还是很好的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-8 18:42:02 | 显示全部楼层
恩,谢谢提醒。
  p' u  e6 P9 G7 ^9 o" a因为在学校里学的是汇编。
% D) e; a, h; S现在正在学习C语言,感觉C有它的好处,但有时汇编语言也有优势
回复 支持 反对

使用道具 举报

发表于 2009-10-9 11:21:54 | 显示全部楼层
造车总工
2 y) x1 A  Z5 b现在的C语言支持底层编程,能大体说说优势吗?我有10多年没用过汇编了,记得96年用C编了段程序,用工具转换成低汇编,程序量太大了,而直接用汇编编程,短短的几行就可以,不知道现在支持底层编程的C这方面改进的怎么样了,多年没接触单片机,以为大家还都在用汇编呢
回复 支持 反对

使用道具 举报

发表于 2009-10-17 17:18:27 | 显示全部楼层
牛人
回复 支持 反对

使用道具 举报

发表于 2009-10-17 19:54:55 | 显示全部楼层
在学校时摸索的用用也挺好
回复 支持 反对

使用道具 举报

发表于 2009-10-17 20:50:37 | 显示全部楼层
对于很多低端的单片机,还是用汇编比较多,因为考虑到汇编可以更加精简,可以节省很多程序空间,这对于低成本的单片机来说尤为重要。原因很简单,你如果程序量太大,就只好选用程序空间更多,也更贵的单片机来做。像义隆,中翰等单片机都是用汇编的多。
: b0 Q/ w+ ^: f* }* p不过,现在的趋势上,单片机的程序空间越来越大 ,成本越来越低,用C成为了大势所趋。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-2-19 06:48 , Processed in 0.064300 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表