DC motor interfacing with 8051

Status
Not open for further replies.

Parth86

Member
Hello
I have DC motor , motor driver Ic and P89v51rd2. I just want to turn ON/OFF motor using microcontroller

compiler : kail
MCU p89v51rd2

C program
Code:
/*--------------------------------------------------------------------------
P89V51Rx2.H
Registers definition for Philips P89V51Rx2

Copyright (c) 2007 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
-------------------------------------------------------------------------- */

/* Byte Addresses */
sfr   P0        = 0x80;
sfr   SP        = 0x81;
sfr   DPL        = 0x82;
sfr   DPH        = 0x83;
sfr   WDTD        = 0x85;
sfr   SPDAT        = 0x86;
sfr   PCON        = 0x87;
sfr   TCON        = 0x88;
sfr   TMOD        = 0x89;
sfr   TL0        = 0x8A;
sfr   TL1        = 0x8B;
sfr   TH0        = 0x8C;
sfr   TH1        = 0x8D;
sfr   AUXR        = 0x8E;
sfr   P1        = 0x90;
sfr   SCON        = 0x98;
sfr   SBUF        = 0x99;
sfr   P2        = 0xA0;
sfr   AUXR1        = 0xA2;
sfr   IEN0        = 0xA8;
sfr   SADDR        = 0xA9;
sfr   SPCFG        = 0xAA;
sfr   P3        = 0xB0;
sfr   FCF        = 0xB1;
sfr   FST        = 0xB6;
sfr   IP0H        = 0xB7;
sfr   IP0        = 0xB8;
sfr   SADEN        = 0xB9;
sfr   WDTC        = 0xC0;
sfr   T2CON        = 0xC8;
sfr   T2MOD        = 0xC9;
sfr   RCAP2L        = 0xCA;
sfr   RCAP2H        = 0xCB;
sfr   TL2        = 0xCC;
sfr   TH2        = 0xCD;
sfr   PSW        = 0xD0;
sfr   SPCTL        = 0xD5;
sfr   CCON        = 0xD8;
sfr   CMOD        = 0xD9;
sfr   CCAPM0        = 0xDA;
sfr   CCAPM1        = 0xDB;
sfr   CCAPM2        = 0xDC;
sfr   CCAPM3        = 0xDD;
sfr   CCAPM4        = 0xDE;
sfr   ACC        = 0xE0;
sfr   IEN1        = 0xE8;
sfr   CL        = 0xE9;
sfr   CCAP0L        = 0xEA;
sfr   CCAP1L        = 0xEB;
sfr   CCAP2L        = 0xEC;
sfr   CCAP3L        = 0xED;
sfr   CCAP4L        = 0xEE;
sfr   B        = 0xF0;
sfr   IP1H        = 0xF7;
sfr   IP1        = 0xF8;
sfr   CH        = 0xF9;
sfr   CCAP0H        = 0xFA;
sfr   CCAP1H        = 0xFB;
sfr   CCAP2H        = 0xFC;
sfr   CCAP3H        = 0xFD;
sfr   CCAP4H        = 0xFE;

/* Bit Addresses */

/* P0 */
sbit   AO        = P0^0;
sbit   EXTRAM        = P0^1;

/* TCON */
sbit   IT0        = TCON^0;
sbit   IE0        = TCON^1;
sbit   IT1        = TCON^2;
sbit   IE1        = TCON^3;
sbit   TR0        = TCON^4;
sbit   TF0        = TCON^5;
sbit   TR1        = TCON^6;
sbit   TF1        = TCON^7;

/* P1 */
sbit   T2EX        = P1^1;
sbit   ECI        = P1^2;
sbit   CEX0        = P1^3;
sbit   CEX1        = P1^4;
sbit   CEX2        = P1^5;
sbit   CEX3        = P1^6;
sbit   CEX4        = P1^7;

/* SCON */
sbit   RI        = SCON^0;
sbit   TI        = SCON^1;
sbit   RB8        = SCON^2;
sbit   TB8        = SCON^3;
sbit   REN        = SCON^4;
sbit   SM3        = SCON^5;
sbit   SM1        = SCON^6;
sbit   SM0        = SCON^7;

/* P2 */
sbit   DPS        = P2^0;
sbit   GF2        = P2^3;

/* IEN0 */
sbit   EX0        = IEN0^0;
sbit   ET0        = IEN0^1;
sbit   EX1        = IEN0^2;
sbit   ET1        = IEN0^3;
sbit   ES0        = IEN0^4;
sbit   ET2        = IEN0^5;
sbit   EC        = IEN0^6;
sbit   EA        = IEN0^7;

/* P3 */
sbit   RxD        = P3^0;
sbit   TxD        = P3^1;
sbit   INT0        = P3^2;
sbit   INT1        = P3^3;
sbit   T0        = P3^4;
sbit   T1        = P3^5;
sbit   WR        = P3^6;
sbit   RD        = P3^7;

/* IP0 */
sbit   PX0        = IP0^0;
sbit   PT0        = IP0^1;
sbit   PX1        = IP0^2;
sbit   PT1       = IP0^3;
sbit   PS        = IP0^4;
sbit   PT2        = IP0^5;
sbit   PPC        = IP0^6;

/* WDTC */
sbit   SWDT        = WDTC^0;
sbit   WDT        = WDTC^1;
sbit   WDTS        = WDTC^2;
sbit   WDRE        = WDTC^3;
sbit   WDOUT        = WDTC^4;

/* T2CON */
sbit   RL2        = T2CON^0;
sbit   T2        = T2CON^1;
sbit   TR2        = T2CON^2;
sbit   EXEN2        = T2CON^3;
sbit   TCLK        = T2CON^4;
sbit   RCLK        = T2CON^5;
sbit   EXF2        = T2CON^6;
sbit   TF2        = T2CON^7;

/* PSW */
sbit   P        = PSW^0;
sbit   F1        = PSW^1;
sbit   OV        = PSW^2;
sbit   RS0        = PSW^3;
sbit   RS1        = PSW^4;
sbit   F0        = PSW^5;
sbit   AC        = PSW^6;
sbit   CY        = PSW^7;

/* CCON */
sbit   CCF0        = CCON^0;
sbit   CCF1        = CCON^1;
sbit   CCF2        = CCON^2;
sbit   CCF3        = CCON^3;
sbit   CCF4        = CCON^4;
sbit   CR        = CCON^6;
sbit   CF        = CCON^7;         



#define L293D_A P2_0 //Positive of motor
#define L293D_B P2_1 //Negative of motor
#define L293D_E P2_2 //Enable of L293D

// Function Prototypes
void rotate_f(void); //Forward run funtion
void rotate_b(void); //Backward run function
void breaks(void); //Motor stop function
void delay(void); //Some delay
void main()
{
while (1) { //Infinite loop
rotate_f(); //Run forward
delay(); //Some delay
breaks(); //Stop
delay(); //Some delay
rotate_b(); //Run Backwards
delay(); //Some delay
breaks(); //Stop
delay(); //Some delay
} //Do this infinitely
}
void rotate_f()
{
L293D_A = 1; //Make positive of motor 1
L293D_B = 0; //Make negative of motor 0
L293D_E = 1; //Enable L293D
}
void rotate_b()
{
L293D_A = 0; //Make positive of motor 0
L293D_B = 1; //Make negative of motor 1
L293D_E = 1; //Enable L293D
}
void breaks()
{
L293D_A = 0; //Make positive of motor 0
L293D_B = 0; //Make negative of motor 0
L293D_E = 0; //Disable L293D
}
//Some delay...
void delay()
{
unsigned char i,j,k;
for(i=0;i<0x20;i++)
for(j=0;j<255;j++)
for(k=0;k<255;k++);
}

Error

Code:
led.c(206): error C202: 'P2_0': undefined identifier
led.c(206): error C141: syntax error near 'P2_0'
led.c(207): error C202: 'P2_1': undefined identifier
led.c(208): error C202: 'P2_2': undefined identifier
led.c(213): error C202: 'P2_0': undefined identifier
led.c(214): error C202: 'P2_1': undefined identifier
led.c(215): error C202: 'P2_2': undefined identifier
led.c(220): error C202: 'P2_0': undefined identifier
led.c(221): error C202: 'P2_1': undefined identifier
led.c(222): error C202: 'P2_2': undefined identifier
led.c - 10 Error(s), 0 Warning(s).

how to remove error
 
C:
#define L293D_A P2_0 //Positive of motor
#define L293D_B P2_1 //Negative of motor
#define L293D_E P2_2 //Enable of L293D

But you haven't defined P2 yet... Also the correct definition is P2^0..1..2 etc..
 
C:
#define L293D_A P2_0 //Positive of motor
#define L293D_B P2_1 //Negative of motor
#define L293D_E P2_2 //Enable of L293D

But you haven't defined P2 yet... Also the correct definition is P2^0..1..2 etc..
ok look at following code, but this code is not working
Code:
sbit L293D_A = P2^0;
sbit L293D_B = P2^1;
sbit L293D_E = P2^2;

// Function Prototypes
void rotate_f(void); //Forward run funtion
void rotate_b(void); //Backward run function
void breaks(void); //Motor stop function
void delay(void); //Some delay

void main()
{
while (1) { //Infinite loop
rotate_f(); //Run forward
delay(); //Some delay
breaks(); //Stop
delay(); //Some delay
rotate_b(); //Run Backwards
delay(); //Some delay
breaks(); //Stop
delay(); //Some delay
} //Do this infinitely
}

void rotate_f()
{
L293D_A = 1; //Make positive of motor 1
L293D_B = 0; //Make negative of motor 0
L293D_E = 1; //Enable L293D
}
void rotate_b()
{
L293D_A = 0; //Make positive of motor 0
L293D_B = 1; //Make negative of motor 1
L293D_E = 1; //Enable L293D
}
void breaks()
{
L293D_A = 0; //Make positive of motor 0
L293D_B = 0; //Make negative of motor 0
L293D_E = 0; //Disable L293D
}
//Some delay...
void delay()
{
unsigned char i,j,k;
for(i=0;i<0x20;i++)
for(j=0;j<255;j++)
for(k=0;k<255;k++);
}
 
Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…