找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 7376|回复: 13

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

[复制链接]
发表于 2009-10-7 13:40:44 | 显示全部楼层 |阅读模式
本帖最后由 jili1986729 于 2009-10-7 13:42 编辑
" o; C: Q# }0 x
! J8 L4 i. `, o1 s" r我自己用单片机做的电子琴,比较简单,用了一个功放,自己做了个矩阵键盘
' K; o( D; \4 A, @6 y4 {, W# f单片机应该用892051,这里89c51,有点浪费
1 e( i! x  K0 E. J3 W6 @( r
' p/ F2 V/ j$ @5 a/ t* \( b程序:
  x* t$ `# y" t9 x4 \ORG 00H2 C  [) s+ B% _6 r. l/ Y
AJMP START; E0 ?% r9 Q. |; X1 W$ L! |
ORG 001BH
5 u3 K( z% r! d& E# y, b% D( zLJMP TIME1
5 T8 i8 j- ^2 U6 h* ~' _ORG 30H
0 v9 p; i# W9 b5 S9 ~0 {+ ISTART:MOV TMOD,#10H
% w  n# c6 y, \+ G1 ~2 n5 k      MOV IE,#88H
! w& M8 H/ `% H( b: KKEY:SETB F0
7 J0 L' J; {: Z3 z8 Y8 P, ]2 @, U5 [    CLR EA
# U! |0 g9 R6 Q, s) J% F* ?" ]CLR TR1
3 Z3 E. x, r) W0 V% l' h    MOV P1,#0F0H
9 [3 [0 {1 }9 F2 h& I# |KEY1:MOV A,P1& a. t. e' X9 @" k
  CPL A
) n0 [* e" G; H6 z, G8 V7 G  ANL A,#0F0H# `- Y* U6 {* E& p+ L$ p
  JZ KEY* }9 G1 E2 x1 G$ w+ p% l- C! z% R
  CLR F0
& N- [6 x4 j3 M+ _3 W; ?L1: LCALL SKEY' y5 h4 b5 ~- v" F) A
  CLR EA2 [$ b& {4 g& s, {: u
  CLR TR1! ~, ~7 }( Y6 S7 q
  JB F0,KEY2 l. B/ F$ e  b( j9 O4 {% W/ O
MOV 22H,A" U- ?2 s8 `, L2 y' m
   ADD A,22H) X: j% }+ V( c0 i6 b- M
   MOV R3,A1 e2 P: i3 M* k3 K3 Y% b
   MOV DPTR,#TABLE16 n4 X1 U2 w- ?! `4 X
   MOVC A,@A+DPTR
; X# v6 t) R" @9 b   MOV TH1,A
6 g+ @3 l- Z" z5 o& V* J$ I   MOV 21H,A
! z: U' T7 t1 n' ~" F   MOV A,R3
3 t1 V- q* l' v5 h! g( @+ z/ R  I   INC A( @1 x$ k2 |9 t% C& A: z' B
   MOVC A,@A+DPTR
  p2 ~4 L2 m& H& n2 e; c7 ^   MOV TL1,A, P5 f0 N, j4 M- n( r8 ^
   MOV 20H,A
5 j$ P% [. V9 T/ p* }$ ]9 _& H      SETB EA8 i" O$ G3 [* X. k+ S* [5 l( n( j# s
   SETB TR1
: ~; l7 x  v7 d9 vL2:CALL SKEY- h0 x* R6 g  @! V
   SETB EA4 ~6 |* m, v# \' k' e+ E
   SETB TR11 E4 _/ l6 C- e) x
   JB F0,KEY0 Y7 z2 N8 ~: [# @4 M! s7 u  V
   LJMP L2
0 D. h. _. Z2 o( kSKEY:MOV A,#00
* X1 H9 J' j3 ?0 B6 R- O: c1 K4 V     MOV R0,A
# Z7 _* l& U6 u  MOV R1,A- _. `+ m+ @9 z0 A  i9 U+ J! e
  MOV R3,#0FEH
, V/ l& d6 K2 }9 U1 N' A4 OSKEY2:MOV A,R3% Q6 H! M% B% `" N
      MOV P1,A$ z7 @1 Q3 c) q: }6 \9 ]
   NOP. w; i8 c/ P: |9 P0 d3 F
   NOP, l6 e$ ?8 y4 T2 Y
   NOP0 C1 u% W, Z9 |7 r+ |! l% O& c: v1 \  W
   MOV A,P1
) X1 I) L8 j- N. T% @6 k   MOV R1,A9 ]- f! A+ _# z2 k- `+ g: y- s
      CPL A
$ F- A- p3 U* O/ d) B   ANL A,#0F0H
4 M  A3 x6 W$ r: i, |, B4 e7 |S123:JNZ SKEY3
  l, O* s0 X" Q0 V3 x. v  SETB F0
# x& x, s( S" D! _. v9 L9 O6 _     INC R0
! f: ]* F  G) O9 n7 M  SETB C
/ m" j/ @3 L+ B( J  MOV A,R3
7 M" w6 u) l2 o/ P! ]* e" O( w  RLC A% m% H6 W  ^6 v% g. L
  MOV R3,A
3 N9 X# b' w* _! \. b  MOV A,R0
! b3 A0 z3 ~7 R7 |+ A9 `% q8 V2 u  CJNE A,#04H,SKEY2$ ?7 Z! R7 q: T4 z* a9 s% L( \9 N  ~
EKEY:RET: z8 l8 ~$ }/ N/ [! X! t
SKEY3:CLR F0
8 D! {6 m* ~! D( z; q      MOV A,R1
; R# F+ \1 a  ^  q' I& P5 u      JNB ACC.4,SKEY5
! J  _5 |. u  p5 p1 q1 |   JNB ACC.5,SKEY6
) }$ B8 k0 _9 U' \+ Y+ }3 S& P   JNB ACC.6,SKEY7
! e5 N5 \/ f4 R' R1 A2 v- ]   JNB ACC.7,SKEY8# O3 o1 y- A' @5 r& D
   AJMP EKEY
; {7 D) L# v* M! W% W5 fSKEY5:MOV A,#00H: N0 i6 P7 W. L) H; }5 ^# Y8 Z$ r) a
      MOV R2,A
7 h3 l, l$ l* _9 n4 `   AJMP DKEY
" Z# Z) j+ u  K. A1 c7 B' i8 vSKEY6:MOV A,#01H6 g; w0 w9 O5 M+ I
      MOV R2,A
: d9 f6 j. ^  |: w1 B3 {/ D   AJMP DKEY
( T- ], |; a) v+ T5 _! mSKEY7:MOV A,#02H. b* z3 N& I3 @& [- e) O6 ]
     MOV R2,A
4 y9 A) J' k6 A  AJMP DKEY, G# Q: j  i$ Q) ]4 w
SKEY8:MOV A,#03H4 o( {! @, {2 a$ l
      MOV R2,A0 Y0 z$ Y3 I2 e# e$ g
   AJMP DKEY
1 X, k+ ^% B9 ^/ H8 V8 _+ MDKEY:MOV A,R0# I* M* K/ ^6 ]# o' S( b
     ACALL DECODE5 N# L% Y  B8 o& T
  AJMP EKEY! B! j, S. y  T" i0 p' ~& Y  P! {/ D
DECODE:MOV A,R01 K4 h5 B# r# j$ S( U' I$ k9 Z
       MOV B,#04H1 @4 [6 k1 M2 d6 a
    MUL AB, w$ `- x1 d: T' w& \
    ADD A,R2
# F, p4 F  O$ W; W    RET
  C8 H/ C& b+ e- Q0 f* |TIME1:   PUSH ACC
. q1 ~5 k; T3 j      PUSH PSW
. Y/ k) ?3 }: X; Z  o  m8 v* H7 ~5 {   CPL P2.4* q( O- K8 P6 z+ l
   MOV TL1,20H
) M4 [, {7 ^# c, Y   MOV TH1,21H
0 ]& A9 z) P0 s   POP PSW
! F" P) y- W9 H) f   POP ACC7 o* h; V! O  Z, M
   RETI9 L7 Z) Y* g* l0 r5 S
TABLE1:  DW 64021,64103,64260,64400,64524,64580,64684,64777
$ J  J  \, b( ^2 v0 g3 t" W, Y) U       DW 64820,64898,64968,65030,65058,65110,65157,65178
# \' f/ S: f5 R/ K  f/ W1 W8 bEND

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
回复

使用道具 举报

发表于 2009-10-8 06:51:24 | 显示全部楼层
jili1986729 网友好!
" |3 Q: y  o: M.
& H$ G+ m" M" T进入任何一门“陌生”的知识领域,选准正确的路径由为重要,会使你少走弯路。
) H$ l2 l7 O) |% u! ]" `.
% p0 T( h5 J: h4 i1 y3 x5 |; C# p汇编语言,是在计算机技术发展的过程中,由机器码走向高级语言的过程中的一个& S+ U5 D* w$ }% P# ^: S
过渡语言,当出现了能做底层操作的高级语言的C语言后,汇编语言就应该从高校的% u! d! K. X+ I6 n; I
教材中清除出去,以免浪费学生的精力,以提高学时的有效性。
; j  c8 W. y4 m+ A# }! C.9 [8 A8 I& x5 l( m
我国高校教材的更新存在着滞后现象,做为学生应该学会取舍。& O3 p0 R4 F# h0 }1 P# [# y% a
对此,我能给出如下建议:
# V* z) ]" Z5 @" J; _( U- I* Y.
  Z% @9 w1 k( D' G1、学单片机应该改用C语言,而抛弃汇编。0 R- K7 l1 w) T( e1 y; d- t
2、应该尽可能的设计出一套自己专用的万能板,以应对“所有的项目”。& W* ^% G( _# o  O! }
3、一定要在画专业的PCB电路板方面下足功夫。
- V9 R+ W& h" E2 {! e$ L$ X4、……
. K  ?4 K5 G2 j" @.2 k6 W4 J' j9 K0 n* ~2 S
syw  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 | 显示全部楼层
恩,谢谢提醒。
7 _3 B7 x( N9 W# d因为在学校里学的是汇编。
6 y* I. [4 r: W- \, T现在正在学习C语言,感觉C有它的好处,但有时汇编语言也有优势
发表于 2009-10-9 11:21:54 | 显示全部楼层
造车总工
& C" J0 W9 H" D. ?3 I现在的C语言支持底层编程,能大体说说优势吗?我有10多年没用过汇编了,记得96年用C编了段程序,用工具转换成低汇编,程序量太大了,而直接用汇编编程,短短的几行就可以,不知道现在支持底层编程的C这方面改进的怎么样了,多年没接触单片机,以为大家还都在用汇编呢
发表于 2009-10-17 17:18:27 | 显示全部楼层
牛人
发表于 2009-10-17 19:54:55 | 显示全部楼层
在学校时摸索的用用也挺好
发表于 2009-10-17 20:50:37 | 显示全部楼层
对于很多低端的单片机,还是用汇编比较多,因为考虑到汇编可以更加精简,可以节省很多程序空间,这对于低成本的单片机来说尤为重要。原因很简单,你如果程序量太大,就只好选用程序空间更多,也更贵的单片机来做。像义隆,中翰等单片机都是用汇编的多。8 O* r0 `# X' c' W
不过,现在的趋势上,单片机的程序空间越来越大 ,成本越来越低,用C成为了大势所趋。
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-9-17 04:43 , Processed in 0.062346 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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