基于STMS的电子琴课设.docx

上传人:b****7 文档编号:10769903 上传时间:2023-02-22 格式:DOCX 页数:15 大小:16.30KB
下载 相关 举报
基于STMS的电子琴课设.docx_第1页
第1页 / 共15页
基于STMS的电子琴课设.docx_第2页
第2页 / 共15页
基于STMS的电子琴课设.docx_第3页
第3页 / 共15页
基于STMS的电子琴课设.docx_第4页
第4页 / 共15页
基于STMS的电子琴课设.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

基于STMS的电子琴课设.docx

《基于STMS的电子琴课设.docx》由会员分享,可在线阅读,更多相关《基于STMS的电子琴课设.docx(15页珍藏版)》请在冰豆网上搜索。

基于STMS的电子琴课设.docx

基于STMS的电子琴课设

基于STMS的电子琴课设

stm8/

#include"mapping.inc"

#include"stm8s105k4.inc"

segment'ram0'

KEYNAMEds.b1

T20msBds.b1

R01ds.b1

R02ds.b1

R10ds.b1

R11ds.b1

segment'rom'

main.l

;initializeSP

ldwX,#stack_end

ldwSP,X

#ifdefRAM0

;clearRAM0

ram0_start.bEQU$ram0_segment_start

ram0_end.bEQU$ram0_segment_end

ldwX,#ram0_start

clear_ram0.l

clr(X)

incwX

cpwX,#ram0_end

jruleclear_ram0

#endif

#ifdefRAM1

;clearRAM1

ram1_start.wEQU$ram1_segment_start

ram1_end.wEQU$ram1_segment_end

ldwX,#ram1_start

clear_ram1.l

clr(X)

incwX

cpwX,#ram1_end

jruleclear_ram1

#endif

;clearstack

stack_start.wEQU$stack_segment_start

stack_end.wEQU$stack_segment_end

ldwX,#stack_start

clear_stack.l

clr(X)

incwX

cpwX,#stack_end

jruleclear_stack

intel

;*********************主程序*************

;/***************初始化PD用作临时测试*******************/

;MOVPD_DDR,#0fh

;MOVPD_CR1,#0fh

;MOVPD_ODR,#0fh

;BRESPC_CR2,#2

;SETPC_ODR,#2

;/***********PB口初始化*******************

LDA,PB_DDR

ANDA,#0f0h

LDPB_DDR,A;初始化PB0~3为输入

LDA,PB_CR1

ORA,#0fh

LDPB_CR1,A;上拉

BRESEXTI_CR1,#2;初始化外部中断

BSETEXTI_CR1,#3

BSETITC_SPR2,#0

BSETITC_SPR2,#1

LDA,PB_CR2

ORA,#0fh

LDPB_CR2,A;允许PB中断

;/***********PD口初始化*******************

BSETPD_DDR,#0

BSETPD_CR1,#0

BSETPD_DDR,#1

BSETPD_CR1,#1

;***************输出全为0的扫描码************/

LDA,PD_ODR

ANDA,#0f4h;11111100输出全为0的扫描码

LDPD_ODR,A

;/*******************************************

;BRESPA_DDR,#6;初始化PA6为输入

;BSETPA_CR1,#6;上拉

;BRESEXTI_CR1,#0;初始化外部中断

;BSETEXTI_CR1,#1

;BSETPA_CR2,#6;允许PA中断

;*************初始化频率输出引脚***************

bsetPC_DDR,#1

bsetPC_CR1,#1

bresPC_CR2,#1

;.................初始化TIM2...........

;MOVTIM2_PSCR,#02h;4分频

;MOVTIM2_ARRH,#{HIGH1000};

;MOVTIM2_ARRL,#{LOW1000};即十进制2000

;MOVTIM2_CR1,#04h;每2ms产生一次中断

;BSETTIM2_EGR,#0

;BSETTIM2_IER,#0;允许更新中断

;BSETTIM2_CR1,#0;使CEN位为1,启动

;.................初始化TIM1...........

MOVTIM1_SMCR,#00h

BRESTIM1_ETR,#6

MOVTIM1_PSCRH,#{HIGH40};初始化预分频器

MOVTIM1_PSCRL,#{LOW40}

MOVTIM1_ARRH,#{HIGH41};初始化重装载寄存器

MOVTIM1_ARRL,#{LOW41}

MOVTIM1_RCR,#00H;初始化重复计数寄存器

MOVTIM1_CR1,#04H

BSETTIM1_EGR,#0

BRESTIM1_SR1,#0

BSETTIM1_IER,#0;允许中断

BSETTIM1_CR1,#0;使CEN位为1,启动

MOVTIM1_CCMR1,#38H

MOVTIM1_CCR1H,#{HIGH20}

MOVTIM1_CCR1L,#{LOW20}

MOVTIM1_BKR,#80h

;BSETTIM1_CCER1,#0;使能输出

BSETTIM1_CCER1,#1;高电平有效

rim

;................

infinite_loop.l

jrainfinite_loop

;/**************按键检测****************

*************/

Key_Check_Proc.L

PUSHWX

PUSHWY

PUSHCC

PUSHA

;开始扫描

MOVR11,#00000010B

CLRR10

Key_Check_Proc_LOOP1.l

LDA,PD_ODR

ANDA,#11111100B

ORA,R11

LDPD_ODR,A

nop

BTJTPB_IDR,#0,Key_Check_Proc_NEXT20

;PB0引脚输入为0,说明PB0有按键输入

MOVR11,#0

JPFKey_Check_Proc_NEXT3

Key_Check_Proc_NEXT20.l

BTJTPB_IDR,#1,Key_Check_Proc_NEXT21

;PB1引脚输入为0,说明PB1JPFKey_Check_Proc_NEXT3

MOVR11,#1

JPFKey_Check_Proc_NEXT3

Key_Check_Proc_NEXT21.l

BTJTPB_IDR,#2,Key_Check_Proc_NEXT22

;PB2引脚输入为0,说明PB2有按键输入

MOVR11,#2

JPFKey_Check_Proc_NEXT3

Key_Check_Proc_NEXT22.l

BTJTPB_IDR,#3,Key_Check_Proc_NEXT23

;PB3引脚输入为0,说明PB3有按键输入

MOVR11,#3

JRTKey_Check_Proc_NEXT3

Key_Check_Proc_NEXT23.l

;本列没有按键按下,扫描下一列

LDA,R11

SCF;令C标志位1

RLCA

ANDA,#3h;仅保留扫描码

LDR11,A

INCR10

LDA,R10

CPA,#2

JRCKey_Check_Proc_LOOP1

;已扫描所有列,没有发现按键

JPKey_Check_Proc_EXIT

Key_Check_Proc_NEXT3.l

;形成按键扫描码

CLRWX

LDA,R11

LDXL,A

LDA,#2

MULX,A

LDA,XL

ADDA,R10

LDXL,A

LDA,(KEYTAB,X)

;ORA,#80h

LDKEYNAME,A

;/***************对应输出音调******************

CPA,#00h

JREQMusic_1

CPA,#01h

JREQMusic_2

CPA,#02h

JREQMusic_3

CPA,#03h

JREQMusic_4

CPA,#04h

JREQMusic_5

CPA,#05h

JREQMusic_6

CPA,#06h

JREQMusic_7

JPMusic_8

;***************对应输出音调1***********************

Music_1.L

MOVTIM1_PSCRH,#{HIGH43};初始化预分频器

MOVTIM1_PSCRL,#{LOW43}

MOVTIM1_ARRH,#{HIGH44};初始化重装载寄存器

MOVTIM1_ARRL,#{LOW44}

JPDelay_ms;输出对应音调之后跳转到延时

;***************对应输出音调2***********************

Music_2.L

MOVTIM1_PSCRH,#{HIGH40};初始化预分频器

MOVTIM1_PSCRL,#{LOW40}

MOVTIM1_ARRH,#{HIGH41};初始化重装载寄存器

MOVTIM1_ARRL,#{LOW41}

JPDelay_ms;输出对应音调之后跳转到延时

;***************对应输出音调3***********************

Music_3.L

MOVTIM1_PSCRH,#{HIGH38};初始化预分频器

MOVTIM1_PSCRL,#{LOW38}

MOVTIM1_ARRH,#{HIGH39};初始化重装载寄存器

MOVTIM1_ARRL,#{LOW39}

JRTDelay_ms;输出对应音调之后跳转到延时

;***************对应输出音调4***********************

Music_4.L

MOVTIM1_PSCRH,#{HIGH37};初始化预分频器

MOVTIM1_PSCRL,#{LOW37}

MOVTIM1_ARRH,#{HIGH38};初始化重装载寄存器

MOVTIM1_ARRL,#{LOW38}

JRTDelay_ms;输出对应音调之后跳转到延时

;***************对应输出音调5***********************

Music_5.L

MOVTIM1_PSCRH,#{HIGH35};初始化预分频器

MOVTIM1_PSCRL,#{LOW35}

MOVTIM1_ARRH,#{HIGH36};初始化重装载寄存器

MOVTIM1_ARRL,#{LOW36}

JRTDelay_ms;输出对应音

调之后跳转到延时

;***************对应输出音调6***********************

Music_6.L

MOVTIM1_PSCRH,#{HIGH33};初始化预分频器

MOVTIM1_PSCRL,#{LOW33}

MOVTIM1_ARRH,#{HIGH34};初始化重装载寄存器

MOVTIM1_ARRL,#{LOW34}

JRTDelay_ms;输出对应音调之后跳转到延时

;***************对应输出音调7***********************

Music_7.L

MOVTIM1_PSCRH,#{HIGH31};初始化预分频器

MOVTIM1_PSCRL,#{LOW31}

MOVTIM1_ARRH,#{HIGH32};初始化重装载寄存器

MOVTIM1_ARRL,#{LOW32}

JRTDelay_ms;输出对应音调之后跳转到延时

;***************对应输出音调1'**********************

Music_8.L

MOVTIM1_PSCRH,#{HIGH30};初始化预分频器

MOVTIM1_PSCRL,#{LOW30}

MOVTIM1_ARRH,#{HIGH31};初始化重装载寄存器

MOVTIM1_ARRL,#{LOW31}

JRTDelay_ms;输出对应音调之后跳转到延时

;***********延时*************************

Delay_ms:

BSETTIM1_CCER1,#0;使能输出

LDA,PB_IDR

ORA,#11110000B

CPA,#0ffh

JRNEDelay_ms

;movR01,#200;R2赋值200

;Delay_Xunhuan:

;movR02,#200;R2赋值200

;Delay_Xunhuan1:

;DECR02

;JRNEDelay_Xunhuan1;循环

;DECR01

;JRNEDelay_Xunhuan;循环

;********************************************

Key_Check_Proc_EXIT.l

BRESTIM1_CCER1,#0;禁止输出

LDA,PD_ODR

ANDA,#0f4h

LDPD_ODR,A

LDA,PB_CR2

ORA,#0fh

LDPB_CR2,A;允许PB中断

POPA

POPCC

POPWY

POPWX

RETF

RETF

RETF

RETF

Delay_us.l

PUSHWX

PUSHWY

PUSHCC

PUSHA

movR02,#50;R2赋值200

Delay_Xunhuan1:

DECR02

JRNEDelay_Xunhuan1;循环

POPA

POPCC

POPWY

POPWX

RETF

RETF

RETF

RETF

;***************按键扫描码及按键名******************

KEYTAB.l

DC.B00H;扫描码为0对应音调1

DC.B01H;扫描码为1对应音调2

DC.B02H;扫描码为2对应音调3

DC.B03H;扫描码为3对应音调4

DC.B04H;扫描码为4对应音调5

DC.B05H;扫描码为5对应音调6

DC.B06H;扫描码为6对应音调7

DC.B07H;扫描码为7对应音调8

;*****************************************************/

interruptPORTB_INT

PORTB_INT.l

;TNZT20msB

;JRNEPORTB_INT_EXIT

;MOVT20msB,#10

CALLFDelay_us

LDA,PB_IDR

ORA,#11110000B

CPA,#0ffh

JREQPORTB_INT_EXIT

LDA,PB_CR2

ANDA,#0f0h

LDPB_CR2,A

;BRESPC_ODR,#2

CALLFKey_Check_Proc

PORTB_INT_EXIT.l

iret

iret

iret

iret

interruptNonHandledInterrupt

NonHandledInterrupt.l

iret

motorola

segment'vectit'

dc.l{$82000000+main};reset

dc.l{$82000000+NonHandledInterrupt};trap

dc.l{$82000000+NonHandledInterrupt};irq0

dc.l{$82000000+NonHandledInterrupt};irq1

dc.l{$82000000+NonHandledInterrupt};irq2

dc.l{$82000000+NonHandledInterrupt};irq3

dc.l{$82000000+PORTB_INT};irq4

dc.l{$82000000+NonHandledInterrupt};irq5

dc.l

{$82000000+NonHandledInterrupt};irq6

dc.l{$82000000+NonHandledInterrupt};irq7

dc.l{$82000000+NonHandledInterrupt};irq8

dc.l{$82000000+NonHandledInterrupt};irq9

dc.l{$82000000+NonHandledInterrupt};irq10

dc.l{$82000000+NonHandledInterrupt};irq11

dc.l{$82000000+NonHandledInterrupt};irq12

dc.l{$82000000+NonHandledInterrupt};irq13

dc.l{$82000000+NonHandledInterrupt};irq14

dc.l{$82000000+NonHandledInterrupt};irq15

dc.l{$82000000+NonHandledInterrupt};irq16

dc.l{$82000000+NonHandledInterrupt};irq17

dc.l{$82000000+NonHandledInterrupt};irq18

dc.l{$82000000+NonHandledInterrupt};irq19

dc.l{$82000000+NonHandledInterrupt};irq20

dc.l{$82000000+NonHandledInterrupt};irq21

dc.l{$82000000+NonHandledInterrupt};irq22

dc.l{$82000000+NonHandledInterrupt};irq23

dc.l{$82000000+NonHandledInterrupt};irq24

dc.l{$82000000+NonHandledInterrupt};irq25

dc.l{$82000000+NonHandledInterrupt};irq26

dc.l{$82000000+NonHandledInterrupt};irq27

dc.l{$82000000+NonHandledInterrupt};irq28

dc.l{$82000000+NonHandledInterrupt};irq29

end

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1