📄 servomotor.c
字号:
/////////////////////////////////////
// Generated Initialization File //
/////////////////////////////////////
#include "C8051F120.h"
#define M 5529
sbit p = P3 ^ 0; //伺服电机脉冲
sbit a = P4 ^ 0; //伺服电机son信号,实际上并不需要son信号了,因为BRKR一直处于on状态
sbit dirs = P3 ^ 1; //伺服电机方向信号
sbit m = P5^0;
sbit n = P2^4;
sbit k = P7^0;
unsigned long T=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();
}
/******************************************************************************
函数:Timer0Isr
描述:定时器3中断服务程序,Timer0
参数:无
返回:无
******************************************************************************/
void Timer0Isr (void) interrupt 1 using 1
{
ET0 = 0;
//TH0 = 0xF8;
//TL0 = 0xCD;
SFRPAGE = 0x00;
TH0 = -M/256;
TL0 = -M%256;
T++;
if(T <= 400)
{
p = !p;
}
else
{
SFRPAGE = 0x0F;
a = 1;
SFRPAGE = 0x00;
TR0 = 0;
T = 0;
}
ET0=1;
}
void pulse(void)
{
p=0;
SFRPAGE = TIMER01_PAGE;
TMOD|= 0x01; //TMOD: timer 0, mode 1, 16-bit timer
//TH0 = 0xF8; //Timer0 TH0 high byte reload initial value
//TL0 = 0xCD; //Timer0 TL0 low byte write initial value(1ms)
TH0 = -M/256;
TL0 = -M%256;
EA = 1;
ET0 = 1; //Timer0 Interrupt Unable(IE.1)
SFRPAGE = 0x00;
TR0 = 1;
}
main()
{
/*
long j = 0;
Init_Device();
dirs = 1;
SFRPAGE = 0x0F;
a = 1;
for(;j <= 10000;j++);
pulse();
while(1);
*/
Init_Device();
SFRPAGE = 0x0F;
//P5 = P2&0xFF;
P7 = 0x00;
m = k&n;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -