📄 main.c
字号:
/*
AVR Software-Uart Demo-Application
Version 0.3, 4/2007
by Martin Thomas, Kaiserslautern, Germany
<eversmith@heizung-thomas.de>
http://www.siwawi.arubi.uni-kl.de/avr_projects
*/
/*
Test environment/settings:
- avr-gcc 4.1.1/avr-libc 1.4.5 (WinAVR 1/2007)
- Atmel ATtiny85 @ 1MHz internal R/C
- 2400bps
AVR Memory Usage (-Os)
----------------
Device: attiny85
Program: 874 bytes (10.7% Full)
(.text + .data + .bootloader)
Data: 52 bytes (10.2% Full)
(.data + .bss + .noinit)
*/
// #define WITH_STDIO_DEMO
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <avr/wdt.h>
#include "softuart.h"
#include "gpio.h"
#ifdef WITH_STDIO_DEMO
#include <stdio.h>
// interface between avr-libc stdio and the modified Fleury uart-lib:
static int my_stdio_putchar( char c, FILE *stream )
{
if ( c == '\n' ) {
softuart_putchar( '\r' );
}
softuart_putchar( c );
return 0;
}
FILE suart_stream = FDEV_SETUP_STREAM( my_stdio_putchar, NULL, _FDEV_SETUP_WRITE );
static void stdio_demo_func( void )
{
stdout = &suart_stream;
printf( "This output done with printf\n" );
printf_P( PSTR("This output done with printf_P\n") );
}
#endif /* WITH_STDIO_DEMO */
unsigned char data_buf[8]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};
//------------------------------------------------------------------------------
void delay_ms(unsigned int n)
{
unsigned int zaehler;
while (n)
{
wdt_reset(); //喂狗
zaehler = F_CPU / 5000;
while (zaehler)
{
asm volatile ("nop");
zaehler--;
}
n--;
}
}
//------------------------------------------------------------------------------
int main(void)
{
char c,i;
static const char pstring[] PROGMEM =
"adapted for Atmel AVR and this demo by Martin Thomas\r\n";
unsigned short cnt = 0;
#if (F_CPU > 4000000UL)
#define CNTHALLO (unsigned int)(0xFFFF)
#else
#define CNTHALLO (unsigned int)(0xFFFF/3)
#endif
gpio_init();
softuart_init();
wdt_enable(WDTO_1S); //看门狗使能1S(范围:15MS 30MS 60MS 120MS 250MS 500MS 1S 2S)
softuart_turn_rx_on(); /* redundant - on by default */
sei();
softuart_puts_P( "\r\nSoftuart Demo-Application\r\n" ); // "implicit" PSTR
softuart_puts_p( PSTR("generic softuart driver code by Colin Gittins\r\n") ); // explicit PSTR
softuart_puts_p( pstring ); // pstring defined with PROGMEM
softuart_puts( "--\r\n" ); // string "from RAM"
#ifdef WITH_STDIO_DEMO
stdio_demo_func();
#endif
while(1)
{
if( softuart_kbhit())
{
for(i=0;i<8;i++) //接收来自串口调试助手的8个字节
{
data_buf[i]=softuart_getchar();
wdt_reset(); //喂狗
}
//c = softuart_getchar();
//softuart_putchar( '[' );
//softuart_putchar( c );
//softuart_putchar( ']' );
}
cnt++;
if (cnt == CNTHALLO)
{
cnt = 0;
wdt_reset(); //喂狗
//softuart_puts_P( " Hello " );
softuart_puts(data_buf); //回发数据,通过调试助手可观察到
gpio_toggle_led(LED1); //发光管取反
delay_ms(500);
}
}
return 0; /* never reached */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -