機(jī)械社區(qū)

 找回密碼
 注冊(cè)會(huì)員

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6350|回復(fù): 13
打印 上一主題 下一主題

我自己用單片機(jī)做的電子琴

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2009-10-7 13:40:44 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 jili1986729 于 2009-10-7 13:42 編輯
0 C/ e; E# x0 B- J3 x, ~4 ~' R3 ]- Q$ u0 R% ?4 e, |3 R# W7 M
我自己用單片機(jī)做的電子琴,比較簡(jiǎn)單,用了一個(gè)功放,自己做了個(gè)矩陣鍵盤(pán)
3 k: ^$ i# w" f' Y4 Y單片機(jī)應(yīng)該用892051,這里89c51,有點(diǎn)浪費(fèi)
" g2 @& V- |' L$ O+ I
8 B' X+ t1 I2 f+ C4 }5 {( i. w程序:
/ q2 r; n0 X- A) U5 FORG 00H
- }7 x& R+ _, k2 j3 R& AAJMP START1 A1 B( M  \: w( o; g
ORG 001BH5 |; l' p3 V5 x$ \+ H2 e
LJMP TIME1) e- ~' |, b; S. r. y; p& d
ORG 30H
4 E" n0 J6 g) I3 ?; V  d0 ?START:MOV TMOD,#10H( X3 D1 `5 s% `
      MOV IE,#88H. d# x( N9 S7 e4 f" D
KEY:SETB F0; A5 }; `# ^& w5 e4 i1 e( X
    CLR EA+ K7 e& p  X" ?/ Y
CLR TR1
# m! i7 |1 D2 o2 C. [5 O8 y    MOV P1,#0F0H; I% Q. `5 [; P( p
KEY1:MOV A,P1+ j; F8 h3 T" G3 w' l7 o5 s6 K6 M6 ~
  CPL A: H6 v. Q+ z% @$ \7 O2 U3 v% L* G
  ANL A,#0F0H8 h' f% A9 u, S* x
  JZ KEY8 u9 L, l1 _- i/ y, E* B
  CLR F0( b* q/ n) q/ h6 J
L1: LCALL SKEY  [9 A- `2 B: l* @5 i
  CLR EA3 i/ w" w; J. ?0 g" E9 ]' Q
  CLR TR1
' e, M4 G7 I% o& f/ N/ F  JB F0,KEY
& U+ x: g1 D- u$ zMOV 22H,A2 x) E+ V& d9 T
   ADD A,22H
9 c* \  I3 B% [& L( |1 X) u   MOV R3,A
. j" R8 ^( ]) c( U   MOV DPTR,#TABLE19 G* v, i/ H( o: f9 t
   MOVC A,@A+DPTR1 U5 q& Q5 i3 k( S- R% _
   MOV TH1,A' z  V# C; Z1 ]; V/ \( g+ U& ^4 S
   MOV 21H,A; v" I' u1 R- @6 e1 A' p5 Y
   MOV A,R3
5 x$ N# G  u; }) ^& K3 \   INC A9 ?; N' o; Z: f2 j+ O
   MOVC A,@A+DPTR! T& z* h9 e$ c9 M
   MOV TL1,A
$ g! m9 E. z8 Y1 Q6 y   MOV 20H,A5 C& E* h2 l: M
      SETB EA2 \; U4 u; m$ z3 i9 r
   SETB TR1
3 |2 h* ~6 O6 a# R8 lL2:CALL SKEY
1 ]$ L/ h# x0 y& O  n1 }   SETB EA. Y8 c# C) p. x! u) Y" o7 q
   SETB TR1
6 `) _' y4 ^) g  N   JB F0,KEY
4 a0 t& {' E3 M) E( S" F- ?6 }% B   LJMP L2
6 W' U9 X+ g9 v6 H& w1 l4 ZSKEY:MOV A,#00" E8 o& p! f( z+ i( p
     MOV R0,A! [; P$ n0 \+ {% ]
  MOV R1,A
3 Z) C$ i6 F3 E4 _+ ?9 P  MOV R3,#0FEH' w. u8 u# G7 s" d& f0 m
SKEY2:MOV A,R3
+ t$ H! w1 x3 Q3 o# P# Y# F      MOV P1,A
. W! T$ t% ~+ y7 U7 b* Q   NOP
2 Q* g/ {5 O! [1 u$ m5 q7 G   NOP
) e/ y3 Z+ i/ ?0 N   NOP
# l1 R( ~. F; M+ _# Y) Q; l6 V- r4 {   MOV A,P1
9 K4 v4 @! o, Q) V) A   MOV R1,A
) M6 W1 ]% |& d) A      CPL A
4 c! O! G( [- K% ?0 n- h   ANL A,#0F0H
5 ~! c) R; N  M' c: T( j0 m) R0 ~0 MS123:JNZ SKEY3
9 ]0 p8 [; o) }( }$ `  SETB F0+ s5 C( Z* U+ C! y0 y
     INC R0
) H8 o, r; l0 _5 @4 s4 e9 U  SETB C4 {7 ~' ~! w) z5 [# i/ v$ ^8 R
  MOV A,R3
& J( R& t6 g! M$ C  RLC A
; Z- s& J7 i  y2 n. d6 m  MOV R3,A' @' H$ A. d6 J+ L; M
  MOV A,R0& Y7 n7 g* C# H# |
  CJNE A,#04H,SKEY22 ]9 N! J. [' Y' }6 o, F, S+ m( O' A( t3 W
EKEY:RET2 o, n2 |& p" H+ @# a7 m
SKEY3:CLR F0
5 |, P# W( A0 J$ j' z1 n      MOV A,R10 X1 \9 Z1 }9 d$ e2 [; s( ]3 Y* u
      JNB ACC.4,SKEY5+ }$ J3 n2 j# k( m4 {! x0 u* j
   JNB ACC.5,SKEY6
# A3 z7 N$ f; |6 S  j2 X   JNB ACC.6,SKEY7- z0 `# Y3 f8 D/ n- B. S( k9 o" B
   JNB ACC.7,SKEY8
+ S/ o. X2 w. d0 x! ]; J" k   AJMP EKEY
- f/ H3 _& ^8 T% w" xSKEY5:MOV A,#00H
* A7 o3 f! h9 X) R      MOV R2,A
4 Q6 ^: p3 m0 \, J   AJMP DKEY( }( R$ u9 p7 _6 \, f
SKEY6:MOV A,#01H
: K8 p  N; ]8 }) Y3 j      MOV R2,A
8 w/ c4 |. B+ |   AJMP DKEY
: E7 |. @$ w. z2 d$ Y# Y: mSKEY7:MOV A,#02H
- v% g+ `0 l, \! `     MOV R2,A. B9 Y9 y- Z# t, w
  AJMP DKEY
& X% D5 d2 |# l7 OSKEY8:MOV A,#03H; w  m  K0 B) ]. m( P* Y- A
      MOV R2,A
6 s: w1 @8 l9 w' |8 a, i   AJMP DKEY
4 J1 l( U9 y# G/ L" v) v; X! u4 |DKEY:MOV A,R0
. G; w: a- K. `% g     ACALL DECODE+ r2 W2 {; j4 r9 m* J2 J
  AJMP EKEY( h7 z# }0 H0 L
DECODE:MOV A,R0
# `) y' Z6 t3 F( E       MOV B,#04H
0 m: _- @1 c8 [    MUL AB
) n4 B4 t# h) Z6 k$ f' i+ ^# i    ADD A,R2# Y5 g3 c6 P% C: E, K: ~9 X
    RET
8 F( S" q" A3 a# L# tTIME1:   PUSH ACC
- P3 g3 z, r4 f9 v% j7 `* V+ |      PUSH PSW
+ L; b9 y; v2 b: O0 A% U9 Y   CPL P2.4
! w) u' p4 ~, J' V* b   MOV TL1,20H8 n0 T9 s7 U4 ?9 f0 E) h
   MOV TH1,21H
; y( ]7 K( h5 u' M. F. H   POP PSW$ @4 u  w2 {) N
   POP ACC8 y6 K* a& V  z3 P1 ~) f" n
   RETI
2 u! c, D+ z& L& _5 h2 nTABLE1:  DW 64021,64103,64260,64400,64524,64580,64684,647773 M8 ^/ b* i; y% J, j
       DW 64820,64898,64968,65030,65058,65110,65157,65178! C9 h7 p+ T, l. {: q/ ]
END

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)會(huì)員

x
回復(fù)

使用道具 舉報(bào)

2#
發(fā)表于 2009-10-8 06:51:24 | 只看該作者
jili1986729 網(wǎng)友好!
% R: S# |: z* D9 ?8 |9 A# j.
  Z. X; p; c6 a# v進(jìn)入任何一門(mén)“陌生”的知識(shí)領(lǐng)域,選準(zhǔn)正確的路徑由為重要,會(huì)使你少走彎路。
% {5 F; b9 `' P/ c.
" M/ `$ P0 C: ~匯編語(yǔ)言,是在計(jì)算機(jī)技術(shù)發(fā)展的過(guò)程中,由機(jī)器碼走向高級(jí)語(yǔ)言的過(guò)程中的一個(gè)  q1 ^6 ?/ G( a5 X5 h2 z
過(guò)渡語(yǔ)言,當(dāng)出現(xiàn)了能做底層操作的高級(jí)語(yǔ)言的C語(yǔ)言后,匯編語(yǔ)言就應(yīng)該從高校的
, z# j8 C; b  y! _教材中清除出去,以免浪費(fèi)學(xué)生的精力,以提高學(xué)時(shí)的有效性。1 p; ?8 a3 F5 Z, S+ e# p
.) d5 S/ t1 h) x' b) _) g9 `8 V
我國(guó)高校教材的更新存在著滯后現(xiàn)象,做為學(xué)生應(yīng)該學(xué)會(huì)取舍。* {! H8 w" p( G
對(duì)此,我能給出如下建議:$ c' W+ F" f4 p2 r# e9 G5 p$ S, [
.; @0 _3 F+ {4 |" W: ~* A+ [
1、學(xué)單片機(jī)應(yīng)該改用C語(yǔ)言,而拋棄匯編。
/ h& y& }" [5 c% g: b5 l1 |2 y2、應(yīng)該盡可能的設(shè)計(jì)出一套自己專(zhuān)用的萬(wàn)能板,以應(yīng)對(duì)“所有的項(xiàng)目”。* z! ~% c: I$ E$ ?8 R
3、一定要在畫(huà)專(zhuān)業(yè)的PCB電路板方面下足功夫。
7 V6 \& \* p; ~6 |, t4、……
& o2 P9 D7 i( }.
/ C, J# |1 X5 Isyw  091008---06.51
3#
發(fā)表于 2009-10-8 10:21:03 | 只看該作者
不錯(cuò)啊,我在學(xué)習(xí)!
4#
發(fā)表于 2009-10-8 13:27:28 | 只看該作者
現(xiàn)在用C語(yǔ)言的比較多
5#
發(fā)表于 2009-10-8 14:42:44 | 只看該作者
嗯 不錯(cuò) 其實(shí)不應(yīng)該叫電子琴  這個(gè)離電子琴遠(yuǎn)啦  不過(guò)能自己動(dòng)手做東西還是很好的
6#
 樓主| 發(fā)表于 2009-10-8 18:42:02 | 只看該作者
恩,謝謝提醒。
# S7 g% U( y" s9 c因?yàn)樵趯W(xué)校里學(xué)的是匯編。; N4 y1 O+ _5 i6 W, J- ?
現(xiàn)在正在學(xué)習(xí)C語(yǔ)言,感覺(jué)C有它的好處,但有時(shí)匯編語(yǔ)言也有優(yōu)勢(shì)
7#
發(fā)表于 2009-10-9 11:21:54 | 只看該作者
造車(chē)總工# W) z6 k) ?9 `: q* U
現(xiàn)在的C語(yǔ)言支持底層編程,能大體說(shuō)說(shuō)優(yōu)勢(shì)嗎?我有10多年沒(méi)用過(guò)匯編了,記得96年用C編了段程序,用工具轉(zhuǎn)換成低匯編,程序量太大了,而直接用匯編編程,短短的幾行就可以,不知道現(xiàn)在支持底層編程的C這方面改進(jìn)的怎么樣了,多年沒(méi)接觸單片機(jī),以為大家還都在用匯編呢
8#
發(fā)表于 2009-10-17 17:18:27 | 只看該作者
牛人
9#
發(fā)表于 2009-10-17 19:54:55 | 只看該作者
在學(xué)校時(shí)摸索的用用也挺好
10#
發(fā)表于 2009-10-17 20:50:37 | 只看該作者
對(duì)于很多低端的單片機(jī),還是用匯編比較多,因?yàn)榭紤]到匯編可以更加精簡(jiǎn),可以節(jié)省很多程序空間,這對(duì)于低成本的單片機(jī)來(lái)說(shuō)尤為重要。原因很簡(jiǎn)單,你如果程序量太大,就只好選用程序空間更多,也更貴的單片機(jī)來(lái)做。像義隆,中翰等單片機(jī)都是用匯編的多。
5 x5 B6 D; d; W+ z7 \" n不過(guò),現(xiàn)在的趨勢(shì)上,單片機(jī)的程序空間越來(lái)越大 ,成本越來(lái)越低,用C成為了大勢(shì)所趨。

本版積分規(guī)則

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

GMT+8, 2024-9-22 09:40 , Processed in 0.053792 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表