毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

单片机电子琴源代码及PCB板电路图设计 第3页

更新时间:2010-2-14:  来源:毕业论文
单片机电子琴源代码及电路图设计
KEY:   MOV R3,#00H                    ; KEY子程序,判断有键按下否?第几个键?
       MOV R1,#0FFH
       MOV R0,#00H
       MOV A,R1
       MOV P2,A
       MOV A,P2
       CLR C
       CPL C                           ;利用标志位CY来判断是哪个键按下
       MOV R2,#08H
WAIT3: RLC A                            ;移位判断
       JNC STORE
       INC R0      
       DJNZ R2,WAIT3
STORE: MOV 22H,R0                   ;将按键号存22H,R3=0有键按下
       MOV R3,#00H
       RET
BREAK: PUSH ACC                    ; 中断产生方波,从P1.0口输出
       PUSH PSW
       MOV TL0,20H
       MOV TH0,21H
       CPL P1.0
       POP PSW
       POP ACC
       RETI
TABLE2: DW 65030,64968,64898,64820,64777,64684,64580   ; 7,6,5,4,3,2,1
       END
START :   MOV  TMOD,#00010000B     ;设TIMER1在MODE1
       SETB EA                         ;中断使能
       SETB ET1                        ; 设置定时器1中断 
       SETB TR1                        ; 启动定时器1
START0:   MOV  30H,#00           ;取简谱码指针
NEXT:     MOV  A,30H              ;简谱码指针载入A
           MOV  DPTR,#TABLE0       ;至TABLE0取简谱码
           MOVC A,@A+DPTR
           MOV  R2,A             ;取到的简谱码暂存于R2
           JZ  END0                ;是否取到00(结束码)?
           ANL  A,#0FH           ;不是,则取低4位(节拍码)
           MOV    R5,A                ;将节拍码存入R5
           MOV    A,R2                ;将取到的简谱码再载入A
           SWAP    A;                 ;高低4位交换
           ANL     A,#0FH             ;取低4位(音符码)
           JNZ      SING               ;取到的音符码是否为0?
           CLR      TR1                ;是,则不发音
           JMP      D1                 ;跳至D1
SING:     DEC      A                   ;取到的音符减1(不含0)
           MOV  22H,A            ;存入(22H)
           RL  A                    ;乘2
         MOV  DPTR,#TABLE1       ;至TALE1取相对的高位字节计数
                   值                                                
           MOVC A,@A+DPTR
           MOV    TH1,A               ;取到的高位字节存入TH1
           MOV  21H,A             ;取到的高位字节存入(21H)
           MOV     A,22H              ;再载入取到的音符码
           RL  A                    ;乘2
           INC  A                  ;加1
     MOVC A,@A+DPTR            ;至TABLE1取相对的低位字节计
                    数值
           MOV    TL1,A               ;取到的低位字节存入TL1
           MOV     20H,A              ;取到的低位字节存入(20H)
           SETB     TR1                ;启动TIMER1
  D1:     CALL  DELAY                 ;基本单位时间1/4拍187毫秒
           INC     30H            ;取简谱码指针加1
           JMP        NEXT           ;取下一个码
END0:  CLR      TR1            ;停止TIMER1
   JMP       START0         ;重复循环
TIM0:   PUSH     ACC             ;将A的值暂存于堆栈
        PUSH     PSW             ;将PSW的值暂存于堆栈
        MOV       TL1,20H        ;重设计数值
        MOV       TH1,21H
        CPL  P1.0           ;将P1.0位反相
        POP       PSW             ;至堆栈取回PSW的值
        POP       ACC             ;到堆栈取回A的值
        RETI                      ;返回主程序
DELAY: MOV      R7,#02           ;125毫秒
D2:    MOV      R4,#125

上一页  [1] [2] [3] [4] 下一页

单片机电子琴源代码及PCB板电路图设计 第3页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。