MSP430 seven segment LED display CD4511

Using the MSP430 with the CMOS logic chip CD4511 seven segment display/decoder/latch chip.

Source Code:

//  MSP430G2231  
// and display on 7 segment display via 4511 decoder/driver
#include  <msp430x20x2.h>
#include <io.h>
#include <signal.h>
#include <stdlib.h>
#include <stdio.h>
static void __inline__delay(register unsigned int n);
void main( void )
{
int msd, lsd, r1, r2, r3, r4, i, k = 0;
WDTCTL = WDTPW + WDTHOLD; 
P1DIR |= 0x3f; 
P1SEL = 0x00;
while( 1 )
  { 

i++;

if (i > 99) i=0;

r2 = i / 10;
r1 = i - r2 * 10;
msd = r2;
lsd = r1;    
P1OUT &= ~BIT4;
P1OUT = (BIT0 & msd) | (BIT1 & msd) | (BIT2 & msd) | (BIT3 & msd) | BIT5;
__inline__delay( 0xff );
P1OUT |= BIT4;
msd = 5;
P1OUT &= ~BIT5;
P1OUT = (BIT0 & lsd) | (BIT1 & lsd) | (BIT2 & lsd) | (BIT3 & lsd) | BIT4;
P1OUT |= BIT5;
__inline__delay(0xFF00);
}
}
// Delay Routine from mspgcc help file
static void __inline__delay(register unsigned int n)
{
  __asm__ __volatile__ (
  "1: \n"
  " dec %[n] \n"
  " jne 1b \n"
        : [n] "+r"(n));
}