📄 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 + -