2、程序代码
#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"
#define uint unsigned int
#define uchar unsigned char
uint time;//频率
uint temp[10];//存放输入捕获值
int i=0;
uint PWM_Value;//需要改变的占空比值
uchar UART0_RX_BUF[11];//串口0,串口1数据接收缓冲区
uchar UART0_RX_STA=0;//串口0,串口1接收计数器
uchar uFlag=0;//串口中断指令接收完成标志
char start=0;
//用于数据记录
uint ct1,ct2;
//脉冲期望值(0-6700)
uint evt1,evt2;
//状态机:
//0——初始状态
//1——串口
//2——运行到了指定距离。
uchar Flag1=0,Flag2=0;
//PWM中断计数器控制器
//0:关闭
//1:开启
char CEP1=0,CEP2=0;
//用于回到零点
sbit KEY1=P0^4;
sbit KEY2=P1^4;
//使能
sbit EN1=P1^0;
sbit EN2=P1^1;
//换向
sbit DIR1=P1^2;
sbit DIR2=P1^3;
//指示灯
sbit LED1=P0^5;
sbit LED2=P3^0;
void delay1(uint ms);
void PWM_DEAD_TIME_VALUE(UINT16 DeadTimeData);
/*
程序说明:
1、PWM一直保持输出,使用EN来控制步进电机输出
2、使用PWM中断,实现脉冲计数,设置为全局变量
3、串口接收数据,数据包见下'A1234B1234E'其中A为第一个步进电机、B为第二个,1234为期望脉冲数
4、程序流程:收到指令——》步进电机运动——》到指定位置,延时1S,返回0点——》等待下一次
Tips:程序仍存在问题:
1、在运行过程中不能二次接收数据(应对串口中断关闭,回到0点后再开启)
*/
|