0T1中断
ORG0030H系统初始化
STARTMOVSP60H赋初值堆栈指针
MOVR000H给R0送值0
MOVR100H给R1送值0
CLRP15置0
CLRP16置0
CLRP17置0
MOVTMOD01H写控制字控制方式
MOVTL00FFH置定时常数
fMOVTH00FFH
SETBEA允许中断
SETBEX0允许外部中断0
SETBET0允许TL0中断
CLRIT0
SETBTR0启动TL0
图31主流程图
32数码显数设计
通过P11P12口来控制数码显示通过查表和调用延时实现数的显示程序代码
MOVDPTRTAB
MOV40H0置0
MOV41H0置0
LEDSETBP11P11置1
CLRP12P12清0
MOVA40H将40H的内容送往A
MOVCAADPTR查表
MOVP0A查表所得A值送往P0口
LCALLTTS调用延时
CLRP11P11清0
SETBP12P12置1
MOVA41H将41H的内容送往A
MOVCAADPTR查表
MOVP0A查表所得A值送往P0口
fLCALLTTS调用延时
CLRP12P12口清0
LJMPLED跳转到LED
ORG2000H
TABDB40H79H24H30H19H
DB12H02H78H00H10H
33功能程序设计
结束中断后转入相应的功能键程序为加速、减速、正转、反转、暂停程序代码
ITT0CPLP15P15口取反
JNBP15Z1
MOVA0FFH低电平定时
SUBBAR0
MOVTH0A
SETBTR0启动TL0
RETI
Z1MOVTH0R0高电平定时
SETBTR0
RETI
INT0CLREX0实现键盘控制
MOVA0FFH
MOVP2A
MOVAP2
JNBACC0JIA
JNBACC1JIAN
JNBACC2FF
f图32数码显示流程图图33中断子程序流程图JNBACC3ZZ
JNBACC4TZ
AJMPCC
JIACJNER00FFHAA实现电机加速
AJMPCC
AAMOVAR0
ADDA25
MOVR0A
AJMPCC
JIANCJNER000BB实现电机减速
AJMPCC
BBMOVAR0
SUBBA25
MOVR0A
AJMPCC
CCMOVAR0数码显数
MOVB25
fDIVAB
MOVB10
DIVAB
MOV40HA
MOV41HB
SETBEX0
LCALLTTS调用延时
LCALLTTS调用延时
LCALLTTS调用延时
LCALLTTS调用延时
RETI
FFSETBP16电机反传
CLRP17
LCALLTTS
LCALLTTS
LCALLTTS
SETBEX0
RETI
ZZCLRP16电机正转
SETBP17
LCALLTTS
LCALLTTS
LCALLTTS
SETBEX0
RETI
TZCLRP16实现电机停止CLRP17
LCALLTTS
LCALLTTS
LCALLTTS
SETBEX0
RETI
TTSMOVR30E0H延时子程序TT1SMOVR440H
fTT0SDJNZR4TT0S
DJNZR3TT1S
RET
END
34仿真图
在该设计中利用Proteus软件进行仿真。仿真结果如图34所示
图34仿真图
相应电机的显示如图35所示
f图35仿真结果
35仿真结果分析
当仿真开始运行时r