Programs
Programs
END
LDR R4,=IO1DIR
LDR R1,=0xFF000000
STR R1,[r4]
Loop
LDR R4,=IO1SET
LDR R1,=0xFF000000
STR R1,[R4]
BL Delay
LDR R4,=IO1CLR
LDR R1,=0xFF000000
STR R1,[R4]
BL Delay
B Loop
SWI 0x11
Delay
LDR R5,=0X000FFFFF
L1
SUB R5,R5,#1
CMP R5,#0
BNE L1
BX R14
END
Page 1 of 12
EX. 4 : SIMPLE LED BLINKING WITH VARIABLE SPEED IN ASM
GLOBAL __main
AREA main, CODE, READONLY
EXPORT __main
EXPORT __use_two_region_memory
__use_two_region_memory EQU 0
BX LR
ENTRY
__main
LDR R4,=IO1DIR
LDR R1,=0xFF000000
STR R1,[R4]
Loop
LDR R4,=IO1SET
LDR R1,=0xFF000000
STR R1,[R4]
BL __delay
LDR R4,=IO1CLR
LDR R1,=0xFF000000
STR R1,[R4]
BL __delay
B Loop
SWI 0x11
__delay
LDR R5,=0X000FFFFF
L1
SUB R5,R5,#1
CMP R5,#0
BNE L1
BX R14
END
GLOBAL __main
AREA main, CODE, READONLY
EXPORT __main
EXPORT __use_two_region_memory
__use_two_region_memory EQU 0
BX LR
ENTRY
Page 2 of 12
__main
LDR R1,=IO1DIR
LDR R2,=0xFF000000
STR R2, [R1]
LDR R1,=IO0DIR
LDR R2,=0x00000000
STR R2, [R1]
Loop
LDR R1,=IO0PIN
LDR R2, [R1]
LSL R2,#8
AND R2,#0xFF000000
LDR R1,=IO1PIN
STR R2, [R1]
B Loop
END
#include <LPC214x.h>
#include <stdio.h>
int main(void)
{
VPBDIV = 0x01;
IO1DIR = 0xFF000000;
IO0DIR = 0x00000000;
while(1)
{
if(IO0PIN & 0x00800000)
{
delay_Val = 20;
}
else
{
delay_Val = 100;
}
IO1SET = 0xFF000000;
DelayMs(delay_Val);
IO1CLR = 0xFF000000;
DelayMs(delay_Val);
}
}
Page 3 of 12
void DelayMs(unsigned int ms)
{
long i,j;
for (i = 0; i < ms; i++ )
for (j = 0; j < 5000; j++ );
}
#include "lpc214x.h"
void delay(void);
int main()
{
unsigned char data[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
unsigned int i;
IO1DIR = 0x00ff0000;
while(1)
{
for(i=0; i<=9;i++)
{
IO1PIN=(data[i] << 16);
delay();
}
}
}
void delay(void)
{
unsigned int i;
for(i=0;i<0xFFFFF;i++);
}
#include "lpc214x.h"
extern void delay(void);
int main()
{
unsigned char data[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
unsigned int i;
IO1DIR = 0x00FF0000;
while(1)
{
for(i=0; i<=9;i++)
{
IO1PIN=(data[i] << 16);
delay();
}
}
}
Page 4 of 12
asm_delay.s
delay
LDR R5,=0X00FFFFFF
L1
SUB R5,R5,#1
CMP R5,#0
BNE L1
BX R14
END
#include "lpc214x.h"
void timer_init()
{
VPBDIV = 1;
T0PR = 12000*timer_delay ;
T0MR0 = 1;
T0MCR = 2;
T0TCR = 1;
}
int main(void)
{
IO1DIR = 0xFF000000;
timer_init();
while(1)
{
if( T0TC==0 )
{
IO1PIN = 0xF0000000;
while(T0TC==0);
}
else
IO1PIN = 0x0F000000;
}
}
#include <LPC214x.h>
void Timer0_Init(void);
__irq void T0ISR(void);
Page 5 of 12
int main(void)
{
VPBDIV = 0x01;
IO1DIR = 0xFF000000;
Timer0_Init();
while(1);
}
void Timer0_Init(void)
{
T0PR = 12000*timer_delay;
T0MR0 = 1;
T0MCR = 3;
T0TCR = 1;
VICIntEnable = 0x10;
VICVectAddr4 = (unsigned )T0ISR;
VICVectCntl4 = 0x20 | 4;
}
#include <LPC214x.H>
void UART0_Init(void);
void UART0_Txmt(unsigned char);
unsigned char UART0_Recv(void);
void UART0_puts(unsigned char *);
int main(void)
{
VPBDIV = 0x02;
UART0_Init();
UART0_puts("Press any one Key\r\n");
while(1)
{
UART0_Txmt(UART0_Recv());
}
}
Page 6 of 12
void UART0_Init(void)
{
PINSEL0 = 0x00000005;
U0LCR = 0x00000083;
U0DLL = 0x000000C3;
U0LCR = 0x00000003;
U0IER = 0x00000001;
}
void UART0_Txmt(unsigned char Chr)
{
while (!(U0LSR & 0x20));
U0THR = Chr;
}
unsigned char UART0_Recv(void)
{
while (!(U0LSR & 0x01));
return (U0RBR);
}
void UART0_puts(unsigned char *string)
{
while(*string)
UART0_Txmt(*string++);
}
#include <LPC214x.H>
void UART0_Init(void);
void UART0_Txmt(unsigned char);
void UART0_puts(unsigned char *);
__irq void UART0_ISR(void);
unsigned char Rec_Val;
int main(void)
{
VPBDIV = 0x02;
UART0_Init();
UART0_puts("Press any one Key\r\n");
while(1);
}
void UART0_Init(void)
{
PINSEL0 = 0x00000005;
U0LCR = 0x00000083;
U0DLL = 0x000000C3;
U0LCR = 0x00000003;
U0IER = 0x00000001;
VICIntEnable = 0x00000040;
VICVectCntl4 = 0x00000020 | 6 ;
VICVectAddr4 = (unsigned) UART0_ISR;
}
Page 7 of 12
__irq void UART0_ISR(void)
{
unsigned char temp;
#include "lpc214x.h"
#define EN 0x800
#define RW 0X200
#define RS 0x100
void delay(void)
{
unsigned int i;
for(i=0;i<0x1fff;i++);
}
void EN_Pulse(void)
{
IO0SET = EN ;
delay();
IO0CLR = EN ;
}
Page 8 of 12
void lcd_initialize(void)
{
send_cmd(0X38); delay();
send_cmd(0X0F); delay();
send_cmd(0X01); delay();
send_cmd(0X06); delay();
send_cmd(0X80); delay();
}
int main(void)
{
unsigned char alphabets[16]= {"Embedded Systems"};
unsigned char numbers[16]= {" 10/12/2013 "};
unsigned char i=0,j=0,line1=0x80,line2=0xC0;
IO0DIR = 0x00000F00;
IO1DIR = 0x00FF0000;
IO0CLR = RW;
lcd_initialize();
for(j=0;j<1;j++)
{
for(i=0;i<16;i++)
{
send_cmd(line1+i); delay();
send_data(alphabets[i]); delay();
}
for(i=0;i<16;i++)
{
send_cmd(line2+i); delay();
send_data(numbers[i]); delay();
}
#include "lpc214x.h"
#define EN 0x800
#define RW 0X200
#define RS 0x100
void delay(void)
{
unsigned int i;
for(i=0;i<0x1fff;i++);
}
void EN_Pulse(void)
{
IO0SET = EN;
delay();
IO0CLR = EN;
}
Page 9 of 12
void send_cmd(int addr)
{
IO1PIN = addr<<16;
IO0CLR = RS; EN_Pulse();
}
void lcd_initialize(void)
{
send_cmd(0X38); delay();
send_cmd(0X0F); delay();
send_cmd(0X01); delay();
send_cmd(0X06); delay();
send_cmd(0X80); delay();
}
int main(void)
{
int num,i,d1,d2,d3;
char *display = "Decimal value = ";
IO0DIR = 0x00000F00;
IO1DIR = 0x00FF0000;
IO0CLR = RW;
lcd_initialize();
num = 0xF7;
d1 = num % 10;
num = num / 10;
d2 = num % 10;
num = num / 10;
d3 = num;
send_cmd(0x80); delay();
for(i=0;i<=15; i++)
{
send_data(display[i]);
}
send_cmd (0xc0); delay();
send_data(d3+48); delay();
send_data(d2+48); delay();
send_data(d1+48); delay();
while(1)
{
}
Page 10 of 12
EX. 15 : ACCESSING INTERNAL ADC OF THE ARM PROCESSOR AND TO DISPLAY IN LCD
#include "lpc214x.h"
#define EN 0x800
#define RW 0X200
#define RS 0x100
void delay(void)
{
unsigned int i;
for(i=0;i<0x1fff;i++);
}
void EN_Pulse(void)
{
IO0SET = EN;
delay();
IO0CLR = EN;
}
void lcd_initialize(void)
{
send_cmd(0X38); delay();
send_cmd(0X0F); delay();
send_cmd(0X01); delay();
send_cmd(0X06); delay();
send_cmd(0X80); delay();
}
int main(void)
{
int num,i,d1,d2,d3,d4;
unsigned long Val;
IO0DIR = 0x00000F00;
IO1DIR = 0x00FF0000;
Page 11 of 12
IO0CLR = RW;
AD0CR = PRESET | 0x02;
AD0CR |= START;
lcd_initialize();
send_cmd(0x80); delay();
for(i=0;i<=15; i++)
{
send_data(display[i]);
}
while(1)
{
do
{
Val = AD0GDR;
}
while ((Val & DONE) == 0);
Val = ((AD0GDR >> 6) & 0x3FF);
num = Val;
d1 = num % 10;
num = num / 10;
d2 = num % 10;
num = num / 10;
d3 = num % 10;
num = num / 10;
d4 = num;
send_cmd (0xc0); delay();
send_data(d4+48); delay();
send_data(d3+48); delay();
send_data(d2+48); delay();
send_data(d1+48); delay();
}
Page 12 of 12