ATmega16nrf24l01接收程序.docx

上传人:b****5 文档编号:5742849 上传时间:2022-12-31 格式:DOCX 页数:14 大小:15.83KB
下载 相关 举报
ATmega16nrf24l01接收程序.docx_第1页
第1页 / 共14页
ATmega16nrf24l01接收程序.docx_第2页
第2页 / 共14页
ATmega16nrf24l01接收程序.docx_第3页
第3页 / 共14页
ATmega16nrf24l01接收程序.docx_第4页
第4页 / 共14页
ATmega16nrf24l01接收程序.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

ATmega16nrf24l01接收程序.docx

《ATmega16nrf24l01接收程序.docx》由会员分享,可在线阅读,更多相关《ATmega16nrf24l01接收程序.docx(14页珍藏版)》请在冰豆网上搜索。

ATmega16nrf24l01接收程序.docx

ATmega16nrf24l01接收程序

/*

*nrf24l01_jieshou.c

*

*Created:

2015/4/411:

53:

11

*Author:

LOVE

*/

/************************************************************************/

/*常用头文件及宏定义*/

/************************************************************************/

#include

#include//延时文件

#include//睡眠文件

#include//中断文件

#include//eeprom

#defineBIT(x)(1<<(x))

#defineucharunsignedchar

#defineuintunsignedint

/************************************************************************/

/*USART程序*/

/************************************************************************/

/*引脚说明*/

/*PD0RXDPD1PXD*/

voidchushihua_usart()

{

UCSRB|=BIT(TXEN);

UCSRC|=BIT(URSEL)|BIT(UCSZ1)|BIT(UCSZ0);//8位

UBRRH=0;

UBRRL=25;//19.2K波特率

}

voidwrite_char_usart(charshuju)

{

while(!

(UCSRA&BIT(UDRE)));

UDR=shuju;

}

voidwrite_string_usart(char*str)

{

while(*str!

='\0')

{

write_char_usart(*str);

str++;

}

}

/************************************************************************/

/*NRF24L01*/

/************************************************************************/

//PA0CEPA1CSNPA2SCKPA3MOSIPA4MISOPA5IQR

#defineDDR_NRF2401DDRA

#definePORT_NRF2401PORTA

#definePIN_NRF2401PINA

#defineCE_HPORT_NRF2401|=BIT(0)

#defineCE_LPORT_NRF2401&=~BIT(0)

#defineCSN_HPORT_NRF2401|=BIT

(1)

#defineCSN_LPORT_NRF2401&=~BIT

(1)

#defineSCKPORT_NRF2401|=BIT

(2),PORT_NRF2401&=~BIT

(2)

#defineMOSI_HPORT_NRF2401|=BIT(3)

#defineMOSI_LPORT_NRF2401&=~BIT(3)

#defineMISO_PIN(PIN_NRF2401&BIT(4))

#defineIQR_PIN(PIN_NRF2401&BIT(5))

chara[3]={0};

charread_peizhi(chardizhi)

{

CSN_L;

chari;

for(i=0;i<8;i++)

{

if(dizhi&BIT(7-i))

{

MOSI_H;

}

else

{

MOSI_L;

}

SCK;

}

dizhi=0;

for(i=0;i<8;i++)

{

_delay_us(10);

if(MISO_PIN)

{

dizhi+=BIT(7-i);

}

SCK;

}

CSN_H;

returndizhi;

}

voidwrite_peizhi(chardizhi,charshuju)

{

chari;

CSN_L;

dizhi+=BIT(5);

for(i=0;i<8;i++)

{

if(dizhi&BIT(7-i))

{

MOSI_H;

}

else

{

MOSI_L;

}

SCK;

}

for(i=0;i<8;i++)

{

if(shuju&BIT(7-i))

{

MOSI_H;

}

else

{

MOSI_L;

}

SCK;

}

CSN_H;

}

voidread_shuju(ucharn)

{

uchari,j;

CSN_L;

for(i=0;i<8;i++)

{

if(0x61&BIT(7-i))

{

MOSI_H;

}

else

{

MOSI_L;

}

SCK;

}

for(j=0;j

{

a[j]=0;

for(i=0;i<8;i++)

{

_delay_us(10);

if(MISO_PIN)

{

a[j]+=BIT(7-i);

}

SCK;

}

}

CSN_H;

}

voidwrite_shuju(charshuju)

{

chari;

CSN_L;

for(i=0;i<8;i++)

{

if(0xa0&BIT(7-i))

{

MOSI_H;

}

else

{

MOSI_L;

}

SCK;

}

for(i=0;i<8;i++)

{

if(shuju&BIT(7-i))

{

MOSI_H;

}

else

{

MOSI_L;

}

SCK;

}

CSN_H;

}

voidqingchu_tx()

{

chari;

CSN_L;

for(i=0;i<8;i++)

{

if(0xe1&BIT(7-i))

{

MOSI_H;

}

else

{

MOSI_L;

}

SCK;

}

CSN_H;

}

voidqingchu_rx()

{

chari;

CSN_L;

for(i=0;i<8;i++)

{

if(0xe2&BIT(7-i))

{

MOSI_H;

}

else

{

MOSI_L;

}

SCK;

}

CSN_H;

}

charread_zhuangtai()

{

CSN_L;

chari,zhuangtai=0;

MOSI_H;

for(i=0;i<8;i++)

{

SCK;

_delay_us(40);

if(MISO_PIN)

{

zhuangtai+=BIT(7-i);

}

}

CSN_H;

returnzhuangtai;

}

voidread_dizhi(chardizhi,char*shuju,charzijie)

{

CSN_L;

chari,j;

for(i=0;i<8;i++)

{

if(dizhi&BIT(7-i))

{

MOSI_H;

}

else

{

MOSI_L;

}

SCK;

}

shuju+=zijie;

for(j=0;j

{

shuju--;

*shuju=0;

for(i=0;i<8;i++)

{

_delay_us(10);

if(MISO_PIN)

{

*shuju+=BIT(7-i);

}

SCK;

}

}

CSN_H;

}

voidwrite_dizhi(chardizhi,char*shuju,charzijie)

{

chari,j;

CSN_L;

dizhi+=BIT(5);

for(i=0;i<8;i++)

{

if(dizhi&BIT(7-i))

{

MOSI_H;

}

else

{

MOSI_L;

}

SCK;

}

shuju+=zijie;

for(j=0;j

{

shuju--;

for(i=0;i<8;i++)

{

if(*shuju&BIT(7-i))

{

MOSI_H;

}

else

{

MOSI_L;

}

SCK;

}

}

CSN_H;

}

voidchushihua_nrf2401()

{

DDR_NRF2401|=BIT(0)|BIT

(1)|BIT

(2)|BIT(3)|BIT(5);

DDR_NRF2401&=~(BIT(4)|BIT(5));

PORT_NRF2401|=BIT(4)|BIT(5);

CSN_H;

CE_L;

chardizhi[5]={'l','o','v','e',0x01};

write_peizhi(0,0x0b);

write_peizhi(0x02,1);

write_dizhi(0x0a,dizhi,5);//接收地址love01

dizhi[4]=0x02;

write_dizhi(0x10,dizhi,5);//发送地址love02

write_peizhi(0x11,0x03);//接收数据宽度3

CE_H;

}

/************************************************************************/

/*中断*/

/************************************************************************/

voidchushihua_int0()

{

MCUCR|=BIT(ISC01);

GICR|=BIT(INT0);

DDRD&=~BIT

(2);

PORTD|=BIT

(2);

sei();

}

ISR(INT0_vect)

{

ucharzhuangtai,i,j;

zhuangtai=read_peizhi(0x07);

write_string_usart("状态");

for(i=0;i<8;i++)

{

if(zhuangtai&BIT(7-i))

{

write_char_usart('1');

}

else

{

write_char_usart('0');

}

}

if(zhuangtai&BIT(6))

{

read_shuju(3);

for(j=0;j<3;j++)

{

write_string_usart("|数据");

write_char_usart(j+'0');

write_char_usart('');

for(i=0;i<8;i++)

{

if(a[j]&BIT(7-i))

{

write_char_usart('1');

}

else

{

write_char_usart('0');

}

}

}

write_peizhi(0x07,BIT(6));

zhuangtai=read_peizhi(0x07);

write_string_usart("|状态");

for(i=0;i<8;i++)

{

if(zhuangtai&BIT(7-i))

{

write_char_usart('1');

}

else

{

write_char_usart('0');

}

}

}

write_char_usart(0x0d);

write_char_usart(0x0a);

}

/************************************************************************/

/*主函数*/

/************************************************************************/

intmain()

{

chushihua_usart();

chushihua_nrf2401();

chushihua_int0();

while

(1)

{

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1