⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newpose1.c

📁 单片机程序 实现智能寻迹
💻 C
📖 第 1 页 / 共 2 页
字号:
#include  "total.h"


//uchar s[7];
uchar Port1,Port2;
uchar Key_flag=0;
uchar Time_cnt=0;
uchar Card_state=0xE0;

uchar *Kpd;
uint Page=3000;
union
     {
     uchar value;
     struct
          {
          uchar set:1;
          uchar copy:1;
          uchar back:1;
          uchar down:1;
          uchar send:1;
          uchar watch:1;
          uchar record:1;
          uchar download:1;
          }value_bit;
     }Control;


void nop(void)
  {
  uint i=10;
  while(i)
    {i--;}
  }



void delay(uint time)
{
uchar i;

do{
	for(i=250;i!=0;i--);
	
  } while(--time!=0);

}


#include "display.c"
#include "readtime.c"
#include "usart.c"
#include "card4442.c"
#include "45db041.c"
void init_LCD(void)
{
 unsigned char i;
 uchar *pointer;
 pointer=(unsigned char*)0x91;
 for(i=0;i<12;i++)
   {
   *(pointer++)=0x00;
   }
 FLL_CTL0 |=0x30;
 P5SEL=0xFC;
 LCDCTL=0x7f;
 BTCTL=0x0F;
 SCFQCTL=0x25;
 DISP_scebatu;
}

void Init_port(void)
  {

  P3DIR=0X00;

  P2DIR=~(BIT1+BIT2+BIT3);
  P2OUT|=BIT1+BIT2+BIT3;
  P2IE|=(BIT1+BIT2+BIT3);
  P2IES|=(BIT1+BIT2+BIT3);
  }
void Init_TA(void)
  {
  TACTL=0x0106;
  CCTL0=CCIE;
  TAR=0;
  }


/*void HextoASC(unsigned long int m)
 {
 uchar i,j;
 uchar ss[7];
 for(i=0;i<8;i++)
   {
   if((m&0x0000000f)>9)
     {
     ss[i]=(m&0x0000000f)+55;
     }
   else
     {
     ss[i]=(m&0x0000000f)+48;
     }

   m>>=4;
   s[i]=ss[i];
   //if(m==0)break;
   }
 for(j=0;j<=i;j++)
   {
   s[j]=ss[8-j];
   }
   Display(s);
 }*/


#pragma vector=TIMERA0_VECTOR
__interrupt void TIMEA00 (void)
  {
  TACTL&=~0x0001;          //清标志位taifg
  TACTL|=0x0004;           //清TAR
  TAR=0;
  Time_cnt++;
  if(Time_cnt>=1)
    {
    P4OUT^=BIT2;
    Time_cnt=0;
    }
  }
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_00 (void)
{
 if((P1IFG&BIT4)==BIT4)
  {
  P1IFG&=~BIT4;
  delay(4);
  if((P1IN&BIT4)==0)
    {
    P1IES&=~BIT4;
    Card_state=Read442(0x20);

    }
  else
    {
    P1IES|=BIT4;
    }
  if((P1IFG&BIT4)==BIT4)Card_state=0xc0;
  P1IFG&=~BIT4;
  }
 LPM3_EXIT;
 }




#pragma vector=UART0RX_VECTOR
__interrupt void Usart0_Rx (void)
  {

  if(StartRx0==0)
    {
    if(RXBUF0==0x16)
      {
      StartRx0=1;//开始接收数据
      rxindex0=0;
      RxBuffer0[rxindex0]=RXBUF0;
      }
    }
  else
    {
    rxindex0++;
    switch(rxindex0)
      {
      case 1: {
              if(RXBUF0==0x00)
                 {
                 RxBuffer0[rxindex0]=RXBUF0;
                 }
               else
                 {
                 StartRx0=0;
                 rxindex0=0;
                 }
              }break;
      case 2: {
              if((RXBUF0>=0x03)&&(RXBUF0<=16))
                {
                RxBuffer0[rxindex0]=RXBUF0;
                RXData_long=RXBUF0+2;
                }
              else
                {
                StartRx0=0;
                rxindex0=0;
                }
              }break;
      default:{
              RxBuffer0[rxindex0]=RXBUF0;
              if(rxindex0>RXData_long)
                {
                StartRx0=0;
                rxindex0=0;
                memcpy(RxData,RxBuffer0,16);
                Uart_TRfinish_flag=0x0f;
                LPM3_EXIT;
                }
              }
         }
      }

}

/*********************The Fourth***********************************************/
//  UART1 TX ISR
//  UART1 TX ISR is RS485 communication
//  UART1 TX ISR will for exit from LPM3 in Mainloop
/******************************************************************************/

    #pragma vector=UART0TX_VECTOR
    __interrupt void Usart0_tx (void)


{

  if(StartTx0==0)
    {
    TXBUF0=0x16;
    StartTx0=1;
    txindex0=0;
    }
  else
    {
    txindex0++;
    switch(txindex0)
      {
      case 1: {
              TXBUF0=0x00;
              }break;
      case 2: {
              TXBUF0=233;
              }break;
      default:{
              if(txindex0<236)
                {
                TXBUF0=Card_data[txindex0-3];
                }
              else if(txindex0==236)
                {
                TXBUF0=CRC2&0x00ff;
                }
              else if(txindex0==237)
                {
                TXBUF0=(CRC2&0xff00)>>8;
                }
              else
                {
                IE1&=~UTXIE0;
                }
              }
         }
      }



  /*if(txindex0<txcount0)
  {
    TXBUF0=Card_data[txindex0];
    txindex0++;
  }
  else{

         IE1&=~UTXIE0; //禁止中断

      }*/
}



#pragma vector=PORT2_VECTOR
__interrupt void PORT2_00 (void)
  {
  if((P2IFG&BIT1)==BIT1)
    {
    delay(2);
    if((P2IN&BIT1)==0)
      {
      P2IFG&=~BIT1;
      P2DIR|=BIT1;
      Control.value|=P3IN;
      P2DIR&=~BIT1;
      LPM3_EXIT;
      }
    }
  else if((P2IFG&BIT2)==BIT2)
    {
    delay(2);
    if((P2IN&BIT2)==0)
      {
      P2IFG&=~BIT2;
      P2DIR|=BIT2;
      Port2=P3IN;
      Port1=0;
      P2DIR&=~BIT2;
      Key_flag=1;
      LPM3_EXIT;
      }
    }
  else if((P2IFG&BIT3)==BIT3)
    {
    delay(2);
    if((P2IN&BIT3)==0)
      {
      P2IFG&=~BIT3;
      P2DIR|=BIT3;
      Port1=P3IN;
      Port2=0;
      P2DIR&=~BIT3;
      Key_flag=1;
      LPM3_EXIT;
      }
    }
  if(Control.value==0)
    {
    Port1=0;
    Port2=0;
    Key_flag=0;
    }
  P2IFG=0;
  }


main( void )
{
 uchar bit;
 uint i;
 union
    {
     unsigned long int value;
     struct
          {
          uchar byte3:8;
          uchar byte2:8;
          uchar byte1:8;
          uchar byte0:8;
          }value_byte;
     struct
          {
          uint word1:16;
          uint word0:16;
          }value_word;
     }fourbyte;
 WDTCTL = WDTPW+WDTHOLD;
 Control.value=0;
 P4DIR|=BIT2;
 P4OUT|=BIT2;
 delay(200);
 P4OUT&=~BIT2;

 init_LCD();
 init_I2c();
 AT45DB04Iint();
 Init_TA();
 Init_port();
 InitUSART(COM0,6,0,1,0);
 Init442();
 //TACTL|=MC1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -