亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? main.c

?? 本程序是NRF950的程序,主要包括發(fā)送和接受程序,希望能對大家有幫助
?? C
字號:
//------------------------
#include <avr/io.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#include <compat/twi.h>
#include <avr/delay.h>
#include <avr/pgmspace.h>   
#include <avr/eeprom.h>
//------------------------
//宏定義
#define fosc 7372800 //晶振7.3728MHZ
#define baud 9600	 //波特率

//nrf905
#define CONTROL_PORT PORTD
#define CONTROL_DDR DDRD
#define CONTROL_PIN PIND
#define TRX_CE    PD6              //使能芯片發(fā)射或接收
#define TXEN      PD5              //1 TX模式,0 RX模式
#define PWR_UP    PD7              //芯片上電
//#define AM        PD1  //INT1    //地址匹配
//#define CD	      PD2  //INT2  //載波檢測
#define DR	      PD2  //INT0      //接收或發(fā)射數(shù)據(jù)完成
#define CSN		  PD4              //SPI使能

unsigned char tx_data_buf[32]; //發(fā)送緩沖區(qū)
unsigned char rx_data_buf[32]; //接收緩沖區(qū)
unsigned char xxx[10];  //配置RF寄存器的數(shù)據(jù)緩沖區(qū)

//地址寄存器
const unsigned char tx_address_reg_buf[4]={
		0xa5,			//TX_ADDRESS_BYTE0=RX_ADDRESS_BYTE0
		0xb5,			//TX_ADDRESS_BYTE1=RX_ADDRESS_BYTE1
		0xc5,			//TX_ADDRESS_BYTE2=RX_ADDRESS_BYTE2
		0xd5,			//TX_ADDRESS_BYTE3=RX_ADDRESS_BYTE3
			         	  };


//配置寄存器為10個字節(jié)
//芯片上電后初始化值為6C 00 44 20 20 E7 E7 E7 E7 E7
//DATASHEET P20
const unsigned char config_reg_buf[10]={
		0x4c,//0b01001100,	//CH_NO[7:0]=76,RFfreq=422.4+76/10=430MHZ
		0x00,//0b00000000,	//bit[7:6]:notused /bit5:AUTO_RETRAN=’0’
                                  //bit4:RX_RED_PWR=’0’/bit[3:2]:PA_PWR=’00’-10dBm
                                  //bit1:HFREQ_PLL=0, PLL=433MHZ /bit0:CH_NO[8]=’0’
		0x44,//0b01000100,	//bit7:not used/bit[6:4]:TX_AFW=’100’4Bytes
					//bit3:not used/bit[2:0]:RX_AFW=’100’4Bytes  
		0x20,//0b00100000, 	//bit[7:6]:not use  /bit[5:0]:RX_PW=’100000'32Bytes
		0x20,//0b00100000,	//bit[7:6]not use  /bit[5:0]TX_PW=’100000’32Bytes
		0xa5,			//RX_ADDRESS_BYTE0=TX_ADDRESS_BYTE0
		0xb5,			//RX_ADDRESS_BYTE1=TX_ADDRESS_BYTE1
		0xc5,			//RX_ADDRESS_BYTE2=TX_ADDRESS_BYTE2
		0xd5,			//RX_ADDRESS_BYTE3=TX_ADDRESS_BYTE3
		0xce //0b11001110    //bit7:CRC_MODE=’1’CRC16  /bit6:CRC_EN=’1’  CRC  Enable
					 //bit[5:3]:XOF=’011’8MHZ  /bit[2]UP_CLK_EN=’1’  Enable
					 //bit[1:0]:UP_CLK_FRE=’11’  500KHZ
	};




volatile unsigned char re_ok=0;

void delay_1us(void);
void delay_nus(unsigned int n);
void delay_1ms(void);
void delay_nms(unsigned int n);

//------------------------

void port_init(void)
{
    //所有端口設(shè)為輸入,所有端口的上拉電阻有效
	//所有端口輸出為高電平
    // PortB
	PORTB = 0xff; 
	DDRB = 0x00;  
	// PortC
	PORTC = 0xff;
	DDRC = 0x00;
	// PortD
	PORTD = 0xff;
	DDRD = 0x00;   
}

/*---------------UART0初始化----------------*/
void uart_init(void)
{
 UCSRB = 0x00; //disable while setting baud rate
 UCSRA = 0x00;
 UCSRC = (1<<URSEL )| 0x06;  //URSEL=1時才能寫UCSRC,8位
 UBRRL=(fosc/16/(baud+1))%256;
 UBRRH=(fosc/16/(baud+1))/256;
 UCSRB = 0x18;  //允許接收,允許發(fā)送。
 //UCSRB = 0x98;  //允許串口接收中斷,允許接收,允許發(fā)送。
 
}


void SPI_MasterInit(void)
{
/* 設(shè)置MOSI 和SCK SS為輸出,其他為輸入 */
DDRB |= (1<<PB5)|(1<<PB3)|(1<<PB2);
/* 使能SPI 主機(jī)模式,設(shè)置時鐘速率為fck/16 */
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
}


void SPI_transmit(char cData)
{
/* 啟動數(shù)據(jù)傳輸 */
SPDR = cData;
/* 等待傳輸結(jié)束 */
while(!(SPSR & (1<<SPIF)))
;
}

unsigned char SPI_receive(void)
{
/* 啟動數(shù)據(jù)傳輸 */
SPDR = 0x00;
/* 等待傳輸結(jié)束 */
while(!(SPSR & (1<<SPIF)))
;
return SPDR;
}


//串口接收完成中斷程序
SIGNAL(SIG_UART_RECV)   
{
 
}

//===============================================
//串口函數(shù)	
//===============================================
/*---------------字符輸出函數(shù)---------------*/
void put1char(unsigned char c)
	{
     while (!(UCSRA&(1<<UDRE)));
	 UDR=c;
	}
/*---------------字符輸入函數(shù)---------------*/
unsigned char get1char(void)
  	{
	 while (!(UCSRA&(1<<RXC)));
     return UDR;
	}
/*---------------字符串輸出函數(shù)-------------*/
int puts(char *s)
	{
	while (*s)
		{
		put1char(*s);
		s++;
		}
    put1char(0x0a);//回車換行
	put1char(0x0d);
	return 1;
	}
/*---------不含回車換行的字符串輸出函數(shù)----*/
void putstr(char *s)
	{
	while (*s)
		{
		put1char(*s);
		s++;
		}
	}
//===============================================
//延時函數(shù)	
//===============================================
//1us延時函數(shù)
void delay_1us(void)
{
	asm( "nop" );  //4m時為1us,8m時為0.125us,16m時為0.25us.
	asm( "nop" );
	asm( "nop" );
	asm( "nop" );
	asm( "nop" );  //4m時為1us,8m時為0.125us,16m時為0.25us.
	asm( "nop" );
	asm( "nop" );
	asm( "nop" );
}

//n us 延時函數(shù)
void delay_nus(unsigned int n)
{
	unsigned int i;
	for(i=0;i<n;i++)delay_1us();
}

//1ms延時函數(shù)
void delay_1ms(void)
{
	unsigned int i;
	for(i=0;i<600;i++) delay_1us();
}

//n ms延時函數(shù)
void delay_nms(unsigned int n)
{
	unsigned int i;
	for(i=0;i<n;i++)delay_1ms();
}


//======================================================
//以下是有關(guān)NRF905的函數(shù)
//======================================================
//寫TX地址4個字節(jié)
void write_tx_address(unsigned char tx_address_bytes_num)
{
	unsigned char i;
	CONTROL_PORT &= ~(1<<CSN);
	SPI_transmit(0x22);//0b00100010 
	i=0;
	while(tx_address_bytes_num--)
	{
		SPI_transmit(tx_address_reg_buf[i]);
		i++;
	}
	CONTROL_PORT |= (1<<CSN);
}

//寫TX有效數(shù)據(jù)32個字節(jié)
void write_tx_payload(unsigned char tx_payload_bytes_num)
{
	unsigned char i=0;
	CONTROL_PORT &= ~(1<<CSN);
	SPI_transmit(0x20);//0b00100000
	while(tx_payload_bytes_num--)
	{
		SPI_transmit(tx_data_buf[i]);  
		i++;
	}
	//SPI_transmit(tx_data_buf[1]);
	//SPI_transmit(tx_data_buf[2]);
	CONTROL_PORT |= (1<<CSN);
}


void read_rx_payload(unsigned char rx_payload_bytes_num)
{
	unsigned char i;
	//CSN=0;
	CONTROL_PORT &= ~(1<<CSN);
	SPI_transmit(0x24);//0b00100100
	i=0;
	while(rx_payload_bytes_num--)
	{
		rx_data_buf[i]=SPI_receive();
		i++;
	}
	
	//CSN=1;
	CONTROL_PORT |= (1<<CSN);
}



void send_rx_data_to_pc(void)
{
	unsigned char i;
	i=0;
	for(i=0;i<32;i++)	//send ASCII char'Comait CRM401XNC'use UART
	{
		put1char(rx_data_buf[i]);
	}
}


//發(fā)送RF數(shù)據(jù)
void send_rf_data(void)
{
	unsigned char i;
	write_tx_address(4);
	write_tx_payload(32);
	CONTROL_PORT |= (1<<TRX_CE);
	i=100;
	while(i--);  //等待NRF905數(shù)據(jù)傳輸完成
	CONTROL_PORT &= ~(1<<TRX_CE);
}



//發(fā)送模式
void transmit_mode(void)
{
 //nrf905進(jìn)入發(fā)送模式
 CONTROL_PORT |= (1<<PWR_UP); 
 CONTROL_PORT |= (1<<TRX_CE);
 CONTROL_PORT |= (1<<TXEN);
 delay_nms(2);  
}


//接收模式
void receive_mode(void)
{
//nrf905進(jìn)入接收模式
 CONTROL_PORT |= (1<<PWR_UP); 
 CONTROL_PORT |= (1<<TRX_CE);
 CONTROL_PORT &= ~(1<<TXEN);  
 delay_nms(2); 	
}

void read_config(void)
{         
         unsigned char i ;
		 
		 CONTROL_PORT &= ~(1<<CSN);
         SPI_transmit(0x10); //0b00010000
         i =0;
         for(i=0;i<10;i++)
          {
		   xxx[i]=SPI_receive();
          }
		 CONTROL_PORT |= (1<<CSN);
}

void write_config(void)
{
         unsigned char i ;
		 CONTROL_PORT &= ~(1<<CSN);
         SPI_transmit(0x00);  //發(fā)送寫配置寄存器的命令
         i =0;
         for(i=0;i<10;i++)
         {
		  SPI_transmit(config_reg_buf[i]);
         }
		 CONTROL_PORT |= (1<<CSN);
}

//nrf905初始化
void nrf905_init(void)
{
	unsigned char i;
	delay_nms(10);
	//STANDBY和SPI編程模式
	CONTROL_PORT |= (1<<PWR_UP);  
	CONTROL_PORT &= ~(1<<TRX_CE);
	CONTROL_PORT &= ~(1<<TXEN);
	CONTROL_PORT |= (1<<CSN);
	
	i=0;

	for(i=0;i<32;i++)	//Clear the data buffer 清接收緩沖區(qū)
	{	
		rx_data_buf[i]=0;
		tx_data_buf[i]=0;
	}
	write_config();
	
}

//外部中斷0中斷服務(wù)函數(shù)
SIGNAL(SIG_INTERRUPT0)
{
  read_rx_payload(32);  //保存在rx_data_buf里
  re_ok=1;
}

//====================================================================
//主程序開始
//====================================================================
int main(void)
{
 //------------------------
 cli();
 port_init();
 uart_init();
 SPI_MasterInit();
 sei();
 
 DDRD |= (1<<PD3);   //LED
 
 CONTROL_DDR |= (1<<TRX_CE);
 CONTROL_DDR |= (1<<TXEN);
 CONTROL_DDR |= (1<<PWR_UP);
 CONTROL_DDR |= (1<<CSN);
 
 //standby 模式
 CONTROL_PORT |= (1<<PWR_UP); 
 CONTROL_PORT &= ~(1<<TRX_CE);
 
 nrf905_init();
 
 receive_mode();  //接收模式
 
 delay_nms(5);
 
 //外部中斷0上升沿中斷
 MCUCR |= (1<<ISC01)|(1<<ISC00);
 GICR |= (1<<INT0);  
 
 tx_data_buf[0]=0x18;
 tx_data_buf[1]=0xea;
 tx_data_buf[2]=0x23;
 tx_data_buf[3]=0xe2;
 tx_data_buf[4]=0xf5;
 
 while(1)
   {
    if(get1char()==0x26)
	{
	 transmit_mode();  //發(fā)射模式
	 send_rf_data();		//發(fā)送數(shù)據(jù)包
	 receive_mode();   //接收模式
	 
	 PORTD ^= (1<<PD3);   //LED
	}
   
   if(re_ok==1)
    {
     re_ok=0;
	 send_rx_data_to_pc();
    }
	
	
	
   }  //while
   
} //main
//====================================================================
//主程序結(jié)束
//====================================================================

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩美女天天操| 麻豆91在线播放免费| 国产精品一区三区| 日韩欧美在线观看一区二区三区| 亚洲国产一区二区在线播放| 一本大道久久a久久综合| 日韩毛片一二三区| 丁香婷婷综合五月| 国产精品视频你懂的| www.欧美亚洲| 国产精品福利一区二区三区| a级精品国产片在线观看| 日本美女一区二区三区视频| 日韩欧美高清一区| 欧美日韩亚洲丝袜制服| 青青草国产精品亚洲专区无| 精品福利一二区| 国产成人在线视频免费播放| 国产日韩欧美在线一区| 成人免费高清视频| 亚洲与欧洲av电影| 日韩精品在线看片z| 色香色香欲天天天影视综合网| 国产一区二三区| 亚洲免费成人av| 欧美一卡二卡在线| 国产激情视频一区二区在线观看 | 亚洲免费伊人电影| 国产日韩亚洲欧美综合| 精品久久国产97色综合| 91丨porny丨国产入口| 性感美女极品91精品| 欧美va亚洲va香蕉在线| 91精品欧美一区二区三区综合在 | 欧美日韩精品福利| 国产一区不卡视频| 精东粉嫩av免费一区二区三区| 中文无字幕一区二区三区| 色乱码一区二区三区88| 男男视频亚洲欧美| 奇米亚洲午夜久久精品| 麻豆视频观看网址久久| 色婷婷久久一区二区三区麻豆| 精品亚洲成a人| 国产综合一区二区| 亚洲国产成人av| 午夜精品久久久久久久久久| 国产欧美综合在线观看第十页| 久久色视频免费观看| 欧美日韩性生活| 欧美久久一二区| 91蝌蚪porny| 日本高清无吗v一区| 在线免费观看成人短视频| 国产精品羞羞答答xxdd| 国产精品性做久久久久久| 成人小视频免费观看| 91小视频免费看| 欧美人狂配大交3d怪物一区| 8v天堂国产在线一区二区| 日韩女优制服丝袜电影| 久久色在线观看| 亚洲人成在线播放网站岛国| 亚洲国产精品久久久久婷婷884| 午夜欧美大尺度福利影院在线看 | 国产高清不卡二三区| yourporn久久国产精品| 色婷婷av久久久久久久| 欧美高清dvd| 欧美精品一区二区久久婷婷| 亚洲国产精品99久久久久久久久| 亚洲青青青在线视频| 午夜久久久久久久久| 国内偷窥港台综合视频在线播放| 成人在线综合网| 欧美午夜精品免费| 欧美性极品少妇| 日韩精品一区二区三区中文不卡| 国产色一区二区| 国产欧美日产一区| 成人午夜在线视频| 制服丝袜av成人在线看| 国产日韩欧美精品一区| 亚洲自拍与偷拍| 国产乱子轮精品视频| 色老头久久综合| 欧美精品一区在线观看| 一区二区三区在线视频免费观看| 国产精品第四页| 日韩av网站免费在线| 成人18精品视频| 91丝袜美腿高跟国产极品老师 | 精品系列免费在线观看| 91极品视觉盛宴| 欧美精品一区二区在线播放| 亚洲精品成人精品456| 亚洲另类春色国产| 国内外精品视频| 欧美日韩国产片| 国产欧美一区二区精品性色| 午夜精品久久久久久久久| 成年人国产精品| 欧美一级免费大片| 一区二区欧美精品| 成人h动漫精品一区二区| 精品国产亚洲在线| 婷婷久久综合九色综合伊人色| 成人美女视频在线看| 日韩欧美一二三四区| 亚洲一二三区在线观看| 成人av在线资源网| 亚洲精品一区二区三区香蕉| 丝袜美腿亚洲综合| 国产一区二区免费看| 91精品免费观看| 亚洲成人www| 色播五月激情综合网| 欧美激情艳妇裸体舞| 紧缚捆绑精品一区二区| 666欧美在线视频| 一区二区三区鲁丝不卡| 94-欧美-setu| 91精品婷婷国产综合久久性色| 樱桃国产成人精品视频| 91在线视频播放地址| 国产精品久久网站| 成人久久视频在线观看| 久久久精品影视| 亚洲h在线观看| 欧美私模裸体表演在线观看| 一区二区三区四区蜜桃| 92精品国产成人观看免费| 中文乱码免费一区二区| 成人免费视频视频在线观看免费| 国产欧美一区二区三区在线老狼| 久久成人免费网| 欧美亚洲综合网| 亚洲电影在线免费观看| 精品视频在线免费| 午夜精品一区二区三区电影天堂| 91免费国产在线| 一个色妞综合视频在线观看| 91麻豆自制传媒国产之光| 亚洲欧美国产三级| 色狠狠av一区二区三区| 亚洲mv在线观看| 欧美一区二区免费视频| 国内欧美视频一区二区| 国产欧美日韩激情| 99re热视频这里只精品| 一区二区三区在线影院| 欧美日韩不卡视频| 卡一卡二国产精品| 国产日韩精品久久久| 成人h动漫精品| 亚洲免费在线视频一区 二区| 91福利小视频| 欧美影院一区二区三区| 亚洲综合999| 日韩一区二区三区三四区视频在线观看 | 日韩专区一卡二卡| 日韩欧美中文字幕制服| 国产麻豆精品在线| 中文字幕一区视频| 国产精品性做久久久久久| 国产精品国产a| 欧美日韩日日夜夜| 精品影视av免费| 亚洲欧美综合色| 欧美日韩成人综合天天影院 | 26uuu亚洲综合色欧美| 国产suv精品一区二区三区| 亚洲免费色视频| 日韩欧美你懂的| 成人黄色777网| 天堂在线亚洲视频| 欧美韩国一区二区| 欧美日韩中文另类| 国产精品亚洲视频| 亚洲va欧美va人人爽午夜| 2022国产精品视频| 在线观看日韩一区| 国产精品一级片在线观看| 一区二区久久久久久| 精品国产电影一区二区| 色一情一伦一子一伦一区| 紧缚奴在线一区二区三区| 亚洲乱码国产乱码精品精的特点| 在线不卡一区二区| 99久久婷婷国产| 激情综合色丁香一区二区| 亚洲欧美另类久久久精品2019| 日韩亚洲欧美综合| 日本电影欧美片| 国产成人福利片| 男男成人高潮片免费网站| 亚洲欧美一区二区三区极速播放| 日韩一级大片在线| 欧美性大战久久久久久久 | 91在线免费播放|