📄 stepmotor.c
字号:
/////////////////////////////////////
// Generated Initialization File //
/////////////////////////////////////
#include "C8051F120.h"
#define T1 1843
#define T2 3000
#define T3 1843
#define T4 922
sbit p = P3 ^ 3; //平移电机脉冲
sbit eud = P3 ^ 7; //升降电机使能
sbit p1 = P3 ^ 2; //升降电机脉冲
sbit elr = P3 ^ 5; //平移电机使能
char a = 0; //标志位
char b = 0;
char c = 0;
char d = 0;
// Peripheral specific initialization functions,
// Called from the Init_Device() function
void Reset_Sources_Init()
{
WDTCN = 0xDE;
WDTCN = 0xAD;
}
void Port_IO_Init()
{
// P0.0 - TX0 (UART0), Open-Drain, Digital
// P0.1 - RX0 (UART0), Open-Drain, Digital
// P0.2 - TX1 (UART1), Open-Drain, Digital
// P0.3 - RX1 (UART1), Open-Drain, Digital
// P0.4 - Unassigned, Open-Drain, Digital
// P0.5 - Unassigned, Open-Drain, Digital
// P0.6 - Unassigned, Open-Drain, Digital
// P0.7 - Unassigned, Open-Drain, Digital
// P1.0 - Unassigned, Open-Drain, Digital
// P1.1 - Unassigned, Open-Drain, Digital
// P1.2 - Unassigned, Open-Drain, Digital
// P1.3 - Unassigned, Open-Drain, Digital
// P1.4 - Unassigned, Open-Drain, Digital
// P1.5 - Unassigned, Open-Drain, Digital
// P1.6 - Unassigned, Open-Drain, Digital
// P1.7 - Unassigned, Open-Drain, Digital
// P2.0 - Unassigned, Open-Drain, Digital
// P2.1 - Unassigned, Open-Drain, Digital
// P2.2 - Unassigned, Open-Drain, Digital
// P2.3 - Unassigned, Open-Drain, Digital
// P2.4 - Unassigned, Open-Drain, Digital
// P2.5 - Unassigned, Open-Drain, Digital
// P2.6 - Unassigned, Open-Drain, Digital
// P2.7 - Unassigned, Open-Drain, Digital
// P3.0 - Unassigned, Push-Pull, Digital
// P3.1 - Unassigned, Push-Pull, Digital
// P3.2 - Unassigned, Push-Pull, Digital
// P3.3 - Unassigned, Push-Pull, Digital
// P3.4 - Unassigned, Push-Pull, Digital
// P3.5 - Unassigned, Push-Pull, Digital
// P3.6 - Unassigned, Push-Pull, Digital
// P3.7 - Unassigned, Push-Pull, Digital
SFRPAGE = CONFIG_PAGE;
P3MDOUT = 0xFF;
P4MDOUT = 0xFF;
P5MDOUT = 0xFF;
P6MDOUT = 0xFF;
P7MDOUT = 0xFF;
XBR0 = 0x04;
XBR2 = 0x44;
}
void Oscillator_Init()
{
int i = 0;
SFRPAGE = CONFIG_PAGE;
OSCXCN = 0x67;
for (i = 0; i < 3000; i++); // Wait 1ms for initialization
while ((OSCXCN & 0x80) == 0);
CLKSEL = 0x01;
}
// Initialization function for device,
// Call Init_Device() from your main program
void Init_Device(void)
{
Reset_Sources_Init();
Port_IO_Init();
Oscillator_Init();
eud = 0;
elr = 0;
}
/******************************************************************************
函数:Timer0Isr
描述:定时器3中断服务程序,Timer0
参数:无
返回:无
******************************************************************************/
void Timer0Isr (void) interrupt 1 using 1
{ p = !p;
p1 = !p1;
if(a == 1)
{ TH0 = -T1/256;
TL0 = -T1%256;
}
else if(b == 1)
{ TH0 = -T2/256;
TL0 = -T2%256;
}
else if(c == 1)
{ TH0 = -T3/256;
TL0 = -T3%256;
}
else if(d == 1)
{ TH0 = -T4/256;
TL0 = -T4%256;
}
}
/* void delay(long t)
{
for(;t>=0;t--);
} */
void pulse(void)
{ p = 0;
p1 = 0;
SFRPAGE = TIMER01_PAGE;
TMOD|= 0x01; //TMOD: timer 0, mode 1, 16-bit timer
TH0 = -T1/256; //Timer0 TH0 high byte reload initial value
TL0 = -T1%256; //Timer0 TL0 low byte write initial value(1ms)
EA = 1;
ET0 = 1; //Timer0 Interrupt enable(IE.1)
TR0 = 1;
}
main()
{ Init_Device();
pulse();
c = 1;
eud = 1;
elr = 1;
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -