机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 6482|回复: 13

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

[复制链接]
发表于 2009-10-7 13:40:44 | 显示全部楼层 |阅读模式
本帖最后由 jili1986729 于 2009-10-7 13:42 编辑 . h/ ?( D& [7 ~& P
6 ?. ?1 w& E0 E; ]
我自己用单片机做的电子琴,比较简单,用了一个功放,自己做了个矩阵键盘: v* i) w  H, n4 [' @" e
单片机应该用892051,这里89c51,有点浪费9 O" ~) M. D  t5 ~

, K" t7 l6 j, M. h程序:- ^- \" L$ P- y. r# Q. f# _  Z9 O7 h
ORG 00H
7 |4 g& _' K! X6 B, k" G5 J) PAJMP START9 c! j( D) J3 z% ]+ |9 ~
ORG 001BH& q7 J$ g) ~) _4 @
LJMP TIME1
( A/ o4 s. ^) X2 g' tORG 30H0 G, W3 B/ e5 M" Y& r8 {
START:MOV TMOD,#10H
) S- C8 f3 K* o5 m$ ?0 L      MOV IE,#88H
2 G" d( r: D" D9 }5 }KEY:SETB F0
5 s% R1 A. @# w, ~! e0 Y+ o    CLR EA$ r. H$ p1 p+ }8 C9 E5 M6 X
CLR TR1
; t0 {- E6 _6 j5 [. J& g( d& B    MOV P1,#0F0H( f; ?) j3 k7 O7 f* W) d  }3 o' `
KEY1:MOV A,P1
( P& c( Z" ^6 U6 }2 A- I  CPL A) Q3 T$ e1 w! W7 p& O& R3 @- Z/ ^
  ANL A,#0F0H6 d: n9 K- @7 ?& A% g3 T9 b* [
  JZ KEY- v; O) ~/ ?8 Z8 d: c5 t* n
  CLR F0* ~5 Q6 M, |, k8 `; p% d1 g6 m. X
L1: LCALL SKEY( }, Q  m# z/ E( o
  CLR EA
: i2 w& S' @; o! n/ i- }) d6 v  CLR TR1
+ Q! t% W* Q* b# }& U% }% e  JB F0,KEY
* h% b& C9 N. [; T6 V  KMOV 22H,A
0 w  k; K9 A; [! r4 [- T! U   ADD A,22H
9 P0 Z7 K6 L7 A   MOV R3,A7 e) W/ Y% t, t( b# z" y
   MOV DPTR,#TABLE1
. y; l- _" t0 U7 a   MOVC A,@A+DPTR
& ?6 k6 q* q  f+ j8 ~   MOV TH1,A
2 d. L7 @! v/ `/ e0 ]   MOV 21H,A& i9 k' t5 t  y3 s! a7 e
   MOV A,R3
! c: K' h9 Y# f* n$ t7 U% R2 i8 H# c   INC A
! E2 K2 [) G8 W5 v   MOVC A,@A+DPTR
! X+ _6 U* r: i; |' o3 {. a   MOV TL1,A  z' r7 c, Q; F* F) g+ K
   MOV 20H,A
0 s" n4 P& V3 `; K9 ?      SETB EA8 H3 h: [  n& R* K- Z# |
   SETB TR1
) A) U! Y+ y* w+ vL2:CALL SKEY+ @6 T# N, I3 V5 {' m% c
   SETB EA% D4 I  u* A1 |4 z
   SETB TR1
# }+ G9 r! \, G- S   JB F0,KEY
7 U( N: u7 ?6 a0 G( m   LJMP L25 ?: p2 K% ~3 _9 [7 R5 i. [
SKEY:MOV A,#00
1 Z- R3 w% V9 ]% \: c. |) d8 g     MOV R0,A2 a, j/ G/ ]+ v% Z8 m* c' G. D
  MOV R1,A; a+ j  h/ j3 G
  MOV R3,#0FEH5 F) w1 J2 m7 S" ^) u1 M) f6 q
SKEY2:MOV A,R33 `9 F/ j% H0 a
      MOV P1,A$ o, {2 w3 B9 @9 z* f
   NOP
6 j- ?. R: f! o3 v/ [   NOP7 L; n5 u; q  n7 I  e. J
   NOP
( Q4 K, O- W! g! o; _   MOV A,P1( g$ r% U2 I+ ?7 i% |( q
   MOV R1,A
+ M/ P5 c, W# m, O* f      CPL A
& o( M5 g2 z/ f+ ^   ANL A,#0F0H8 z. k- E0 {7 Z6 S( |3 ^' G
S123:JNZ SKEY3
* H7 _2 K. I# \' a3 z  SETB F0
% B6 C' s& a/ n2 ^6 b' K     INC R0
5 I, X1 P" ~! ~! F9 I5 X0 T" N  SETB C3 \4 R$ {: p9 P9 {8 B1 V& A( A
  MOV A,R3
- r' d! |! K8 D% ~6 s  RLC A
' d" Q9 H2 B& y1 T0 z- E  MOV R3,A/ |6 _  X; B4 X: J0 U1 w* s
  MOV A,R0
: ?8 q9 f, U/ K5 \* C7 v  CJNE A,#04H,SKEY2
9 x0 m8 K3 J6 |, y; d' ]# |2 x1 [EKEY:RET4 j- G* j6 j/ i
SKEY3:CLR F0
8 J4 n8 I- l6 F- n      MOV A,R10 p1 x* N% l/ m: ^  B
      JNB ACC.4,SKEY5
! ?: J6 T5 E. K; J% y6 y   JNB ACC.5,SKEY6% Z- r! b+ F& U
   JNB ACC.6,SKEY7
7 f1 |1 {- q6 I$ F+ q   JNB ACC.7,SKEY83 z+ J: B3 o2 J
   AJMP EKEY
' z1 Z( C! o* f8 D* E7 oSKEY5:MOV A,#00H% ^+ s( w( H2 h% ^2 r. V
      MOV R2,A1 v; `' m6 _* P5 Z# p
   AJMP DKEY
+ }" t! @( ^( y/ c% X* z; xSKEY6:MOV A,#01H- q" W1 T) j0 n" e4 L3 l; V, ?
      MOV R2,A7 f9 L) ]- U' p  Y
   AJMP DKEY
' y3 ~& m: M; m; _- Y/ wSKEY7:MOV A,#02H
6 w% T+ n" s4 P6 }     MOV R2,A
3 _1 d& c) q, K# c  AJMP DKEY9 |8 y9 d% j/ ]
SKEY8:MOV A,#03H2 r9 G# o0 y( F' L+ J" l
      MOV R2,A4 q2 ]  S4 t2 k2 u1 p7 ]  `
   AJMP DKEY
5 o# ?0 E( [$ z( y2 H. E& E6 \DKEY:MOV A,R0
9 G1 c8 v$ b9 g1 j* z     ACALL DECODE& t3 Q9 H9 ^5 @$ l0 m% V  v
  AJMP EKEY, `$ |' i; s/ D; ]* _3 {
DECODE:MOV A,R03 j0 _% ?( [, j( ^% j+ g* ], @* J  C
       MOV B,#04H# }* ^  L: Z5 }# j. R
    MUL AB- c  @" D7 f. Z2 s
    ADD A,R29 a2 L" B1 Q+ o% X
    RET  {) f) E. s9 F+ L6 v' ^
TIME1:   PUSH ACC
& l$ q. R/ t0 l9 ^  A: A      PUSH PSW- f, J5 v: }" l+ K, I. U) a% H+ s
   CPL P2.4
" `: e; ^( j9 M. m7 w: @8 X   MOV TL1,20H
" i. i, H: b3 P5 [   MOV TH1,21H
7 T" L7 r9 J1 G8 q$ R& t1 t6 p+ Y   POP PSW
$ O+ Z2 j/ i- j; ^, r0 T1 h# j   POP ACC: f5 r: z- D7 V$ C. Q) ^% X
   RETI8 G! ~1 k' f1 h0 e
TABLE1:  DW 64021,64103,64260,64400,64524,64580,64684,64777, v* C3 p6 t: }6 w/ h, m
       DW 64820,64898,64968,65030,65058,65110,65157,65178
, i4 u- x! a4 c' }  k; JEND

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2009-10-8 06:51:24 | 显示全部楼层
jili1986729 网友好!- l0 G8 I- i8 L7 E/ f
.* U+ K" r. a" F+ h" k
进入任何一门“陌生”的知识领域,选准正确的路径由为重要,会使你少走弯路。
/ m* K& s  l! z* N0 X( K./ v3 b0 o, `4 g$ I# M# K0 H% a
汇编语言,是在计算机技术发展的过程中,由机器码走向高级语言的过程中的一个
. T7 W* s' E. ~, s# ]" i+ a* O过渡语言,当出现了能做底层操作的高级语言的C语言后,汇编语言就应该从高校的
3 T) d, k5 ^2 ^: l" V, M1 @教材中清除出去,以免浪费学生的精力,以提高学时的有效性。
9 R% _5 q1 n( E.# t2 M4 i4 |7 _
我国高校教材的更新存在着滞后现象,做为学生应该学会取舍。
: u  ]  |" E6 k! H* j2 v对此,我能给出如下建议:
8 ]! l3 O( R# v/ Z' K.
" u* t8 C8 s" K% U% o/ c5 z1、学单片机应该改用C语言,而抛弃汇编。
! _$ _' D- Q5 G& \5 q2、应该尽可能的设计出一套自己专用的万能板,以应对“所有的项目”。
0 Y, ]0 q& m7 L! W3、一定要在画专业的PCB电路板方面下足功夫。& d( X' A. z  d/ K! s1 u5 \
4、……
8 z7 C; \! `$ e.
# G6 S  M5 J: e3 e- v" F# i& {9 C# Bsyw  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 | 显示全部楼层
恩,谢谢提醒。
1 z4 z- R" H) y因为在学校里学的是汇编。
9 ~& P, T+ y8 w$ n- E6 b& ^) ]现在正在学习C语言,感觉C有它的好处,但有时汇编语言也有优势
回复 支持 反对

使用道具 举报

发表于 2009-10-9 11:21:54 | 显示全部楼层
造车总工
% w# f* B( o& s. {! l4 p' Z( O5 x, W! F现在的C语言支持底层编程,能大体说说优势吗?我有10多年没用过汇编了,记得96年用C编了段程序,用工具转换成低汇编,程序量太大了,而直接用汇编编程,短短的几行就可以,不知道现在支持底层编程的C这方面改进的怎么样了,多年没接触单片机,以为大家还都在用汇编呢
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 05:55 , Processed in 0.057543 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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