一、实验目的:
用F1121进行PWM输出来控制电机的速度,速度的快慢由按钮来选择。
二、实验设备:
MSP430F1121实验板一个,3V电源一个,JTAG接口一个。
三、实验电路原理图:
四、实验内容:
五、参考程序:
;*****************************************************
;功能:用F1121进行PWM输出来控制电机的速度,速度的快慢由按钮来选择。
;使用资源:P2.1 按钮,P1.2 PWM输出。
;*****************************************************
#include "msp430x11x1.h"
#define Duty_cycle R7
PWM_OUT1 EQU 004H ;PWM输出
DIRFG EQU 200H ;电机的转向
Period EQU 0FFH ;脉宽
;------------------------------------------------------
ORG 0F000H
RESET MOV #300H,SP
CALL #Init_Sys ;初始化程序
Mainloop BIT.B #BIT1,&P2IN ;检测按钮的状态
JZ Again ;有按钮按下进入按钮检测程序
JMP Mainloop ;没有按钮按下则循环继续
Again MOV #18000,R15 ;延时
DLY1 DEC R15
JNZ DLY1
BIT.B #BIT1,&P2IN ;再次进行按钮检测
JZ MOTDIR
JMP Mainloop
MOTDIR BIT.B #BIT1,&P2IN
JZ MOTDIR ;进行按钮检测直到按钮放开为止
CMP.B #00H,DIRFG ;进行方向检测,为0进行加5,为1进行减5
JZ NEXT ;为0入加5子程序
SUB.B #5,Duty_cycle ;为1进入减5子程序
CMP.B #140,Duty_cycle ;减5到140时进行加5处理
JL NEXT1
JMP SendPWM ;进行CCR0设定
NEXT ADD.B #5,Duty_cycle ;加5处理子程序
CMP.B #210,Duty_cycle ;当加到210时进行减5处理子程序
JGE NEXT2
JMP SendPWM ;进行CCR0设定
NEXT1 ADD.B #5,Duty_cycle ;加5处理子程序
MOV.B #00H,DIRFG
JMP SendPWM
NEXT2 SUB.B #5,Duty_cycle ;减5处理子程序
MOV.B #01H,DIRFG
;JMP SendPWM
SendPWM MOV Duty_cycle,&CCR1 ;进行CCR0设定
MOV Duty_cycle,&CCR2
Dly CALL #Delay ;延时程序
CALL #Delay
JMP Mainloop
;----------------------------------
Init_Sys
StopWDT MOV #WDTPW+WDTHOLD,&WDTCTL ;关闭看门狗
SetupBC MOV.B #XT2OFF+RSEL2+RSEL1+RSEL0,&BCSCTL1 ;选DCO
MOV.B #0FFH,&DCOCTL
SetupP1 MOV.B #04h,&P1OUT
BIS.B #PWM_OUT1,&P1SEL
BIS.B #0FFH,P1DIR
SetupP2 BIC.B #BIT1,&P2DIR ;按钮输入
MOV #Period,&CCR0 ;脉冲宽度设置
MOV #140,&CCR1 ;脉宽调制设置
MOV #OUTMOD_7,&CCTL1 ;输出模式设置
SetupTA MOV #TASSEL1+MC0,&TACTL ;定时器A设置
MOV #140,Duty_cycle ;脉宽调制初始化
MOV #00H,DIRFG ;转向初始化
RET
;---------------------------------------------
Delay push #0FFFFH ;延时程序
L1 DEC 0(SP)
JNZ L1
INCD SP
RET
;---------------------------------------------
ORG 0FFFEH
RESET_VEC DW RESET
END |