我自己用单片机做的电子琴
本帖最后由 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 jili1986729 网友好!
.
进入任何一门“陌生”的知识领域,选准正确的路径由为重要,会使你少走弯路。
.
汇编语言,是在计算机技术发展的过程中,由机器码走向高级语言的过程中的一个
过渡语言,当出现了能做底层操作的高级语言的C语言后,汇编语言就应该从高校的
教材中清除出去,以免浪费学生的精力,以提高学时的有效性。
.
我国高校教材的更新存在着滞后现象,做为学生应该学会取舍。
对此,我能给出如下建议:
.
1、学单片机应该改用C语言,而抛弃汇编。
2、应该尽可能的设计出一套自己专用的万能板,以应对“所有的项目”。
3、一定要在画专业的PCB电路板方面下足功夫。
4、……
.
syw091008---06.51 不错啊,我在学习! 现在用C语言的比较多 嗯 不错 其实不应该叫电子琴这个离电子琴远啦不过能自己动手做东西还是很好的 恩,谢谢提醒。
因为在学校里学的是汇编。
现在正在学习C语言,感觉C有它的好处,但有时汇编语言也有优势 造车总工
现在的C语言支持底层编程,能大体说说优势吗?我有10多年没用过汇编了,记得96年用C编了段程序,用工具转换成低汇编,程序量太大了,而直接用汇编编程,短短的几行就可以,不知道现在支持底层编程的C这方面改进的怎么样了,多年没接触单片机,以为大家还都在用汇编呢 牛人:handshake 在学校时摸索的用用也挺好 对于很多低端的单片机,还是用汇编比较多,因为考虑到汇编可以更加精简,可以节省很多程序空间,这对于低成本的单片机来说尤为重要。原因很简单,你如果程序量太大,就只好选用程序空间更多,也更贵的单片机来做。像义隆,中翰等单片机都是用汇编的多。
不过,现在的趋势上,单片机的程序空间越来越大 ,成本越来越低,用C成为了大势所趋。
页:
[1]
2