0000H
ORG
UP:
end inr0c; #38H;
24H, 23H,
mov #0B2H;
mov #29H; 22H, 20H,#0AH;
21H,
mov mov
mov #50H; mov#5;r3, #30h; mov r,
movr1, #20h;
djnzr3UP
, inr1c; mov@r1, a;
@r0;
mov a,
(Memory
Experiment No
1
block
transfer
in
8051)
Experiment No 2
(Parallel Port Interfacing of LED)
#include<reg51.h>
P2=0X00;
void delaylvoid);
void main(void)
{
while(1)
P2=0xAA;
delay();
P2=0x55;
delay();
void delay(void)
int j;
int i;
for(i=0;i<=10;++);
for(j=0;j<=10;j++);
Experiment 3 programme
l/programme to penerate triangular waveform using 8051
tinclude <8051.h>
|/Define the control registers for Timer 0
sfr TMOD =Ox89; ||Timer 0 mode register
sfr TCON =0x88, |/ Timer 0 control register
sfr TLO = 0x8A, // Timer 0 low byte
sfr THO =Ox8C, // Timer 0 high byte
|/Define a delay function
void delaylunsigned int count){
unsigned int i;
while (count > 0) {
for (i =0; i< 120; i++); //Adjust this for the desired delay
count
void main() {
tirner)
TMOD = 0x01; // Set Tirmer Oin mode 1 (16-bit
TCON 0x10; //Enable Timer 0
while (1)
|/Generate the triangular waveform
for (int i =0; i<= 255; i++)
THO 0x00;
TLO = ,
P1 = TL0; // Ouput the waveforn on P1)
delay(10); I/Delay for a short period to control the waveform frequency
for (int i=255; i >= 0; i--) {
THO = 0x00;
TLO = i;
P1 = TLO; //Output the waveform on P1.0
delay(10); |/Delay for a short period to control the waveform frequency
}
Experiment No 4
(interface of 16x2 lcd)
#include<p18f458.h>
#include "LCD8bitspic.h"
void main()
unsigned char i,x[]="LCD",y[]="Program";
TRISC=0x00;
TRISD=0x00;
lcd_init():
icd_gotoxy(1,1);
lcd_send_string(x);
Icd_gotoxy(2,1);
lcd_send_string(y):
while(1);
LCD8bitspic.h
#include <string.h>
--LCD pins-
#define rs PORTCbits.RCO
#define rwPORTCbits.RC1
#define en PORTCbits.RC2
#define ldata PORTD
-lcd-.
void lcd _init(void);
void lcd_cmd(unsigned char);
void lcd_data(unsigned char);
void delay(unsigned int);
void lcd_gotoxy(unsigned char, unsigned char);
void lcd_send_string(unsigned char*);
I / - c dfunctions-.
void lcd_init()
lcd_cmd(0x38);
delay(2);
Icd_cmd(0xOE);
delay(2):
lcd_cmd(0x01);
delay(2);
Icd_cmd(0x06);
delay(2):
void lcd_cmd(unsigned char cmd)
ldata=cmd;
rs=0;
rw=0;
en=1;
delay(1);
en=0;
void icd data(unsigned char dat)
ldata-dat,
rs=1;
rw-0;
en=1;
delay(1);
en=0;
void delaylunsigned int x)
unsigned int i,j:
for(i=0;i<=x;i+*)
for(j=0;j<=1275;j++);
void lcd gotoxy(unsigned char x unsigned char y)
if(x==1)
Icd_cmd(0x80+y-1);
else if (x==2)
lcd_cmd(0xCO+y-1);
void lcd_send string(unsigned char*str)
unsigned char len,i;
len=strlen(str);
for(i=0;i<len;i++)
lcd_data(str[i)};
Experiment No 5
(Interfacing Button, LED, Buzzer, Relay with PIC)
#include <p18f4520.h>
#define SW1 PORTBbits.RB0
#define SW2 PORTBbits.RB1
void delay(unsigned int x)
unsigned int i,j;
for(i=0;i<=x;i++)
for(j=0;j<=x;jt+);
void Buzzer_on(void)
PORTAbits.RA3=1;
void Buzzer off(void)
PORTAbits.RA3-0;
void LED_Right_Left(void)
{
PORTD=0b01111111;
delay(200);
PORTD=0b10111111;
delay(200);
PORTD=0b11011111;
delay(200);
PORTD=0b11101111;
delay(200);
PORTD=0b11110111;
delay(200);
PORTD=0b11111011;
delay(200);
PORTD0b11111101;
delay(200):
PORTD=0b11111110;
delay(200);
}
void LED_Left_Right(void)
PORTD=0b11111110;
delay(200);
PORTD=0b11111101;
delay(200);
PORTD=0b11111011;
delay(200);
PORTD=0b11110111;
delay(200):
PORTD=0b11101111;
delay(200);
PORTD=0b1101111l;
delay(200);
PORTD=0b10111111;
delay(200):
PORTD=0b01111111;
delay(200):
void main (void)
TRISD = 0x00;
TRISB = Oxff;
TRISA = 0x00;
while(1)
{
LED_Left_Right():} else {
if( SW1==0){ Buzzer _on();
Buzzer_off(); }
Buzzer_off();LED_Right_Left(); } else{
if( SW2==0) {
Buzzer_off():}
Experiment No 6
(interface of hex keypad)
||====4x4 KEYBOARD AND 16X2 LCD DISPLAY =====
|/for col PORTBO to PORTB3 &row PORTB4 to PORTB7
#include <P18f4520.h>
#include"lcd.h"
#pragma config OSC=HS
#pragma config PWRT=OFF
#pragma config WDT=OFF
#pragma config DEBUG=OFF, LVP=OFF
void delay (unsigned int itime);
#define R1 PORTBbits.RB0
#define R2 PORTBbits.RB1
#define R3 PORTBbits.RB2
#define R4 PORTBbits.RB3
#define C1 PORTBbits.RB4
#define C2 PORTBbits.RBS
#define C3 PORTBbits.RB6
#define C4 PORTBbits.RB7
unsigned char text1[]={"LOGSUN SYSTEMS"};
unsigned char text2[]=("KEY PRESSED:"}:
void main(void)
{
TRISD = 0x00;
TRISC = 0x00;
ADCON1=0x0f;
TRISBbits.TRISB0=1;
TRISBbits.TRISB1=1;
TRISBbits.TRISB2=1;
TRISBbits.TRISB3=1;
TRISBbits.TRISB4=0;
TRISBbits.TRISB5=0;
TRISBbits.TRISB6=0;
TRISBbits.TRISB7=0;
lcdinit();
Icddisplay(1,text1);
Icddisplay(2,text2);
while(1)
{
C1=0;C2=C3=C4=1;
if(R1 == 0)Klcddat ('F'} //Display 0
if(R2 == 0{lcddat ('B'):) //Display 4
if(R3 == 0\lcddat ('7;} / Display 8
if(R4 == 0){lcddat ('3):) // Display C
Smt. KashibaiNavale College of Engineering Electronics and Telecommunication Department
C2=0;C1=C3=C4=1;
if(R1 == 0)Xlcddat ('E"):) // Display 1
if(R2 == O){lcddat ('A');) 1/ Display 5
if(R3 == 0}{lcddat ('6):} // Display 9
if(R4 == 0){lcddat ('2');:) / Display )
C3=0;C1=C2=C4-1;
if(R1 == 0{lcddat ('D'):} // Display 2
if(R2 == 0){lcddat ('9');:) // Display 6
if(R3 == 0){lcddat ('5):} // Display A
if(R4 == 0){lcddat ('1'):} // Display E
C4=0;C1=C2=C3=1;
if(R1 == 0){lcddat ('C):) // Display 3
if(R2 == O{lcddat ('8):) //Display 7
if(R3 == 0Xlcddat ('4'):} // Display B
if(R4 == 0)Klcddat (0')) I/ Display F
Experiment No 7
(Generate the square wave with PIC)
#include <p18f4520.h>
#define SW1 PORTBbits.RBO
#define SW2 PORTBbits.RB1
void delay(unsigned int x)
{
unsigned int i,j:
for(i=0;i<=x;i++)
for(j=0;j<=x;j++);
}
void Buzzer_on(void)
{
PORTAbits.RA3=1;
void Buzzer_off(void)
PORTAbits.RA3=0;
void LED_Right_Left(void)
PORTD=0b01111111;
delay(200);
PORTD=0b10111111;
delay(200);
PORTD=0b11011111;
delay(200);
PORTD=0b11101111;
delay(200);
PORTD=0b11110111;
delay(200):
PORTD-0bl11 11011;
delay(200);
PORTD=0b11111101;
delay(200);
PORTD=0bl1111110;
delay(200);:
void LED_Left_Right(void)
PORTD=0b11111110;
delay(200);
PORTD=Ob11111101;
delay(200);
PORTD=0b11111011;
delay(200),
PORTD=0b11110111;
delayl200):
PORTD=0bl1101111;
delay(200);
PORTD=0bl 1011111;
delay(200);
PORTD=0b10111111;
delay(200);:
PORTD=0b01111111,
delay(200).
void main (void)
TRISD 0x00,
TRISB - 0xtt;
TRISA = Ox00,
while(1)
) else {
Buzzer_on(); LED_Left_Right():
if( SW1==0) {
Buzzer off);}
else {
Buzzer off():LED Right Left(0:}
if(SW2==0) {
Buzzer_off(): }
Experiment No 7
(Generate the square wave with PIC)
#include <p18f4520.h>
#pragma config OSC = HS |/ High-speed oscillator
#pragma config WDT = OFF I/Watchdog Timer disabled
#pragma config LVP = OFF | Low-voltage Programming disabled
#pragma config PBADEN = OFF
unsigned char g_ ui8TimerOnflag-0,g_ui8Num=0;
unsigned char g_ui8tmrcnt=0;
void TimerOlnit()
{
TOCONbits.TOPSO = 1;
|/Prescaler of 2
TOCONbits.TOPS1 = 1;
/ Prescaler of 2
TOCONbits. TOPS2 = 1;
|/Prescaler of 2
TOCONbits. PSA = 0;
|/Timer Prescaler assigned
TOCONbits.TOSE = 0;
|| Increment on low to high transition
TOCONbits.TOCS - 0;
/ internal clock
TOCONbits.TO8B11 =0;
I/16 B1T MODE
TOCONbits. TMROON 1, |/ Turns timer on
TMKOH -0xb3;
TMROL = OxB4;
|/Interrupt Setup
RCONbits. IPEN = 1;
|/Interrupt priority enabled
INTCONbits.GIE = 1;
|/Enables Global Interrupts
INTCONbits.PEIE 1;
|/Enables Peripheral Interrupts
INTCONbits.TM ROIE = 1;
I/Enables overflow Interrupt
INTCONbits.TMROIF = 0;
||Sets overflow bit to zero
INTCON2bits.TMROIP = 1;
/Timer oInterrupt is high priority
void TMRISR(void);
#pragma code InterruptVectorHigh=0x08
void interruptVectorHigh (void)
asm
goto TMRISR
_endasm
#pragma code
#pragma interrupt TMRISR
void TMRISR (void)
if(INTCONbits.TMRoIF == 1)
INTCONbits.TMROIF=0;
I/Clear Interrupt Flag to prevent reinitialisation of ISR
TMROH 0xB3;
TMROL= 0xB4;
iflg_ui8TimerOnflag)
PORTD = 0x00;
8_ui8TimerOnflag=0;
else
{
PORTD = 0xff;
g_ui8TimerOnflag=1;
void main (void)
{
TimerOlnit():
8_ui8TimerOnflag=0;
TRISD = Ox00;
I/Port configured as Output
PORTD = 0x00;
//PORTD = 0x00
while(1) ;
Experiment No 8
(Interfacing serial port with Transmitting data with PIC)
#include <P18F4520.h>
void SerTx(unsigned char c)
while(PIR1bits.TXIF=-0);
TXREG=C;
void main(void)
TXSTA=0x20;
SPBRG=31;
TXSTAbits. TXEN=1;
RCSTAbits.SPEN=1;
while(1)
SerTx('P');
SerTx('u'):
SerTx('n'):
SerTx('e');
SerTx(0xOd);
Experiment No 8
(Interfacing serial port with Receiving data with PIC)
#include <P18F4520.h>
void main (void)
TRISD =0;
RCSTA=0x90;
SPBRG=31;
while(1)
while(PIR1bits.RCIFz-0);
PORTD=RCREG;
Experiment No 9
(tnterfacing of ADC with PIC)
#include p18f4520.h>
void SerTx(unsigned char c)
while(PIR1bits. TXIF=-0);
TXREG=C;
void delay(unsigned int x)
unsigned int ij:
for(i-0;ic«xi+)
for(j-0;j<x;j+*).
void main(void)
unsigned char i,d1,d?, d3 d4
unsigned int
TRISAbIts. TRISAO-1;
TRISC-0x00,
TRISD-Dx00,
ADCONO OxB1
ADCONI Oalt;
YXSIA-Ox20;
SrBRG-31
HCSTALHa SPEN I
wtuiel)
AD(ON0bits G0
while(ADCONObits. DONE == 1);
X=ADRESH;
X=X<<8;
X=x\ADRESL;
d4-(x%10)+48;
d3=(x/10)%10+48;
d2=(x/100)%10+48;
d1=(x/100)/10+48;
delay(1);
SerTx('A');:
SerTx('D'):
SerTx('C'):
SerTx(' ):
SerTx('V');
SerTx('a');
SerTx('"):
SerTx('u');
SerTx('e');
SerTx(':);
SerTx("'):
SerTx(d1):
SerTx(d2);
SerTx(d3);
SerTx(d4);
SerTx(0x0d);
delay(500):