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));
}