找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 7297|回复: 13

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

[复制链接]
发表于 2009-10-7 13:40:44 | 显示全部楼层 |阅读模式
本帖最后由 jili1986729 于 2009-10-7 13:42 编辑
" q9 k& H4 l7 r" ^, Z; o) t2 H  L) T/ g
我自己用单片机做的电子琴,比较简单,用了一个功放,自己做了个矩阵键盘
* w+ ?/ m. f. X! `' G' H: f单片机应该用892051,这里89c51,有点浪费
* f- N+ A3 \+ j/ \$ \) o( f8 D% k* P& d# }
程序:
9 C+ f9 A" l+ q+ ?! g. D' aORG 00H
7 f: V5 l3 t2 i  EAJMP START
3 Y1 C  F4 D6 WORG 001BH
, g  U  l! I3 oLJMP TIME1
0 X0 e/ f5 }/ t1 qORG 30H& J: U0 l5 [) k$ G- o  g# _, C
START:MOV TMOD,#10H1 |) b! D/ b$ N8 o' B
      MOV IE,#88H
$ ~5 Y9 a- h1 {. ^; \5 L" {' @KEY:SETB F0) J/ J# J& {5 M
    CLR EA8 B  v! p8 }. C0 C0 v
CLR TR1. c4 X% X  K2 J' L7 A* |" ?2 c
    MOV P1,#0F0H% F; N( P7 K$ w$ H( T
KEY1:MOV A,P1: I! e, k* R. S9 K4 P' b6 H
  CPL A( M0 j" t8 k0 q4 V
  ANL A,#0F0H
0 W- j; N& c0 G3 r  JZ KEY: W  I, N0 U2 o& ^7 S4 v
  CLR F03 f. R$ J) h: ^% x# K9 E
L1: LCALL SKEY
7 @5 g0 W( `2 R4 N* w  CLR EA* e  X: t' {. \, P: L+ Q5 B
  CLR TR1$ F/ ?. M5 k! Z8 ^- c  g2 u
  JB F0,KEY( D/ ?3 c5 V+ l; [
MOV 22H,A
0 `; H# ~0 h+ a4 X( E   ADD A,22H
$ h2 E. c% s! S% x8 L, p   MOV R3,A9 W7 }, q6 p7 e! A6 y& }  K
   MOV DPTR,#TABLE1
/ |- c4 Q2 D& T5 r8 Q   MOVC A,@A+DPTR
& a+ _$ ~1 \1 `' B/ l   MOV TH1,A
) z! O" K3 H6 R9 l, }, K   MOV 21H,A+ S( N# K& v( q9 Z1 O% f
   MOV A,R37 u+ }' k0 L% h/ n2 o
   INC A
* Z. M: r- ?, ~& i   MOVC A,@A+DPTR! N; m# Y( ?: _1 z( G
   MOV TL1,A0 h) ^6 a5 O9 f  i" ^3 H0 H3 {
   MOV 20H,A
9 P# r2 G5 ]4 V9 I, }% ?      SETB EA' n9 _) G( k  u- g9 U
   SETB TR1; G, y" ?2 `/ k5 J4 y# O
L2:CALL SKEY6 r+ {. ?9 c) l0 D, ~+ b
   SETB EA
3 \2 }* J& w4 s7 C) A   SETB TR1
6 ~5 b3 B& F% d) c: D. |& R* n9 o   JB F0,KEY
& @& h0 T5 g6 a* r' O- @1 t0 N   LJMP L23 s1 y. R1 \5 L9 H6 y# |3 t
SKEY:MOV A,#00. _: C$ K6 E1 a" o
     MOV R0,A
! U4 L3 @9 S: a5 V2 M  MOV R1,A% R2 X2 d% G5 S2 u" o
  MOV R3,#0FEH( c) m7 j9 q2 S, k& _; [0 U
SKEY2:MOV A,R3
  b. T: P9 G% w; z      MOV P1,A
6 b/ r( W* Y2 W$ u: X) a. a   NOP% R+ Z" O/ V$ V1 ^$ b
   NOP
% w9 ?+ [! {2 f. ?7 s. q" b% `% O   NOP1 @4 J& C1 q. g* ~
   MOV A,P1( I. P4 c  w$ @2 R. T
   MOV R1,A
4 ?" s8 n9 @3 S; _      CPL A% f  z" W% x0 K) ~, U+ W1 D
   ANL A,#0F0H( F- `* B' y1 e4 n2 f# k& X7 n
S123:JNZ SKEY3
5 ]7 ]- T& o9 b5 K6 d3 r  SETB F0
' [0 w- |# c4 k, t     INC R0: m$ n. B! v7 R1 s5 r: h7 `
  SETB C
3 V) r# G( X9 G) r  MOV A,R39 t! i6 N7 n* s5 j  M, a
  RLC A
$ k9 j) }' ]! ?9 h4 \  MOV R3,A
5 Z8 H6 x1 F- P5 u" v' c  MOV A,R0& A) i2 }8 v' p% _$ U
  CJNE A,#04H,SKEY2: P1 q" U  M. M
EKEY:RET: {/ K3 }: ?2 O
SKEY3:CLR F09 E5 R7 M* |, {
      MOV A,R1* P% D. l: c" Y: g5 J- l
      JNB ACC.4,SKEY5
9 T2 I6 F+ E1 b, a) i   JNB ACC.5,SKEY6
( E& A: A$ G) y) |9 }9 `& F   JNB ACC.6,SKEY7% t5 p0 \6 j9 F' q: z
   JNB ACC.7,SKEY8; Q! a/ S# R1 |  d
   AJMP EKEY
4 y) V; @4 W/ q: S& Z( ~SKEY5:MOV A,#00H
. D# c$ \/ O& X, @% I      MOV R2,A, O% q7 N; \! F4 N# p% d+ W3 r
   AJMP DKEY+ D/ E. c# Y1 z  i: z
SKEY6:MOV A,#01H
6 ~0 K9 `5 l. n" N7 Q- v- r      MOV R2,A* O- V5 u: e7 s$ O% |: G
   AJMP DKEY/ r$ K! B9 m. |1 n
SKEY7:MOV A,#02H# H8 i& O; y* g; d- O$ k. ^
     MOV R2,A
+ J* P: i! s3 B  P, I' Z  AJMP DKEY
1 C5 [* |+ n" R0 iSKEY8:MOV A,#03H
. V2 ~! f' x- B; S      MOV R2,A
+ H5 u, `) ^  b   AJMP DKEY8 [( ]& W2 J! |, I" ~6 D
DKEY:MOV A,R00 D% Q- a* w+ s: I
     ACALL DECODE$ R( D7 ~1 f  V# `! ^- ~0 s+ D
  AJMP EKEY
5 h" T+ Z) x' \* p0 s8 cDECODE:MOV A,R0
( k1 e& [4 y, U/ Y       MOV B,#04H
6 l& Z% d/ O3 {5 f! c9 i    MUL AB2 B# U0 {6 F3 ^1 V4 n9 s
    ADD A,R21 Z" k, |" s6 M2 W: A
    RET
9 \7 J% b/ y; E' s# {; U5 Q8 Q6 VTIME1:   PUSH ACC$ J: `4 o! l7 q# O5 \8 d% V
      PUSH PSW
+ a  L. r2 ]  ~# Y   CPL P2.4& Y# ~7 U6 o! x4 J9 ^. V6 @8 F. E
   MOV TL1,20H
0 Q6 v3 r3 Z% _' _  P/ N   MOV TH1,21H/ }$ c$ ^4 C+ \8 r4 F; Q9 M- Y7 s4 O4 h
   POP PSW" E! D- O; z! \+ D! o& E2 s
   POP ACC
4 ^) R, F+ B5 M& ^0 `   RETI# k! k/ W% P8 m' W4 e
TABLE1:  DW 64021,64103,64260,64400,64524,64580,64684,647775 ~# s; {  v+ B( r5 ?
       DW 64820,64898,64968,65030,65058,65110,65157,651784 w5 d- _* B' p6 v1 v! d
END

本帖子中包含更多资源

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

×
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-15 04:12 , Processed in 0.073549 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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