jili1986729 发表于 2009-10-7 13:40:44

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

本帖最后由 jili1986729 于 2009-10-7 13:42 编辑

我自己用单片机做的电子琴,比较简单,用了一个功放,自己做了个矩阵键盘
单片机应该用892051,这里89c51,有点浪费

程序:
ORG 00H
AJMP START
ORG 001BH
LJMP TIME1
ORG 30H
START:MOV TMOD,#10H
      MOV IE,#88H
KEY:SETB F0
    CLR EA
CLR TR1
    MOV P1,#0F0H
KEY1:MOV A,P1
CPL A
ANL A,#0F0H
JZ KEY
CLR F0
L1: LCALL SKEY
CLR EA
CLR TR1
JB F0,KEY
MOV 22H,A
   ADD A,22H
   MOV R3,A
   MOV DPTR,#TABLE1
   MOVC A,@A+DPTR
   MOV TH1,A
   MOV 21H,A
   MOV A,R3
   INC A
   MOVC A,@A+DPTR
   MOV TL1,A
   MOV 20H,A
      SETB EA
   SETB TR1
L2:CALL SKEY
   SETB EA
   SETB TR1
   JB F0,KEY
   LJMP L2
SKEY:MOV A,#00
   MOV R0,A
MOV R1,A
MOV R3,#0FEH
SKEY2:MOV A,R3
      MOV P1,A
   NOP
   NOP
   NOP
   MOV A,P1
   MOV R1,A
      CPL A
   ANL A,#0F0H
S123:JNZ SKEY3
SETB F0
   INC R0
SETB C
MOV A,R3
RLC A
MOV R3,A
MOV A,R0
CJNE A,#04H,SKEY2
EKEY:RET
SKEY3:CLR F0
      MOV A,R1
      JNB ACC.4,SKEY5
   JNB ACC.5,SKEY6
   JNB ACC.6,SKEY7
   JNB ACC.7,SKEY8
   AJMP EKEY
SKEY5:MOV A,#00H
      MOV R2,A
   AJMP DKEY
SKEY6:MOV A,#01H
      MOV R2,A
   AJMP DKEY
SKEY7:MOV A,#02H
   MOV R2,A
AJMP DKEY
SKEY8:MOV A,#03H
      MOV R2,A
   AJMP DKEY
DKEY:MOV A,R0
   ACALL DECODE
AJMP EKEY
DECODE:MOV A,R0
       MOV B,#04H
    MUL AB
    ADD A,R2
    RET
TIME1:   PUSH ACC
      PUSH PSW
   CPL P2.4
   MOV TL1,20H
   MOV TH1,21H
   POP PSW
   POP ACC
   RETI
TABLE1:DW 64021,64103,64260,64400,64524,64580,64684,64777
       DW 64820,64898,64968,65030,65058,65110,65157,65178
END

syw开门造车 发表于 2009-10-8 06:51:24

jili1986729 网友好!
.
进入任何一门“陌生”的知识领域,选准正确的路径由为重要,会使你少走弯路。
.
汇编语言,是在计算机技术发展的过程中,由机器码走向高级语言的过程中的一个
过渡语言,当出现了能做底层操作的高级语言的C语言后,汇编语言就应该从高校的
教材中清除出去,以免浪费学生的精力,以提高学时的有效性。
.
我国高校教材的更新存在着滞后现象,做为学生应该学会取舍。
对此,我能给出如下建议:
.
1、学单片机应该改用C语言,而抛弃汇编。
2、应该尽可能的设计出一套自己专用的万能板,以应对“所有的项目”。
3、一定要在画专业的PCB电路板方面下足功夫。
4、……
.
syw091008---06.51

郑华 发表于 2009-10-8 10:21:03

不错啊,我在学习!

FLEI200410 发表于 2009-10-8 13:27:28

现在用C语言的比较多

卓信 发表于 2009-10-8 14:42:44

嗯 不错 其实不应该叫电子琴这个离电子琴远啦不过能自己动手做东西还是很好的

jili1986729 发表于 2009-10-8 18:42:02

恩,谢谢提醒。
因为在学校里学的是汇编。
现在正在学习C语言,感觉C有它的好处,但有时汇编语言也有优势

次元碎片 发表于 2009-10-9 11:21:54

造车总工
现在的C语言支持底层编程,能大体说说优势吗?我有10多年没用过汇编了,记得96年用C编了段程序,用工具转换成低汇编,程序量太大了,而直接用汇编编程,短短的几行就可以,不知道现在支持底层编程的C这方面改进的怎么样了,多年没接触单片机,以为大家还都在用汇编呢

zjhioau 发表于 2009-10-17 17:18:27

牛人:handshake

舟航 发表于 2009-10-17 19:54:55

在学校时摸索的用用也挺好

cc0579 发表于 2009-10-17 20:50:37

对于很多低端的单片机,还是用汇编比较多,因为考虑到汇编可以更加精简,可以节省很多程序空间,这对于低成本的单片机来说尤为重要。原因很简单,你如果程序量太大,就只好选用程序空间更多,也更贵的单片机来做。像义隆,中翰等单片机都是用汇编的多。
不过,现在的趋势上,单片机的程序空间越来越大 ,成本越来越低,用C成为了大势所趋。
页: [1] 2
查看完整版本: 我自己用单片机做的电子琴