📄 usart.c
字号:
#include <avr/io.h>
#include <stdlib.h>
#include <stdio.h>
#include "usart.h"
//--------------------------------------------------------------------------------
// 流纺烹脚 檬扁拳, 厚悼扁 葛靛肺 汲沥
void Init_USART(void)
{
Set_BaudRate(38400);
UCSR0B = 0xD8;
}
//--------------------------------------------------------------------------------
// Baud Rate 汲沥
void Set_BaudRate(unsigned long baudrate)
{
unsigned long temp;
temp = (F_CPU/16/baudrate)-1;
UBRR0L=(unsigned char) temp;
}
//--------------------------------------------------------------------------------
// 傈价, ATmega128 -> PC
void TX_Data(unsigned char data)
{
while(!(UCSR0A & 0x20));
UDR0 = data;
}
//--------------------------------------------------------------------------------
// 荐脚, ATmega128 <- PC
unsigned char RX_Data(void)
{
while(!(UCSR0A & 0x80));
return UDR0;
}
//--------------------------------------------------------------------------------
// number箭磊父怒狼 胶飘傅 巩磊凯 免仿
void stringN(unsigned char *str, unsigned int number)
{
unsigned char i=0;
do {
switch(str[i])
{
case LF:
case CR:
TX_Data(LF);
TX_Data(CR);
break;
default:
TX_Data(str[i]);
}
i++;
} while(number--); // 巩磊凯 场俊 乐绰 NULL巩磊 0 捞 八祸登搁 呕免
}
//--------------------------------------------------------------------------------
// 窍捞欺磐固澄俊 胶飘傅 巩磊凯 免仿
void string(unsigned char *str)
{
unsigned char i=0;
do {
switch(str[i])
{
case LF:
case CR:
TX_Data(LF);
TX_Data(CR);
break;
default:
TX_Data(str[i]);
}
} while(str[i++]); // 巩磊凯 场俊 乐绰 NULL巩磊 0 捞 八祸登搁 呕免
}
//--------------------------------------------------------------------------------
// 16厚飘 箭磊甫 巩磊肺 免仿
void string_u16(unsigned int data, unsigned char radix)
{
unsigned char str[20];
unsigned char i=0;
utoa(data, str, radix);
while(str[i])
{
TX_Data(str[i]);
i++;
}
TX_Data('\r');
TX_Data('\n');
}
//--------------------------------------------------------------------------------
// 32厚飘 箭磊甫 巩磊肺 免仿
void string_u32(unsigned long data, unsigned char radix)
{
unsigned char str[10], i=0;
ultoa(data, str, radix);
while(str[i])
{
TX_Data(str[i]);
i++;
}
TX_Data('\r');
TX_Data('\n');
}
//--------------------------------------------------------------------------------
// 琼荤 单捞磐甫 酒胶虐 蔼栏肺 函券, ATmega128 -> PC 肺 傈价且 锭 荤侩
void hextoasc(unsigned char hex)
{
unsigned char temp;
temp=hex;
hex &= 0xf0;
hex >>= 4;
if (hex >= 10)
hex += 7;
hex += '0';
TX_Data(hex);
hex=temp;
hex &= 0x0f;
if (hex>= 10)
hex += 7;
hex += '0';
TX_Data(hex);
}
//--------------------------------------------------------------------------------
// N箭磊父怒狼 酒胶虐 巩磊凯肺 免仿, ATmega128 -> PC 肺 傈价且 锭 荤侩
void string_asc(unsigned char* Nstring, unsigned int N)
{
unsigned int i=0;
string(" 0 1 2 3 4 5 6 7 8 9 A B C D E F \n");
string(" -----------------------------------------------\n");
string(" ");
while(N--)
{
hextoasc(Nstring[i++]);
TX_Data(' ');
if (N % 16 == 0)
{
string("\n");
string(" ");
}
}
}
void string_hextoasc(unsigned char* Nstring)
{
unsigned char i=0;
do
{
hextoasc(Nstring[i]);
} while(Nstring[i++]); // 巩磊凯 场俊 乐绰 NULL巩磊 0 捞 八祸登搁 呕免
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -