📄 main.c
字号:
/*
Cy2198TR-B Program
by Chenxi
*/
#include <iom16v.h>
/*====================MACRO DEFINE============================================*/
/*define system as transmitter or receiver*/
/*
transmitter -- 1
receiver -- 0
*/
#define WIRELESS_TRANSIMIT_SEL 1
/*----------ports---------*/
#define W_EN 3
#define W_BUSY 2
#define W_RT 1
#define W_FS 0
#define W_RXD 0
#define W_TXD 1
#define WIRELESS_EN() PORTC &= (~(1 << W_EN))
#define WIRELESS_REC_EN() PORTC |= (1 << W_RT)
#define WIRELESS_SEND_EN() PORTC &= (~(1 << W_RT))
#define WIRELESS_IS_BUSY PINC & (1 << W_BUSY)
#define WIRELESS_FREQUENCY_SEL() PORTC |= (1 << W_FS)
/*============================================================================*/
/*=================FUNCTIONS DECLARATION======================================*/
void Port_Init(void);
void USART_Init(void);
void Wireless_Init(void);
void USART_Transmit(unsigned char ucbyte);
void Wireless_TransmitByte(unsigned char ucbyte);
void Delay_nms(unsigned int n);
unsigned char USART_Receive(void);
/*============================================================================*/
/*================== MAIN ====================================================*/
int main(void)
{
Wireless_Init();
while(1)
{
Wireless_TransmitByte(0x01);
Delay_nms(1000);
Wireless_TransmitByte(0x02);
Delay_nms(1000);
}
return 0;
}
/*============================================================================*/
/*===============FUNCTIONS HERE===============================================*/
/*--------------Initialize Ports--------------------*/
void Port_Init(void)
{
PORTB = 0x01;
DDRB = 0xFF;
DDRC |= (1 << W_EN) | (1 << W_RT) | (1 << W_FS);
DDRC |= ~(1 << W_BUSY);
PORTC = (1 << W_EN) | (1 << W_RT) | (1 << W_BUSY) | (1 << W_FS);
DDRD |= (1 << W_TXD);
DDRD &= ~(1 << W_RXD);
PORTD |= (1 << W_TXD) | (1 << W_RXD);
}
/*--------------UART0 initialize----------------*/
/*baudrate: 19200*/
void USART_Init(void)
{
UCSRB = 0x00;
UCSRA = 0x00;
UCSRC = (1 <<URSEL) | 0x06;
UBRRL= 25;
UBRRH= 0x00;
UCSRB = 0x98;
}
/*----------------initialize system-----------------*/
void Wireless_Init(void)
{
asm("cli");
Port_Init();
USART_Init();
#if WIRELESS_TRANSIMIT_SEL
WIRELESS_SEND_EN();
#else
WIRELESS_RECEIVE_EN();
#endif
WIRELESS_EN();
asm("sei");
}
/*--------------UART0 transmit a byte----------------*/
void USART_Transmit( unsigned char ucbyte )
{
while ( !( UCSRA & (1<<UDRE)));
UDR = ucbyte;
}
/*------------wireless transmit a byte-------------*/
void Wireless_TransmitByte(unsigned char ucbyte)
{
while(!(WIRELESS_IS_BUSY));
USART_Transmit(ucbyte);
USART_Transmit(0x0D);
USART_Transmit(0x0A);
}
/*--------------delaly function---------------------*/
void Delay_nms(unsigned int n) //N ms
{
unsigned int i = 0;
unsigned int j = 0;
for (i = 0 ; i < n ; i ++)
{
for (j = 0 ; j < 1140 ;j ++);
}
}
/*--------------USART receive a byte---------------------*/
unsigned char USART_Receive(void)
{
while(!(UCSRA&(1<<RXC)));
return UDR;
}
/*--------------wireless receive -------------------------*/
#pragma interrupt_handler uart0_rx_isr:12
void uart0_rx_isr(void)
{
//add receiver code here......
PORTB = UDR;
}
/*=============================================================================*/
/*END WIRELESS*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -