siti noorzazlina
Newbie level 4
im in desperately wanna learn how to code c programming in PIC microcontroller. And also how to connect it to stepper motor, do anyone here have any schematic diagram for me to refer to?
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
My specific question is, why he assigned specified hex number for PORT C?
PORTC = 0X40; ----> what is the meaning behind this?
Delay_ms(200);
i = 2;
int i=0; // State Counter is incremented sequentially to determine the next state of the winding energizing sequence
int t=0;
void main()
{
TRISC = 0X00;
PORTC = 0X00;
TRISD = 0XFF;
while (1)
{
[COLOR="#FF0000"]// Forward Rotation - Full Step[/COLOR]
if(RD0_bit==0 && i==0)
{
PORTC = 0X10; [COLOR="#FF0000"]// 0001 - Energize winding D[/COLOR]
i = 1;
Delay_ms(200);
};
if(RD0_bit==0 && i==1)
{
PORTC = 0X40; [COLOR="#FF0000"]// 0100 - Energize winding B[/COLOR]
Delay_ms(200);
i = 2;
}
if(RD0_bit==0 && i==2)
{
PORTC = 0X20; [COLOR="#FF0000"]// 0010 - Energize winding C[/COLOR]
Delay_ms(200);
i = 3;
}
if(RD0_bit==0 && i==3)
{
PORTC = 0X80; [COLOR="#FF0000"]// 1000 - Energize winding A[/COLOR]
Delay_ms(200);
i = 0;
}
[COLOR="#FF0000"]// Backward Rotation - Full Step[/COLOR]
if(RD1_bit==0 && i==0)
{
PORTC = 0X80; [COLOR="#FF0000"]// 1000 - Energize winding A[/COLOR]
i = 1;
Delay_ms(200);
};
if(RD1_bit==0 && i==1)
{
PORTC = 0X20; [COLOR="#FF0000"]// 0010 - Energize winding C[/COLOR]
Delay_ms(200);
i = 2;
}
if(RD1_bit==0 && i==2)
{
PORTC = 0X40; [COLOR="#FF0000"]// 0100 - Energize winding B[/COLOR]
Delay_ms(200);
i = 3;
}
if(RD1_bit==0 && i==3)
{
PORTC = 0X10; [COLOR="#FF0000"]// 0001 - Energize winding A[/COLOR]
Delay_ms(200);
i = 0;
}
[COLOR="#FF0000"]// Forward Rotation - Half Step[/COLOR]
if(RD2_bit==0 && t==0)
{
PORTC = 0X10; [COLOR="#FF0000"]// 1000 - Energize winding A[/COLOR]
t = 1;
Delay_ms(500);
};
if(RD2_bit==0 && t==1)
{
PORTC = 0X50; [COLOR="#FF0000"]// 0101 - Energize windings B & D[/COLOR]
Delay_ms(500);
t = 2;
}
if(RD2_bit==0 && t==2)
{
PORTC = 0X40; [COLOR="#FF0000"]// 0100 - Energize winding B[/COLOR]
Delay_ms(500);
t = 3;
}
if(RD2_bit==0 && t==3)
{
PORTC = 0X60; [COLOR="#FF0000"]// 0110 -Energize windings B & C[/COLOR]
Delay_ms(500);
t = 4;
}
...
...
...