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

📄 main.c

📁 采用TI公司MSP430来控制RC531的源代码
💻 C
字号:
#include "main.h"
#include <msp430x13x.h>
#include "rc531.h"
#include "globe.h"



/*
/****************************************************************
*  函数名:usart0_rx										
*  功能说明:串口0 收中断服务程序		
*  入口参数:N/A											
*  出口参数:RS_RECVSTATUS										
/****************************************************************
#pragma vector=UART0RX_VECTOR
__interrupt void usart0_rx (void)
{
     char comm_buff;
     //power_down();
     comm_buff = RXBUF0;           
		
   switch (RS_RECVSTATUS)			                     //当前通信状态
      {
	case 0: 				                     //空闲状态			
	if (comm_buff == STX)		                             //没有DLE照常命令操作
		{
			RS_RecvPoint = 0;			     //接收指针清零
			RS_RECVSTATUS = 1;
			Timer0_Count = 0;			     //定时器0计数器
		}
		break;
			
	case 1: 						     //Point=1;数据交换包序号
		Uart_buffer.PRO_RecvBuf[RS_RecvPoint++] = comm_buff;
		//P1OUT = 0x08;
		//delay(5);
		//P1OUT = 0;
		RS_RECVSTATUS = 2;
		break;
	case 2: 						     //Point=2;通信命令字
		Uart_buffer.PRO_RecvBuf[RS_RecvPoint++] = comm_buff;
		RS_RECVSTATUS = 3;
		break;
	case 3: 						     //Point=3;帧数据长度
		Uart_buffer.PRO_RecvBuf[RS_RecvPoint++] = comm_buff;
		RS_RecvLen = comm_buff; 		             //数据长度字节
		RS_RecvLen++;					     //长度+1包括BCC校验字
		RS_RECVSTATUS = 4;
		break;
	case 4: 						     //Point=4 TO 4+LEN;帧数据容
		Uart_buffer.PRO_RecvBuf[RS_RecvPoint++] = comm_buff;
		RS_RecvLen--;
		if (RS_RecvLen == 0)			             //数据内容是否已到指定长度
			{
				RS_RECVSTATUS = 5;
			}
		break;
	case 5: 						     //帧尾ETX字符
		if (comm_buff == ETX)
			{
					
				RS_RECVSTATUS = 6;
				__low_power_mode_off_on_exit();
					
			}
		else
			{
				RS_RecvPoint = 0;
				RS_RECVSTATUS = 0;
			}
		break;
	default:
		RS_RecvPoint = 0;
		RS_RECVSTATUS = 0;
		break;
     }
		
}

/****************************************************************
*  函数名:usart0_tx										
*  功能说明:串口0发送中断服务程序		
*  入口参数:N/A											
*  出口参数:RS_RECVSTATUS
/****************************************************************
#pragma vector=UART0TX_VECTOR
__interrupt void uart0_tx(void)
{
      if (RS_SENDSTATUS != 0)				//发送数据
	{
	      if(RS_SendPoint < RS_SendLen)
	      {
	            TXBUF0 = Uart_buffer.PRO_SendBuf[RS_SendPoint++];
	      }
	      else
	      {
	              RS_SENDSTATUS = 0;
	           //   P1OUT = 0x04;
	            //  delay(5);
	            //  P1OUT =0;
			//ClrLED1();
	      }
       }
}
*/
/****************************************************************
*  函数名:Intial_Mcu										
*  功能说明:MCU初始化程序		
*  入口参数:N/A											
*  出口参数:											
****************************************************************/
void Intial_Mcu(void)
{
         char i;
	 char * Flash_ptr;	
         WDTCTL = WDTPW + WDTHOLD;                              // Stop WDT
/*
//osc set
	 BCSCTL1 |= XTS;                       		        // ACLK = LFXT1 = HF XTAL
	  do 
	  {
		  IFG1 &= ~OFIFG;                       	// Clear OSCFault flag
		  for (i = 0xFF; i > 0; i--);           	// Time for flag to set
	  }
	  while ((IFG1 & OFIFG) != 0);          		// OSCFault flag still set?                

	  BCSCTL2 |= SELM_3;                    		// MCLK = LFXT1 (safe)


//time set
	
	  CCTL0 = CCIE;                         		// CCR0 interrupt enabled
	  CCR0 = 0x1000;
	  TACTL = TASSEL_2+ MC_1;             	                // SMCLK, contmode
	
//uart set 	  
	  P3SEL |= 0x30;                        		// P3.4,5 = USART0 TXD/RXD
	  ME2 |= UTXE0 + URXE0;                 		// Enabled USART0 TXD/RXD
	  UCTL0 |= CHAR;                        		// 8-bit character
	  UTCTL0 |= SSEL0;                      		// UCLK = ACLK
	  UBR00 =0xe8;		              		        // 7.37Mhz/9600 - 372
	  UBR10 =0x02;            		   		//
	  UMCTL0 = 0x00;                        		// no modulation
	  UCTL0 &= ~SWRST;                      		// Initalize USART state machine
	  IE2 |= URXIE0+UTXIE0;                  		// Enabled USART0 RX interrupt

 //变量定义

	//Led_Delay_Flag=0;
 	Power_Status=1;
 	Flash_ptr=(char *)0x1080;
	Trigger_Mode=Read_flash(Flash_ptr++);
	Trigger_Time=Read_flash(Flash_ptr++);
	Module_ID=Read_flash(Flash_ptr++);
	Uart_Baud=Read_flash(Flash_ptr++);
	Encrypt_Mode=Read_flash(Flash_ptr++);//zhouping
	Change_Baud(Uart_Baud);
*/	
}

int main( void )
{ char i,tip;
  char data_snd[16],data_rev[16];
   for(i=0;i<16;i++)
   { data_rev[i]=0x88;
   }   
  Intial_Mcu();
  rc531_init(); 
  /* while(1)
  {
         while(1)
        {
           _NOP();
           if(Request(REQA)==0);
           break;
        }

        if(AntiColl()==0)
        {
           if(Select_Card()==0);
           {  
              tip=MIF_private(2);
              break;
           }
        }
  }
  */
   while(1)
  {
         while(1)
        {
           _NOP();
           //tip=Request(REQA);
           if(Request(REQA)==0)
           break;
           _NOP();
        }
        w=0;
        i=AntiColl();
        _NOP();
        if(i==0)
        {   
            tip=MIF_Halt();  
            _NOP();      
        }
  }
 
 _NOP();
 return(0);
}

⌨️ 快捷键说明

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