📄 mada.c
字号:
#include <pic.h>
#define PS RB3
#define INA RB0
#define INB RB1
bit Fin;
unsigned int i, j, cnt, MotorNum;
unsigned char motor,Tbuf,Tcnt;
unsigned long int TD1,TD2,TD3;
void step(void);
void main (void)
{
TRISE = 0x00;
ADCON1 = 0x0F;
TRISB = 0x00;
PS = 0;
//guan jian can shu.
MotorNum = 128;
cnt = 128;
//初始化TIME0
OPTION = 0x87;
TMR0IE = 1;
TMR0IF = 0;
//外部中断.
INTF = 0;
INTE = 1;
//初始化TIME1.
T1CON = 0x00;
TMR1IE = 0;
TMR1IF = 0;
PEIE = 1;
GIE = 1;
while(1)
{
for(i = 0; i < 20000; i++);
/*
//PORTB ^= 0x0F;
if(Fin)
{
RB3 = 1;
cnt ++;
if(cnt > 800)
Fin = 0;
}
else
{
RB3 = 0;
cnt --;
if(cnt < 10)
Fin = 1;
}
*/
NOP();
}
}
void interrupt isr (void)
{
if (INTE && INTF)
{
TMR1ON = 0;
TD1 = Tbuf;
if (TMR1IF)
{
TD1 ++;
}
TD1 <= 8;
TD1 += TMR1H;
TD1 <= 8;
TD1 += TMR1L;
Tbuf = 0;
TMR1H = 0;
TMR1L = 0;
TMR1IF = 0;
TMR1ON = 1;
if (TD1 > 19417)
TD2 = TD1 - 19417;
else
TD2 = 19417 - TD1;
if (TD2 > 250)
{
if (TD2 > TD3)
Fin = !Fin;
if (Tcnt > 2)
{
TD3 = TD2;
Tcnt = 1;
}
Tcnt ++;
if (Fin)
cnt ++;
else
cnt --;
}
}
if (TMR1IF && TMR1IE)
{
TMR1IF = 0;
Tbuf ++;
}
if (TMR0IE && TMR0IF)
{
TMR0IF = 0;
TMR0 = 0xEC;
step();
}
}
void step(void)
{
if(MotorNum == cnt)
{
return ;
}
else if (MotorNum < cnt)
{
MotorNum ++;
motor ++;
if (motor > 4)
motor = 1;
}
else
{
MotorNum --;
motor --;
if (motor < 1)
motor = 4;
}
if(motor == 1)
{
INA = 0;
INB = 1;
}
else if (motor == 2)
{
INA = 0;
INB = 0;
}
else if (motor == 3)
{
INA = 1;
INB = 0;
}
else
{
INA = 1;
INB = 1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -