📄 rrw.c
字号:
#include <p18f4620.h>
#include <spi.h>
#include <usart.h>
#include "cc2420.h"
#include <delays.h>
#define CC2420_CS_SET PORTCbits.RC0 = 0;
#define CC2420_CS_UNSET PORTCbits.RC0 = 1;
extern void Init(void);
extern void Write_register(char register_addr , unsigned int register_value);
extern void Read_register(char register_addr);
extern void Trans_data(unsigned char a);
extern void Write_Command(char addr);
extern unsigned char SPIGet(void);
extern void CC2420_Reset(void);
extern void Init_IO(void);
void main(void)
{
unsigned char i;
unsigned char register_addrdess;
CC2420_Reset();
Init();
for(i = 0x00; i <= 0x30 ;i ++)
{
Trans_data('*');
Trans_data(i);
register_addrdess = i ;
Read_register(register_addrdess);
}
for(;;);
}
void Init(void)
{
TRISA = 0;
PORTA = 0;
TRISCbits.TRISC2 = 0; //output: RESETn
PORTCbits.RC2 = 1; //RESETn initially set high (CC2420)
ADCON0 = 0x1C; //turn off analog input
TRISBbits.TRISB0 = 1; //input: FIFO (CC2420)
TRISBbits.TRISB1 = 1; //input: CCA (CC2420)
TRISBbits.TRISB2 = 1; //input: SFD (CC2420)
TRISBbits.TRISB3 = 1; //input: FIFOP (CC2420)
TRISCbits.TRISC0 = 0; // output: CSn
PORTCbits.RC0 = 1; //CSn initially set high (CC2420)
OpenSPI(SPI_FOSC_4,MODE_00,SMPMID);
OpenUSART(USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE &
USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH,25 );
}
void Write_register(char register_addr , unsigned int register_value)
{
CC2420_CS_SET
WriteSPI(0x00 | register_addr);
WriteSPI((register_value & 0xFF00) >> 8);
WriteSPI(register_value & 0x00FF);
CC2420_CS_UNSET
}
void Read_register( char register_addr)
{
unsigned int value_high = 0 , value_low = 0;
CC2420_CS_SET
WriteSPI(register_addr | 0x40);
SSPBUF = 0;
while(!SSPSTATbits.BF);
value_high = SSPBUF;
SSPBUF = 0;
Trans_data(value_high);
while(!SSPSTATbits.BF);
value_low = SSPBUF;
Trans_data(value_low);
CC2420_CS_UNSET
}
void Trans_data(unsigned char a)
{
while(BusyUSART());
WriteUSART(a);
}
void Write_Command(char addr)
{
CC2420_CS_SET
WriteSPI(addr);
CC2420_CS_UNSET
}
unsigned char SPIGet(void)
{
char a;
CC2420_CS_SET
WriteSPI(0x00);
while(!SSPSTATbits.BF);
a = SSPBUF;
CC2420_CS_UNSET
return a;
}
void CC2420_Reset(void)
{
int i;
PORTCbits.RC2 = 0; //RESETn set high
for(i=0;i<30000;i++);
PORTCbits.RC2 = 1; //RESETn set high
for(i=0;i<30000;i++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -