Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

problem related c programming

Status
Not open for further replies.

jay_3189

Banned
Full Member level 1
Joined
Sep 19, 2013
Messages
104
Helped
0
Reputation
0
Reaction score
0
Trophy points
16
Location
Ahmedabad
Activity points
0
Hello everyone,

I have written simple c program for led blink. and in that program I have written P2=0X00 but still I am getting few voltage (i.e., 3 or 4 volts) through pin 3rd and 2nd. any one can help me to solve this.

I am using at89c51 and keil IDE.
 

I think putting 0x00 into port2 will on the leds. as pull-up's are enabled. write 0xff it will of the led's

So your program should be

while(1)
{
p2=0x00;
delay
p2=0xff;
}
 

Try this if possible:

AT89C51 - LED Blink.jpg

My code has logic inverted!!!
 

Attachments

  • AT89C51 - LED Blink.rar
    24 KB · Views: 95

This is another example. There is in Keil\C51\Examples\BLINKY

Code:
/* BLINKY.C - LED Flasher for the Keil MCBx51 Evaluation Board with 80C51 device*/
                
#include<reg51.h> // changed


// When you have enabled the option Stop Program Execution with Serial
// Interrupt, the Monitor-51 uses the serial interrupt of the UART.
// It is therefore required to reserve the memory locations for the interrupt
// vector.  You can do this by adding one of the following code lines:

// char code reserve [3] _at_ 0x23;   // when using on-chip UART for communication
// char code reserve [3] _at_  0x3;   // when using off-chip UART for communication

void wait (void)  {                   /* wait function */
  ;                                   /* only to delay for LED flashes */
}

void main (void)  {
  unsigned int i;                     /* Delay var */
  unsigned char j;                    /* LED var */
  P0=0;
  P1=0;
  P2=0;
  P3=0;

  while (1) {                         /* Loop forever */
    for (j=0x01; j< 0x80; j<<=1)  {   /* Blink LED 0, 1, 2, 3, 4, 5, 6 */
      P2 = j;                         /* Output to LED Port */
      for (i = 0; i < 10000; i++)  {  /* Delay for 10000 Counts */
       wait ();                       /* call wait function */
      }
    }

    for (j=0x80; j> 0x01; j>>=1)  {   /* Blink LED 6, 5, 4, 3, 2, 1 */
      P2 = j;                         /* Output to LED Port */
      for (i = 0; i < 10000; i++)  {  /* Delay for 10000 Counts */
       wait ();                       /* call wait function */
      }
    }
  }
}
 
Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top