单片机(微机)原理课程设计 步进电机正反转 2秒内加减速程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
30转每分钟正转
ORG 0000H;起始地址
LJMP MAIN;长跳转到main
ORG 001BH;定时器1中断入口
LJMP ZD;跳转到中断指令
ORG 002FH;随便给一个数
MAIN: MOV SP,#6FH;给堆栈赋地址
MOV SCON,#00H;串口工作于方式0
MOV TMOD,#15H;定时器1工作于方式1,计数器0工作于方式1
MOV TH0,#00H;计数器的高8位为零
MOV TL0,#00H;计数器的低8位为零
MOV TH1,#3CH;即十位数的60
MOV TL1,#0B0H;即十位数的176,定时器1赋初值,3CB0H的值为15536,65536-15536=50000,一个机器周期为1us,十六进制为3CB0;定时50ms,计数器0计数
MOV R7,#20;循环计数20次共定时1s
MOV P1,#00H;以正传为例
MOV 30H,#01H
MOV 31H,#02H
MOV 32H,#04H
MOV 33H,#08H
MOV 34H,#08H
MOV 35H,#04H
MOV 36H,#02H
MOV 37H,#01H
SETB EA;允许中断
SETB ET1;允许定时器/计数器1中断
SETB TR1;启动定时器1
SETB TR0;启动计数器0
START: MOV R0,#30H
MOV R6,#4
LOOP1: MOV A,@R0
MOV P1,A
LCALL DELAY
INC R0
DJNZ R6,LOOP1
SJMP START
ZD: MOV TH1,#3CH
MOV TL1,#0B0H
DJNZ R7,HH
MOV A,TL0
MOV TL0,#00H
MOV B,#5
MUL AB
MOV B,#3
DIV AB;计算转速,存于A中
LCALL BCD
LCALL DISPLAY
MOV R7,#20
HH: RETI
DELAY: MOV R5,#50;150000/(50*100)=30r/min
DE1: MOV R4,#100
DE2: DJNZ R4,DE2
DJNZ R5,DE1
RET
BCD: MOV B,#100
DIV AB
MOV 78H,A
MOV A,#10
XCH A,B
DIV AB
MOV 79H,A
MOV 7AH,B
RET
DISPLAY:MOV R3,#3
MOV R1,#7AH
MOV DPTR,#TABLE
LOOP3: MOV A,@R1
MOVC A,@A+DPTR
MOV SBUF,A
DEC R1
LOOP4: JNB TI,LOOP4
CLR TI
DJNZ R3,LOOP3
RET
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH 30转每分钟反转
反转只需把START子程序中第一句话的#30H改为#34H即可
2秒内加减速
ORG 0000H;起始地址
LJMP MAIN;长跳转到main
ORG 001BH;定时器1中断入口
LJMP ZD;跳转到中断指令
ORG 002FH;随便给一个数
MAIN: MOV SP,#6FH;给堆栈赋地址
MOV R2,#2
MOV SCON,#00H;串口工作于方式0
MOV TMOD,#15H;定时器1工作于方式1,计数器0工作于方式1
MOV TH0,#00H;计数器的高8位为零
MOV TL0,#00H;计数器的低8位为零
MOV TH1,#3CH;即十位数的60
MOV TL1,#0B0H;即十位数的176,定时器1赋初值,3CB0H的值为15536,65536-15536=50000,一个机器周期为1us,十六进制为3CB0;定时50ms,计数器0计数
MOV R7,#20;循环计数20次共定时1s
MOV P1,#00H;以正传为例
MOV 30H,#01H
MOV 31H,#02H
MOV 32H,#04H
MOV 33H,#08H
MOV 34H,#08H
MOV 35H,#04H
MOV 36H,#02H
MOV 37H,#01H
SETB EA;允许中断
SETB ET1;允许定时器/计数器1中断
SETB TR1;启动定时器1
SETB TR0;启动计数器0
START: MOV R0,#30H
MOV R6,#4
LOOP1: MOV A,@R0
MOV P1,A
LCALL DELAY
INC R0
DJNZ R6,LOOP1
SJMP START
ZD: MOV TH1,#3CH
MOV TL1,#0B0H
DJNZ R7,HH
MOV A,TL0
MOV TL0,#00H
MOV B,#5
MUL AB
MOV B,#3
DIV AB;计算转速,存于A中
LCALL BCD
LCALL DISPLAY
MOV R7,#20
DJNZ R2,HH
MOV R2,#1
HH: RETI
DELAY: MOV R5,#200
MOV A,#2
SUBB A,R2
MOV B,#180
MUL AB
MOV R5,A
MOV A,#200
SUBB A,R5
MOV R5,A
DE1: MOV R4,#100
DE2: DJNZ R4,DE2
DJNZ R5,DE1
RET
BCD: MOV B,#100
DIV AB
MOV 78H,A
MOV A,#10
XCH A,B
DIV AB
MOV 79H,A
MOV 7AH,B
RET
DISPLAY:MOV R3,#3
MOV R1,#7AH
MOV DPTR,#TABLE
LOOP3: MOV A,@R1
MOVC A,@A+DPTR