?? main.c
字號:
/*C**************************************************************************
* NAME: main.c
*----------------------------------------------------------------------------
* Copyright (c) 2006 endylu
*----------------------------------------------------------------------------
* RELEASE: M8-cc1100
* REVISION: 1.0
*----------------------------------------------------------------------------
* PURPOSE:
* This is the demonstration software for MAGE8L
*****************************************************************************/
/*_____ I N C L U D E S ____________________________________________________*/
#include <iom8v.h>
#include <macros.h>
#include "main.h"
/*_____ M A C R O S ________________________________________________________*/
/*_____ D E F I N I T I O N ________________________________________________*/
INT8U PaTabel[8] = {0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0};
INT8U arrRx[50];
INT8U length;
INT8U flag_receive;
/*_____ D E C L A R A T I O N ______________________________________________*/
/*F**************************************************************************
* NAME: main
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE:
* Main user routine
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
void main (void)
{
PORTD|=0X04; //GDO0上拉
DDRB|=1<<LED2;
PORTB|=1<<LED2;
CpuInit();
POWER_UP_RESET_CC1100();
halRfWriteRfSettings();
halSpiWriteBurstReg(CCxxx0_PATABLE, PaTabel, 8);
PORTB&=~(1<<LED2);
INT0_Init();
asm("sei"); //開全局中斷
halSpiStrobe(CCxxx0_SRX);
while(1);
}
/*****************************************************************************************
//函數名:void INT0_Init(void)
//輸入:無
//輸出:無
//功能描述:外部中斷0 初始化程序
/*****************************************************************************************/
void INT0_Init(void)
{
MCUCR|=0x02; //falling_adge
GIFR=0X40;
INT0_enable();
}
//*****************************************************************************************
//函數名:
//輸入:
//輸出:
//功能描述:中斷接收
//*****************************************************************************************
#pragma interrupt_handler int0:2
void int0(void)
{
uint8 i;
uint8 status[2];
flag_receive=RECEIVE_error;
if(halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO)//如果接的字節數不為0
{
length = halSpiReadReg(CCxxx0_RXFIFO);//讀出第一個字節,此字節為該幀數據長度
halSpiReadBurstReg(CCxxx0_RXFIFO, arrRx, length); //讀出所有接收到的數據
halSpiReadBurstReg(CCxxx0_RXFIFO, status, 2); //讀出CRC校驗位
if(status[1] & CRC_OK)
{
flag_receive=RECEIVE_OK;
PORTB|=1<<LED2;
for(i=2;i<length;i++)
{
putchar(arrRx[i]);
}
Delay_ms(100);
PORTB&=~(1<<LED2);
}
}
halSpiStrobe(CCxxx0_SFRX); //清洗接收緩沖區
halSpiStrobe(CCxxx0_SRX);
}
void Delay_us(uint16 time) //set time 120 to 100us,set 1 to 3.5us;
{while (time--);
_WDR();
}
void Delay_ms(uint16 time)
{while (time--)
Delay_us(1200);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -