找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 7199|回复: 13

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

[复制链接]
发表于 2009-10-7 13:40:44 | 显示全部楼层 |阅读模式
本帖最后由 jili1986729 于 2009-10-7 13:42 编辑 . f( b% T3 P. |' @1 p
& \- u- l" K/ z
我自己用单片机做的电子琴,比较简单,用了一个功放,自己做了个矩阵键盘6 ?# @& M  b' b. ?
单片机应该用892051,这里89c51,有点浪费0 [1 n1 N* Y" m3 a2 d+ u

3 p5 d, D3 ^4 f5 B+ D" b程序:
# `3 ^" a! c; ~. C! dORG 00H
0 i; `" w3 ?. ^6 m: kAJMP START+ ~, h' B' i3 s( v! m
ORG 001BH
# F9 I  f% i4 g& Q  Z4 xLJMP TIME1
6 J& s* A- x* m% n9 O$ OORG 30H( `% @: G. b! M+ I7 `4 u# c, B
START:MOV TMOD,#10H
) c( o$ D% A% z- S+ B$ e- G      MOV IE,#88H
. W$ V4 O7 u7 @, K( N0 NKEY:SETB F0
+ X8 V1 C' m- ?; c    CLR EA
1 J  L, c# {! |$ R( t" NCLR TR1' e$ q7 X6 h! p, A
    MOV P1,#0F0H
6 W$ m. Q, q9 l, m" OKEY1:MOV A,P13 ~7 F2 S; r$ E8 P  `
  CPL A
/ ~' X$ S/ N& K7 _  ANL A,#0F0H
! D3 M3 x% x3 `$ a9 k8 m; g! q  JZ KEY) O2 g3 x3 j# ?. ?; M# S
  CLR F0
1 h5 s5 l# |& _; x6 n$ WL1: LCALL SKEY2 O4 G' Q2 O' Q! R& q
  CLR EA
8 U6 {. ?: |4 W+ j9 C) D0 p  CLR TR12 T8 P% }, h$ W; |/ ^
  JB F0,KEY
  U7 K4 L' R2 t' g3 V) E; y( q$ BMOV 22H,A
# h9 `* {7 O' z   ADD A,22H& T2 I; L# V: T4 P% A
   MOV R3,A% u& t& H# q  B0 N8 N
   MOV DPTR,#TABLE1
- B4 A5 ]* x! K0 X  a   MOVC A,@A+DPTR* P" S; Y$ E' N% r
   MOV TH1,A9 W0 ?& @2 E( n, ?& D8 ?
   MOV 21H,A( w4 w4 d6 b$ S8 s7 u8 V/ E2 z; @2 I
   MOV A,R3) |  E% X. @. K5 g0 T$ h! g
   INC A$ ^. M% R& B; o( G9 V2 p
   MOVC A,@A+DPTR
- N& T( V: c3 H* P, o5 E' R* I   MOV TL1,A: _& t5 f5 X& Y' p
   MOV 20H,A
+ \3 y' U! d) P: q( h      SETB EA
/ U; h' m( Z1 a. B   SETB TR1  v" k* Q: i2 E7 ^0 Q7 g
L2:CALL SKEY
+ |5 v! b+ B  h  L5 J1 O   SETB EA( A2 ]0 J: I/ O. i( H
   SETB TR1
5 ^. C* ~; S" A' |% d, w   JB F0,KEY! P, ~4 W! }! h" q3 [5 c/ ^2 r
   LJMP L2& F' R5 n$ B6 o- X% r% g
SKEY:MOV A,#007 I  z! s9 Y4 z# _4 `
     MOV R0,A
* I; ^8 A* A8 x' V) Z& p  MOV R1,A. V4 R9 G; m5 I
  MOV R3,#0FEH
  }. j, j5 o) \$ B2 X/ XSKEY2:MOV A,R3. h! h& X$ F# ^, g/ L4 e# u
      MOV P1,A6 ~& t: c' Y1 d1 c, s7 h* L3 B; ^* l
   NOP' d9 D7 x$ b7 ?; H1 d
   NOP
, l) Y8 C4 G) R6 w, k' _% \   NOP
5 M/ s, f! r; F, X0 S   MOV A,P1. k1 m8 K' l* @0 c$ \
   MOV R1,A
  K8 X; r+ V4 f2 |7 p      CPL A
# \, z3 L1 {( q# L   ANL A,#0F0H
% c3 E* t5 a* iS123:JNZ SKEY37 w3 h1 k7 y& M/ k$ t2 e5 Q) o
  SETB F0
, d- K( k2 j1 G     INC R0* R) {- w0 T8 D8 [2 A
  SETB C
+ [: ~$ R" z6 N! ^, [  MOV A,R3$ F  r8 ], ^0 s1 ?9 e6 S
  RLC A
' \; m4 ~3 |! g, q9 \2 N8 n  MOV R3,A8 u! ~7 t2 g# w/ ~
  MOV A,R06 |  [. Z6 g; @6 l0 {  N$ Z
  CJNE A,#04H,SKEY2
8 p* H& k  {. [0 ]8 K* D# ZEKEY:RET% ]. b' S5 T5 `5 g  \
SKEY3:CLR F08 [8 N* U# c- ]4 M2 K5 t
      MOV A,R12 q+ Q3 X2 f/ w& X! g
      JNB ACC.4,SKEY5% J5 m& t3 `* ?5 d5 ]6 {1 G
   JNB ACC.5,SKEY6
1 O0 M  p% J& P- }$ x! R& L   JNB ACC.6,SKEY7
3 w8 N) X: E9 ?7 ?) }# I$ ~   JNB ACC.7,SKEY87 S0 t0 F( ~7 _& t) p
   AJMP EKEY
: ^2 v/ E. N/ E4 @* D7 q$ dSKEY5:MOV A,#00H
, K8 `+ I6 b( U4 [8 E" i      MOV R2,A& D% a9 V6 I7 @, p& e
   AJMP DKEY
' g9 L+ H+ T& X/ }1 t( }SKEY6:MOV A,#01H3 z* N; f8 J5 Z/ g
      MOV R2,A' r' v; N& g& }3 S' w; t' h6 V
   AJMP DKEY/ }! g: I7 D7 ~( z0 p- y
SKEY7:MOV A,#02H
  Y  E- ?) h, h1 c     MOV R2,A
( E2 l" w; o  u& I" B/ t  AJMP DKEY
% Q- _# I& h+ _& M& k3 O* D0 `SKEY8:MOV A,#03H
& v) E! D& m/ {      MOV R2,A
- J7 n2 F4 s* B   AJMP DKEY
# r, d8 e3 B+ dDKEY:MOV A,R0
& B' }- O( H7 s- }; Q* p% W     ACALL DECODE% G; F/ D7 s, y; ~, d
  AJMP EKEY; e: F9 x: u; i1 w9 C' p$ s/ l
DECODE:MOV A,R08 P) s# y1 c5 H" W. b
       MOV B,#04H! b& c+ q# _2 ]+ Q: N, l4 K* ?' |
    MUL AB
" c2 h; H4 u/ r' y    ADD A,R2
  ~  o6 i) Y6 U- ^2 l+ k% I    RET. |- P7 [9 Y* q
TIME1:   PUSH ACC& e* J6 B9 _% a  C
      PUSH PSW- H; Z1 _" ]# @$ G
   CPL P2.4% P" i( ^8 n; W9 {& B
   MOV TL1,20H8 N( Q' [/ q' }+ W2 b
   MOV TH1,21H( X' T$ m8 a9 w
   POP PSW3 D; u# q8 z& x8 i* D. a4 H/ \
   POP ACC7 a- n$ w4 R: Q4 b: }4 t
   RETI
) K$ `; q: D" r% Z0 JTABLE1:  DW 64021,64103,64260,64400,64524,64580,64684,647774 |6 T: w3 Q! Q% S2 x
       DW 64820,64898,64968,65030,65058,65110,65157,651782 E6 S$ ~/ t, U7 m! ~
END

本帖子中包含更多资源

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

×
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-4 10:41 , Processed in 0.070183 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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