?? t.c
字號:
#include <io2313v.h>
#include <macros.h>
#define TX_EN PD6
#define CS PB1
#define PWR PB0
#define uchar unsigned char
#define uint unsigned int
uchar Data[5];
uchar sendcounter=0;
//初始化子程序
void initial(void)
{
DDRB=0X83; //端口設置:PB0,PB1,PB7為推挽1輸出,PB7用來監測數據發送
PORTB=0x83;
DDRD=0X40; //端口設置:PD6口設置為推挽1輸出
PORTD=0x40;
PORTD&=~(1<<TX_EN); //初始為接收狀態
PORTB|=(1<<PWR);
PORTB&=~(1<<CS); //選擇頻道1
UCR=UCR|0x18; //TX,RX使能
UBRR=25; //設置串行口波特率
PORTD|=(1<<TX_EN);
DelayMs(10); //變為發射狀態
}
//需發送的數據
void GetData(void)
{
Data[0]=0x55;
Data[1]=0x55;
Data[2]=0x55;
Data[3]=0x55;
Data[4]=0x55;
}
//毫秒級延時,參數t為延時時間
void DelayMs(uint t)
{
uchar j;
for(;t!=0;t--)
{
for(j=8000;j!=0;j--) {;}
}
}
//通過串口將數據由nrf401發送出去
void send_data(void)
{
trans_byte(0x55); //等待移位寄存器空
trans_byte(0x55);
DelayMs(2);
trans_byte(0xaa);
trans_byte(0xaa);
GetData();
sendcounter=0;
while(sendcounter<5)
{
trans_byte(Data[sendcounter]);
sendcounter++;
}
}
/********接收數據函數**********/
uchar trans_byte(uchar d)
{
PORTB|=(1<<PB7);
while(!(USR&0x20)) //等待移位寄存器空
UDR=d;
while(!(USR&0x40)) //判斷TXC是否發完
USR|=0x40; //關TXC
PORTB&=~(1<<PB7); //用示波器在PB7腿查看是否有發送數據
}
//主程序
void main(void)
{
initial();
while(1)
{
send_data();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -