你能帮我解释下程序为什么要这样写?

你能帮我解释下程序为什么要这样写?
步进电机的控制
(1)实验设备:HCS12编程器、开发板、步进电机、5804芯片、稳压电源
(2)功能实现:控制步进电机转动90度,按下中断后电机连续转动.
(3)源程序如下:
#include /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dp256b"
int i=0;
void main(void)
{
DDRJ=0x00;
PIEJ=0X03;
EnableInterrupts; //中断设置
PWME=0; //关闭所有通道
PWMCTL_CON01=1;//对PWM控制寄存器进行设置,0,1合为一个通道
PWMCNT1=0X00;//0,1通道计数器清0
PWMPOL_PPOL1=1;//上升沿翻转
PWMCLK_PCLK1=0; //设A为其时钟源
PWMPRCLK=0X00; //不对A时钟进行分频
PWMCAE_CAE1=1;//中心对齐输出
PWMPER1=0X20;
PWMPER0=0x4e;//per等于40000,即100赫兹
PWMDTY1=0X10;
PWMDTY0=0X27;//dty等于20000
PWME_PWME1=1;//0,1通道使能
for(;i
xxy10000 1年前 已收到1个回答 举报

328218816 幼苗

共回答了15个问题采纳率:93.3% 举报

注释的已经很明白了,先配置了PWMxxx各个寄存器,再通过设PWME控制PWM输出或者不输出;
主函数开始后,配置各个寄存器,初始化完成以后,用一个for循环让电机转了90度,然后关PWM,进入一个空的while循环;
当有J口的中断时,进入中断函数,判断J0为1时,开PWM输出,这时PWM通道0和1按照特定时序输出PWM波,电机就连续转起来了.

1年前 追问

5

xxy10000 举报

为什么要这样配置PWMxxx各个寄存器,利用for循环实现电机转了90度的原理是什么?

举报 328218816

配置mcu的寄存器为何值,这个你找个手册看看就明白了吧,你的程序上的注释也说的很清楚啊... 这个for循环的意思大概就是控制PWM0输出了1855个周期,至于为什么PWM0输出这么多周期电机就恰好转90度,这个就需要你去看看电机驱动和你的步进电机的具体资料了。
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.026 s. - webmaster@yulucn.com