17
ASSIGNMENT MICROCNOTROLLER Kashif Ayyaz Abbasi

Micro Assignment 1

  • Upload
    babak

  • View
    345

  • Download
    2

Embed Size (px)

DESCRIPTION

Micro Assignment 1

Citation preview

Page 1: Micro Assignment 1

ASSIGNMENT

MICROCNOTROLLER

Kashif Ayyaz Abbasi

Reg Number : 09f-beit-58

Page 2: Micro Assignment 1

Q : 1 Write a program to to out 1KHZ frequency by using CCP(compare mode) ?

void interrupt(void);void main() { CCP1CON=0x02; PIR1.CCP1IF=0; PIE1.CCP1IE=1; CCPR1L=0xC4; CCPR1H=0X09; //set value (2500 dec) annd in 9c4 in HEX INTCON=0xc0; TRISC.F2=0; T1CON=0x08; INTCON.TMR1IE=1; INTCON.TMR1IF=0; TMR1L=0x00; //we set as a counter TMR1H=0X00; T1CON.TMR1ON=1; while(1){} }void interrupt(void){ if(PIR1.CCP1IF) { PIR1.CCP1IF=0; }}

Page 3: Micro Assignment 1

Q: 2 Write a program to Out different Frequencies using Switch ?If Sw1==1 frequency out = 1KHZ Sw2 == 1 Frequency out = 2KHZ Sw3== 1 Frequency out = 3Khz

int count = 0; void main() { TRISD.F0=0; T0CON=0x08; INTCON.TMR0IE=1;

INTCON.TMR0IF=0;TMR0L=0XF0;TMR0H=0XD8;PORTD.F0=1;count=1;T0CON.TMR0ON=1;INTCON.GIE=1;TRISB.F0=1;TRISB.F1=1;TRISB.F2=1;PORTB=0X00;

while(1) { if(portb.f0=1) { count=0; } if(portb.f1=1) { count=1; } if(portb.f2=1) { count=2; } }

}void interrupt(){

if( INTCON.TMR0IF==1) { if(count==0) { INTCON.TMR0IF=0;

Page 4: Micro Assignment 1

T0CON.TMR0ON=0; PORTD.F0=0; TMR0L=0XF0; TMR0H=0XD8; T0CON.TMR0ON=1; //delay_ms(1000); / /count=1; }

if(count==1) { INTCON.TMR0IF=0; T0CON.TMR0ON=0; PORTD.F0=0; TMR0L=0XE0; TMR0H=0XB1; T0CON.TMR0ON=1; //delay_ms(1000); //count=2; } else if (count==2) { INTCON.TMR0IF=0; T0CON.TMR0ON=0; PORTD.F0=1; TMR0L=0X78; TMR0H=0XEC; T0CON.TMR0ON=1; //delay_ms(1000); //count=3; } else { } }

}

Page 5: Micro Assignment 1

Q : 3 write a program to ON OFF LED 1SEC delay through Timer.

# define led PORTD.F0 int count=0; void main (){ TRISD.F0=0; T0CON=0X08; INTCON.TMR0IE=1; INTCON.TMR0IF=0; TMR0L=0XF0; TMR0H=0XD8; led=1; INTCON.TMR0ON=1; INTCON.GIE=1; INTCON.PEIE=1; while(1){ if(count==249){ count=0; INTCON.TMR0ON=0; TMR0L=0XF0; TMR0H=0XD8; led=~led; delay_ms(1000); INTCON.TMR0ON=1; //INTCON.TMR0IF=0;

Page 6: Micro Assignment 1

}

} } void interrupt() { if(INTCON.TMR0IF){ INTCON.TMR0IF=0; INTCON.TMR0ON=0; TMR0L=0XF0; TMR0L=0XD8; count=count+1; INTCON.TMR0ON=1; } }

Q: 4 write a program to transmit KICSIT on PC And receive data From PC and Display IT on LCD?

unsigned char data[10]; unsigned char temp[50]; int i=0; void interrupt(void); void main() { int i,length; char X[]={"KICSIT"};

Page 7: Micro Assignment 1

RCSTA=0x90; TXSTA=0X20;

RCSTA.SPEN=1;Lcd_Config(&PORTD, 3,2, 0, 7, 6, 5,4);

TRISD=0;PORTD=0;TRISC.F6 = 0; //TX PinTRISC.F7 = 1; //RX PinPIE1.RCIE=1;PIR1.RCIF=0;

INTCON=0xC0; length=strlen(X); while(1){ for(i=0;i<length;i++){

TXREG=X[i]; delay_ms(1000);

} lcd_out(1,1,data);

} } void interrupt(void) {

if(PIR1.TXIF){

PIR1.TXIF=0;}if(PIR1.RCIF==1){

data[i]= RCREG; PIR1.RCIF=0;

} }

Page 8: Micro Assignment 1

Q 5 : write a program to generate frequency of4ms 8ms 2ms 4ms

int count=0;void main(void){

TRISD.F0=0;T0CON=0X08;INTCON.TMR0IE=1;INTCON.TMR0IF=0;TMR0L=0XF0;TMR0H=0XD8;PORTD.F0=1;count=1;T0CON.TMR0ON=1;INTCON.GIE=1;while(1) {

}

}void interrupt(){ if( INTCON.TMR0IF==1)

Page 9: Micro Assignment 1

{ if(count==0) { INTCON.TMR0IF=0; T0CON.TMR0ON=0; PORTD.F0=0; TMR0L=0XF0; TMR0H=0XD8; T0CON.TMR0ON=1; //delay_ms(1000); count=1; }

if(count==1) { INTCON.TMR0IF=0; T0CON.TMR0ON=0; PORTD.F0=0; TMR0L=0XE0; TMR0H=0XB1; T0CON.TMR0ON=1; //delay_ms(1000); count=2; } else if (count==2) { INTCON.TMR0IF=0; T0CON.TMR0ON=0; PORTD.F0=1; TMR0L=0X78; TMR0H=0XEC; T0CON.TMR0ON=1; //delay_ms(1000); count=3; } else if (count==3) { INTCON.TMR0IF=0; T0CON.TMR0ON=0; PORTD.F0=0; TMR0L=0XF0; TMR0H=0XD8; T0CON.TMR0ON=1; //delay_ms(1000); count=0; } }}

Page 10: Micro Assignment 1

Q : Design a control and monitoring system of turbine systemMonitoring parameter are1: temperature2: Pressure 3: RPM sensor to measure Revolution per/min of Turbine

LM35 for temperature Pressure switch for Measure pressureFrequency meter for RPMIf temp> 100 || pressure switch is ON then make the turbine

void setintterupt();void ADCset();#define turbine portb.f4void interrupt(void);void serial_sent(float f,int a,int f);char *data_;float temp;int i,count;int result;char start;

int pressure,RPM;int seccount,ExternalFreCount,Frequency=0;void serial_setting();void serial_setting(){

RCSTA=0x90; TXSTA=0X20;

RCSTA.SPEN=1;

Page 11: Micro Assignment 1

TRISC.F6 = 0; //TX PinTRISC.F7 = 1; //RX PinPIE1.RCIE=1;PIR1.RCIF=0;

}void setintterupt(){ INTCON=0xD0; INTCON2.INTEDG0=1;}void ADCset(){ ADCON0=0x81; ADCON0.ADON=1; ADCON1=0XC0; INTCON.GIE=1; INTCON.PEIE=1; PIR1.ADIF=0; PIE1.ADIE=1; ADRESH=ADRESL=0x00;}void serial_sent(float a,int b,int f){ if(a>=100 || b==1) { turbine=1; } else {

FloatToStr(a,data_);TXREG=data_;while(!TIR1.TXIF);TIR1.TXIF=0;IntToStr(b,data_);TXREG=data_;while(!TIR1.TXIF);TIR1.TXIF=0;IntToStr(f,data_);TXREG=data_;while(!TIR1.TXIF);TIR1.TXIF=0;

}}void READADC();void READADC(){ ADCON0.GO_DONE=1;}

Page 12: Micro Assignment 1

void timersetting();void timersetting(){ T1CON=0x08; INTCON.TMR1IE=1; INTCON.TMR1IF=0; TMR1L=0xf0; //we set as a counter TMR1H=0Xd8; T0CON=0x02; TMR0L=0x00; // we set 1 sec timer and count for 60 sec to make 1 min TMR0H=0x00; INTCON.TMR0IE=1; INTCON.TMR0IF=0;

}void start_timer();void start_timer(){ T0CON.TMR0ON=1; T1CON.TMR1ON=1;}

void main() { trisa.f0=1; trisb.f4=0; trisb.f0=1; UART1_Init(9600); setintterupt(); ADCset(); timersetting();

turbine=0; while(1) {

if(start=='s'){

READADC(); //read ADC INTCON.INTOIE=1;

start_timer(); serial_sent(temp,pressure,Frequency);

} }}void interrupt(void){

if(PIR1.RCIF==1){

Page 13: Micro Assignment 1

start= RCREG; PIR1.RCIF=0;

} if(INTCON.INT0IF==1) { INTCON.INT0IF=0; pressure=1; } if(PIR1.ADIF) { PIR1.ADIF=0; result=ADRESH; result=result<<8; result=result+ADRESL; //data=result; temp=result; temp=temp*0.00488; temp=temp*1000; temp=temp/10; } if(INTCON.TMR1IF) { INTCON.TMR1IF=0; if(seccount==14999) // 249*60 =14940sec // 14999=1min { Frequency=TMR0H; Frequency=Frequency<<8; Frequency=Frequency+TMR0L;

Frequency=(Frequency*65536)+ExternalFrecount;

seccount=0; TMR1L=0xf0; //we set as a counter TMR1H=0Xd8; TMR0L=0x00; //we set as a Externaltimer TMR0H=0X00;

T0CON.TMR0ON=1;T1CON.TMR1ON=1;

} else { seccount++; TMR1L=0xf0; //we set as a counter TMR1H=0Xd8; }

Page 14: Micro Assignment 1

} if(INTCON.TMR0IF) { INTCON.TMR0IF=0; ExternalFreCount++; }}