单片机(微机)原理课程设计 步进电机正反转 2秒内加减速程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档