Printed Code Version Produced by WordPress WP-SynHighlight Plugin

Embed Size (px)

DESCRIPTION

bluetooh hc 05 msp430

Citation preview

  • 29/8/2015 PrintedcodeversionproducedbyWordPressWPSynHighlightplugin

    http://www.mcuturkey.com/androiduzerindebluetoothilekablosuzkontroluygulamasi/#comment13712 1/3

    /*****************************************************************sim:BluetoothDemodenemeuygulamas **Yazar:ErhanYILMAZ**Eposta:[email protected]**Tarih:08072012 **Srm:1.0*****************************************************************/#include#include"stdbool.h"#defineLED10x01#defineLED20x40#defineBUTON0x08#defineTXD0x02//TXDpiniP1.1#defineRXD0x04//RXDpiniP1.2#defineBit_time104//9600Baud,SMCLK=1MHz(1MHz/9600)=104#defineBit_time_552//yarmbitzamanunsignedcharBitCnt;//Bitsayadeikeniunsignedintalinan;//Alnankarakterunsignedintgonderilen;//GnderilenkarakterunsignedcharCharCnt;//KaraktersayaunsignedintRXByte;//verialmdeikeniunsignedintTXByte;//verignderimdeikeniboolisReceiving;//verialmadurumbitiboolhasReceived;//verialnddurumbitivoidTransmit(void);longham,derece;//gecikmefonksiyonuvoiddelay(unsignedlongintd){d*=100;for(;d>0;d);}voidmain(void){WDTCTL=WDTPW+WDTHOLD;//Watchdogtimeridurdur BCSCTL1=CALBC1_1MHZ;//1mhzdahiliosilatr DCOCTL=CALDCO_1MHZ;//SMCLK=DCO=1MHz//ADeviriciscaklklmekiinayarlanr.ADC10CTL1=INCH_10+ADC10DIV_3;ADC10CTL0=SREF_1+ADC10SHT_3+REFON+ADC10ON; P1SEL|=TXD;//gndermepiniayarlar P1IES|=RXD;//Almapiniayarlar P1IFG&=~RXD;//ClearRXD(flag)beforeenablinginterrupt P1IE|=RXD;//EnableRXDinterruptP1DIR=0; //Port1tamamgiri P1DIR|=TXD+LED1+LED2;//Gereklipinlerkolarakayarlanr. isReceiving=false;//Setinitialvalues hasReceived=false;gonderilen=0;P1OUT=0; //Port1ktemizle. __bis_SR_register(GIE);//interruptsenabled//Anadngwhile(1){ delay(100); //LED1'indurumunagregnderilenverinin1.bitidzenlenir.if(P1OUT&LED1)

  • 29/8/2015 PrintedcodeversionproducedbyWordPressWPSynHighlightplugin

    http://www.mcuturkey.com/androiduzerindebluetoothilekablosuzkontroluygulamasi/#comment13712 2/3

    gonderilen|=0x01;elsegonderilen&=~0x01;//LED2'nindurumunagregnderilenverinin2.bitidzenlenir.if(P1OUT&LED2)gonderilen|=0x02;elsegonderilen&=~0x02;//Butonundurumunagregnderilenverinin3.bitidzenlenir.if(!(P1IN&BUTON))gonderilen|=0x04;elsegonderilen&=~0x04; //Gnderilenverinin8.bitisetedilerekbutonveLEddurumbilgilerignderilir.TXByte=(gonderilen|0x80);Transmit();ADC10CTL0|=ENC+ADC10SC;//ADevrimibalatif(ADC10CTL0&ADC10IFG) //ADevrimbittimi?{ADC10CTL0&=!ADC10IFG; //evrimbayarntemizleham=ADC10MEM; //scaklokuderece=((ham673)*423)/1024; //Scakldereceyeevir. //Gnderilenverinin8.bitisfrlanarakscaklkbilgisignderilir.TXByte=(int)derece&0x7f;Transmit();}//Alnanverideerlendirilir.if(hasReceived){alinan=RXByte;hasReceived=false;//Gelenverinin1.bitinegreLED1durumudzenlenir.if(alinan&0x01)P1OUT|=LED1;elseP1OUT&=~LED1; //Gelenverinin2.bitinegreLED2durumudzenlenir.if(alinan&0x02)P1OUT|=LED2;elseP1OUT&=~LED2;}}}//BufonksiyonTXBytedegikenindekiveriyiTXDpinindengnderir.voidTransmit(void){ while(isReceiving);//WaitforRXcompletion TXByte|=0x100;//AddstopbittoTXByte(whichislogical1) TXByte=TXByte

  • 29/8/2015 PrintedcodeversionproducedbyWordPressWPSynHighlightplugin

    http://www.mcuturkey.com/androiduzerindebluetoothilekablosuzkontroluygulamasi/#comment13712 3/3

    { isReceiving=true; P1IE&=~RXD;//DisableRXDinterrupt P1IFG&=~RXD;//ClearRXDIFG(interruptflag) TACTL=TASSEL_2+MC_2;//SMCLK,continuousmode CCR0=TAR;//Initializecompareregister CCR0+=Bit_time_5;//Settimetillfirstbit CCTL0=OUTMOD1+CCIE;//DissableTXandenableinterrupts RXByte=0;//InitializeRXByte BitCnt=0x9;//LoadBitcounter,8bits+ST}//Timerinterruptroutine.Thishandlestransmitingandreceivingbytes.#pragmavector=TIMERA0_VECTOR__interruptvoidTimer_A(void){if(!isReceiving){ CCR0+=Bit_time;//AddOffsettoCCR0if(BitCnt==0)//IfallbitsTXed{ TACTL=TASSEL_2;//SMCLK,timeroff(forpowerconsumption) CCTL0&=~CCIE;//Disableinterrupt} else{ CCTL0|=OUTMOD2;//SetTXbitto0if(TXByte&0x01) CCTL0&=~OUTMOD2;//Ifitshouldbe1,setitto1 TXByte=TXByte>>1; BitCnt;}} else{ CCR0+=Bit_time;//AddOffsettoCCR0if(BitCnt==0){ TACTL=TASSEL_2;//SMCLK,timeroff(forpowerconsumption) CCTL0&=~CCIE;//Disableinterrupt isReceiving=false; P1IFG&=~RXD;//clearRXDIFG(interruptflag) P1IE|=RXD;//enabledRXDinterruptif((RXByte&0x201)==0x200)//Validatethestartandstopbitsarecorrect{ RXByte=RXByte>>1;//Removestartbit RXByte&=0xFF;//Removestopbit hasReceived=true;}__bic_SR_register_on_exit(CPUOFF);//EnableCPUsothemainwhileloopcontinues}else{ if((P1IN&RXD)==RXD)//Ifbitisset? RXByte|=0x400;//SetthevalueintheRXByte RXByte=RXByte>>1;//Shiftthebitsdown BitCnt; }}}