機械社區(qū)

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 6362|回復: 13
打印 上一主題 下一主題

我自己用單片機做的電子琴

[復制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2009-10-7 13:40:44 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 jili1986729 于 2009-10-7 13:42 編輯 ! T5 F* Y  g- q; r2 M: b1 l, R

  i8 G4 u( F" E. X* K; s$ }5 b$ a我自己用單片機做的電子琴,比較簡單,用了一個功放,自己做了個矩陣鍵盤2 E6 p" O  b0 Q! I! @" ]4 _
單片機應(yīng)該用892051,這里89c51,有點浪費
# j6 _7 Z7 V" y: ]" W5 K) k, M) k3 |6 @% t0 ^
程序:. A2 R1 P1 u" |$ v/ K' K# B' A6 n7 s
ORG 00H
. F0 g+ {: ]+ _! D! i* ]$ s8 b+ r& mAJMP START: s+ [9 `, s" {& L7 I! y0 q
ORG 001BH) l* P0 A: t. w9 p) c
LJMP TIME1& x: ]( }# y& u+ a' o
ORG 30H
* q" H3 A* T7 sSTART:MOV TMOD,#10H" I9 Q9 Y4 y2 l2 Y3 Z
      MOV IE,#88H2 _/ t; q& H0 E: P* |* f! T* ], J
KEY:SETB F0' E1 j% y9 a# Y/ l
    CLR EA
1 z5 N1 \! A* }# X/ Y/ a4 qCLR TR1* a* z: c9 I/ l& o% k# ]( e
    MOV P1,#0F0H
' R8 R' x  n! N& f/ V  a+ q! IKEY1:MOV A,P1+ C1 O7 G! p/ f% F( B6 l
  CPL A: Q1 Y* r5 w) U# a$ K2 a& t7 ^6 c
  ANL A,#0F0H2 n/ Y& u7 f5 m( a" a# \; O+ {
  JZ KEY1 w0 k( t9 U' I- [. ^; [0 n& ?% K
  CLR F0
/ R+ _: @5 o- Q. v8 ?L1: LCALL SKEY7 {& z8 L( n7 V; t3 ^
  CLR EA
1 N  |9 h* _. Z- {2 n  CLR TR1
& T7 g* G6 v" ~$ v  JB F0,KEY; N0 Q. H+ |! l$ f" G
MOV 22H,A
# P+ |% A+ q, n% u$ t) z   ADD A,22H
" ?. s& r1 T  U! W8 d   MOV R3,A% r2 K, v& k7 J: Z' G& _
   MOV DPTR,#TABLE1
8 y8 x7 k7 _  C/ t8 ~   MOVC A,@A+DPTR) x& Y: M* C" b4 B# e
   MOV TH1,A
' g/ i( L9 M6 b8 I1 ?2 L% m5 z   MOV 21H,A
" ^; l2 h# ?0 U9 a/ S   MOV A,R3
/ f) `' `; P2 b6 F1 c! \   INC A
8 H3 t# g' r2 o) ]( j$ X   MOVC A,@A+DPTR
+ S6 z9 ?- a' W7 @! {( u   MOV TL1,A
" S5 g; Y- ^% d0 ?# L: W' s* t   MOV 20H,A
1 X. ?. j& `; {, d      SETB EA
5 j( p0 {" \. ?( d- y, D! h- j5 _   SETB TR1
1 c! x( Q: g( u1 y! ?! r3 H1 DL2:CALL SKEY
5 l$ L" \5 m5 t2 |: ~0 H2 I/ H) ]+ F   SETB EA
9 N$ q/ A( V; ~9 z* U   SETB TR1& `( A3 [6 m" [2 U" Q& w1 }& v6 g% ^) G
   JB F0,KEY. |. a8 O7 y6 D( U! o! N
   LJMP L2' X. P6 Q+ e- V* u' @) i. t
SKEY:MOV A,#00
. [$ b& u7 ^7 a6 F/ A" X     MOV R0,A) q# W  ]/ Y9 `
  MOV R1,A+ H( l" P# l* t
  MOV R3,#0FEH
, p( c: p* C) b' I8 x! sSKEY2:MOV A,R3
+ p- O5 b, C' G9 X5 w3 M5 {; R9 r' t      MOV P1,A- Q; u& Z" u3 ?. j% [( X
   NOP
5 `0 M+ i6 @4 [+ f  l3 A   NOP
0 k" ]( c" N" S$ l   NOP2 E. u) b/ g" ^; g. ^) |
   MOV A,P1
9 g6 C. q( l# r% f! h% V   MOV R1,A" P7 B  `: w1 p. e! B  X0 V" @$ Z' y
      CPL A
/ }5 e9 X  R5 ]9 A8 y   ANL A,#0F0H
' B: Y% t- t" ^5 g# @- i# eS123:JNZ SKEY36 M" Y5 A1 X! N2 A" K
  SETB F0, l7 f% s( J# L
     INC R0
* ?! P$ i) g6 n  g3 |/ _3 R  SETB C
5 h- g" Q- m" w9 h) H7 K$ l1 O  MOV A,R3( J* V+ Z6 _# c
  RLC A
2 B. a* G4 S2 w  h6 N; j  MOV R3,A2 R- s5 {8 \. }: [/ p
  MOV A,R0+ c5 @$ \+ _0 q% v  C
  CJNE A,#04H,SKEY2
9 t" D/ s8 ?- o9 A7 A! x# eEKEY:RET
3 s" r. G5 r3 J0 h( @# G! i* mSKEY3:CLR F0, x+ K* ?4 [' ?5 ]
      MOV A,R1
" j2 ]3 s4 |9 T4 D3 B& d+ h2 X  r2 ?# ]      JNB ACC.4,SKEY51 ~6 y- C* B0 Z* \: F
   JNB ACC.5,SKEY6
% U! t" L9 Q  p& ]1 s8 n7 [' f   JNB ACC.6,SKEY71 z4 y' s/ t0 f1 C& H  R
   JNB ACC.7,SKEY89 |2 y! R' O9 Z/ S
   AJMP EKEY! h9 ~# F# _0 @
SKEY5:MOV A,#00H
1 |+ [- y1 A" ^. X) O      MOV R2,A0 c; G2 G8 b. x4 n. p" j
   AJMP DKEY# z( z6 Y# r1 B7 Y. P9 c
SKEY6:MOV A,#01H
) r. u  n% a' d; x2 Q2 |8 h      MOV R2,A
6 j# K( z( o- A2 w   AJMP DKEY
5 V8 w: P( N; q3 c$ o, S* xSKEY7:MOV A,#02H
- G# J7 F0 ], P+ H     MOV R2,A9 z0 }" Q) g( ~$ w
  AJMP DKEY( N, h5 V- x# t& @1 G1 ~
SKEY8:MOV A,#03H
" n' |: f% M& I0 {" c      MOV R2,A
  R% Z6 _3 O# L  f" p/ H   AJMP DKEY8 h) }) A% w! l* ^  L0 i
DKEY:MOV A,R0
* k5 Q- i5 F8 [# `: X. J; D     ACALL DECODE% b5 {5 i/ g/ V9 Y( Q0 c
  AJMP EKEY
8 G! J2 a* f' p, _) n4 GDECODE:MOV A,R0( B" V( d6 t# h7 H7 g3 M, M
       MOV B,#04H
" l% f  D( I( r2 l    MUL AB9 ^$ R+ t: N9 p  x: p, K
    ADD A,R2: f: p7 ?, x  u  X: p$ [
    RET
  J' E0 l- Z9 _5 Z7 R: ~, R" A' U) KTIME1:   PUSH ACC
  j! S9 J0 O! ^, ^8 N1 M+ p      PUSH PSW
8 Z$ C) r. V; m; b+ v) m   CPL P2.4" V( _+ }) C# c  e
   MOV TL1,20H, ?5 y' g0 B! S$ S1 r
   MOV TH1,21H
3 b2 F. |  o+ }6 k3 M   POP PSW
& S, d+ M5 R- L* \, W   POP ACC
& O5 n: O5 Q" g* i, t1 f   RETI" U8 X& X3 c) m/ s: h
TABLE1:  DW 64021,64103,64260,64400,64524,64580,64684,64777
: I! T: n. ?, ]; X+ w  J- {       DW 64820,64898,64968,65030,65058,65110,65157,65178
$ m6 O8 y: E/ H& t1 V' C* JEND

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊會員

x
回復

使用道具 舉報

2#
發(fā)表于 2009-10-8 06:51:24 | 只看該作者
jili1986729 網(wǎng)友好!
) V# K2 m$ H/ o' _.1 S0 U; m) \- x/ d
進入任何一門“陌生”的知識領(lǐng)域,選準正確的路徑由為重要,會使你少走彎路。2 F7 F; j6 u( J( v0 F- l
.
0 m% h) @9 d4 s) V9 B匯編語言,是在計算機技術(shù)發(fā)展的過程中,由機器碼走向高級語言的過程中的一個
9 F# ]$ h4 y" ^( X過渡語言,當出現(xiàn)了能做底層操作的高級語言的C語言后,匯編語言就應(yīng)該從高校的) P/ E9 d( z! `. J( z, S/ L" e
教材中清除出去,以免浪費學生的精力,以提高學時的有效性。
( U& Y( y2 @2 A- n4 x3 o/ W.
3 a8 @7 t9 K9 l$ C$ Y! m6 }我國高校教材的更新存在著滯后現(xiàn)象,做為學生應(yīng)該學會取舍。
* T" i, v" [7 P* s; ^對此,我能給出如下建議:2 A6 X2 n1 J- }& Q( l7 s
.; {9 C4 R* t& T
1、學單片機應(yīng)該改用C語言,而拋棄匯編。
" [' H! {9 [2 }1 o2、應(yīng)該盡可能的設(shè)計出一套自己專用的萬能板,以應(yīng)對“所有的項目”。
" N1 K) d4 o/ F) {6 u8 Z3、一定要在畫專業(yè)的PCB電路板方面下足功夫。; h& z. {$ g! [% b
4、……
& h) u5 d- R  ]0 c' e/ y# ].
+ }9 ]3 X; j8 ~; J# C# ]) rsyw  091008---06.51
回復 支持 反對

使用道具 舉報

3#
發(fā)表于 2009-10-8 10:21:03 | 只看該作者
不錯啊,我在學習!
回復 支持 反對

使用道具 舉報

4#
發(fā)表于 2009-10-8 13:27:28 | 只看該作者
現(xiàn)在用C語言的比較多
回復 支持 反對

使用道具 舉報

5#
發(fā)表于 2009-10-8 14:42:44 | 只看該作者
嗯 不錯 其實不應(yīng)該叫電子琴  這個離電子琴遠啦  不過能自己動手做東西還是很好的
回復 支持 反對

使用道具 舉報

6#
 樓主| 發(fā)表于 2009-10-8 18:42:02 | 只看該作者
恩,謝謝提醒。
4 A1 j% I* e& Z6 `. r因為在學校里學的是匯編。) q/ v3 L; G, E. C+ H. j
現(xiàn)在正在學習C語言,感覺C有它的好處,但有時匯編語言也有優(yōu)勢
回復 支持 反對

使用道具 舉報

7#
發(fā)表于 2009-10-9 11:21:54 | 只看該作者
造車總工
* ]$ |) Z& g6 N1 Q4 z現(xiàn)在的C語言支持底層編程,能大體說說優(yōu)勢嗎?我有10多年沒用過匯編了,記得96年用C編了段程序,用工具轉(zhuǎn)換成低匯編,程序量太大了,而直接用匯編編程,短短的幾行就可以,不知道現(xiàn)在支持底層編程的C這方面改進的怎么樣了,多年沒接觸單片機,以為大家還都在用匯編呢
回復 支持 反對

使用道具 舉報

8#
發(fā)表于 2009-10-17 17:18:27 | 只看該作者
牛人
回復 支持 反對

使用道具 舉報

9#
發(fā)表于 2009-10-17 19:54:55 | 只看該作者
在學校時摸索的用用也挺好
回復 支持 反對

使用道具 舉報

10#
發(fā)表于 2009-10-17 20:50:37 | 只看該作者
對于很多低端的單片機,還是用匯編比較多,因為考慮到匯編可以更加精簡,可以節(jié)省很多程序空間,這對于低成本的單片機來說尤為重要。原因很簡單,你如果程序量太大,就只好選用程序空間更多,也更貴的單片機來做。像義隆,中翰等單片機都是用匯編的多。
( [5 k6 X$ K% c3 W* R. N& P* b不過,現(xiàn)在的趨勢上,單片機的程序空間越來越大 ,成本越來越低,用C成為了大勢所趨。
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規(guī)則

小黑屋|手機版|Archiver|機械社區(qū) ( 京ICP備10217105號-1,京ICP證050210號,浙公網(wǎng)安備33038202004372號 )

GMT+8, 2024-9-28 11:24 , Processed in 0.054567 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表