单片机设计,在Proteus仿真下,按键实现电机正反转
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
附仿真工程和单片机汇编语言代码
- FOR_LED BIT P2.1 ;正转指示灯
- REV_LED BIT P2.2 ;反转指示灯
- ORG 0000H ;主程序起始地址设置
- kAJMP MAIN ;跳到主程序入口
- ORG 0003H ;中断地址入口(k1按键)
- AJMP INTR0 ;中断子程序
- ORG 0013H ;中断地址入口(k2按键)
- AJMP INTR1 ;中断子程序入口
- MAIN: MOV R0,#0FFH
- START:MOV IE,#85H ;中断
- MOV TCON ,#00H ;电平触发
- MOV SP,#60H
- CMP1: CJNE R0,#01,CMP2
- LCALL FOR
- SJMP CMP3
-
- CMP2: CJNE R0,#02,CMP1
- LCALL REV
-
- CMP3: NOP
- SJMP START
- FOR: CLR FOR_LED ;正转指示灯亮
- SETB REV_LED
- MOV P0,#02H
- LCALL DELAY
- MOV P0,#06H
- LCALL DELAY
- MOV P0,#04H
- LCALL DELAY
- MOV P0,#0CH
- LCALL DELAY
- MOV P0,#08H
- LCALL DELAY
- MOV P0,#09H
- LCALL DELAY
- MOV P0,#01H
- LCALL DELAY
- MOV P0,#03H
- LCALL DELAY
- RET
-
- REV: MOV DPTR,#TAB2 ;反转控制
- SETB FOR_LED
- CLR REV_LED ;反转指示灯亮
-
- LP3: MOV A,#00H ;清除累加器
- MOVC A,@A+DPTR ;查表
- CJNE A,1BH,LP4 ;取出码不是结束码,则进行下一步
- JMP EXIT2 ;是结束码,重新进行操作
-
- LP4: MOV P0,A ;A中的值送P0口
- LCALL DELAY ;延时
- INC DPTR ;数据指针加一,指向下一个码
- JMP LP3 ;返回,取码
-
- EXIT2:NOP
- RET
- INTR0:MOV R0,#01
- RETI ;中断结束,返回主程序
-
- INTR1:MOV R0,#02
- RETI ;中断返回
-
- DELAY:MOV R7,#20 ;延时0.2s子程序
- DELA1:MOV R6,#20
- DELA2:MOV R5,#248
- DJNZ R5,$
- DJNZ R6,DELA2
- DJNZ R7,DELA1
- RET
- TAB2: DB 03H,01H,09H,08H ;1~2相激励磁反转驱动代码
- DB 0CH,04H,06H,02H
- DB 1BH
- END
-
-
复制代码
Keil代码与Proteus仿真下载:
电机控制.rar
(69 KB, 下载次数: 15)
|