📄 usart1.c
字号:
char *hex_char = "0123456789ABCDEF";
extern volatile uc rx1_char;
void put_char(uc c)
{
while (!(UCSR1A & (1<<UDRE1))); /* 等待发送缓冲器为空*/
UDR1 = c; /* 发送数据*/
}
/* 功能:UART发送双字节程序
* 输入:
* 输出:无
* 返回值:无
* 说明:无
*/
void put_Word(us c)
{
put_char(c);
put_char(c>>8);
}
/* 功能:UART发送字符串
* 输入:
* 输出:无
* 返回值:无
* 说明:无
*/
void put_str(uc *p)
{//发送字符串函数,发送数组
while(0!=*p)
{
put_char(*p);
p++;
}
}
/* 功能:串口初始化
* 输入:无
* 输出:无
* 返回值:无
* 说明:无
*/
void init_uart1 (void)
{
sbi(DDRD,3);
cbi(PORTD,3);
rx1_char = 0;
//在1Mhz的主频下,9600波特率设置
UBRR1H = 0;
UBRR1L = 12;
//倍速:是;多机模式:否
UCSR1A = 0x02;
//使能UART的TX,RX
//使能接收中断
//使能发送结束中断;禁止发送缓冲区空中断
UCSR1B = 0x98;
//模式设置:异步,8位数据,1位停止位,无校验
UCSR1C = 0x06;
// UBRR1H=0x00;
//UBRR1L=0x06;
}
void put_hex (uc ch) {
uc idx;
idx = (ch >> 4);
put_char (hex_char[idx]);
idx = (ch & 0x0f);
put_char (hex_char[idx]);
}
void put_str_hex(uc *p)
{//发送字符串函数,发送数组
while(0!=*p)
{
put_hex(*p);
p++;
}
}
void put_hex_2 (us n) {
uc *p;
p = (uc *)&n;
put_hex (p[1]);
put_hex (p[0]);
}
void put_hex_4 (ul n)
{
uc *p;
p = (uc *)&n;
put_hex (p[3]);
put_hex (p[2]);
put_hex (p[1]);
put_hex (p[0]);
}
void put_hex_6 (uc *p)
{
uc i;
for(i=0;i<6;i++)
{
put_hex(*p);
p++;
}
}
void put_hex4 (uc *p)
{
uc i;
for(i=0;i<4;i++)
{
put_hex(*p);
p++;
}
}
void putl_str (char *s)
{
while (0 != *s)
{
put_char (*s);
s++;
}
put_char ('\r');
put_char ('\n');
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -