📄 usart1_m128.c
字号:
#include <string.h>
#include "Usart1_M128.h"
unsigned char RX_data[RX_SIZE]={0}; //串口接收缓冲区
unsigned char RX_data2[RX_SIZE]={0}; //串口接收缓冲区
volatile unsigned int iNum; //串口接收字符计数
unsigned char flg_Received=0; //已接收一个卡号
void UART1_Init(void)
{
UCSR1B = (1<<RXCIE1)| (1<<RXEN1) |(1<<TXEN1); //允许串口发送和接收,并响应接收完成中断
UBRR1L = BAUD; //波特率为9600(7.3728MHz晶振)
UBRR1H = 0;
UCSR1C = (1<<UCSZ11)|(1<<UCSZ10); //8位数据+1位stop位, 异步模式
}
#pragma interrupt_handler UART1_Receive: iv_USART1_RX
void UART1_Receive(void)
{
unsigned char cRec;
cRec= UDR1;
RX_data[iNum++]=cRec;
//每接收RX_SIZE=6个字符显示一次
if (iNum==RX_SIZE)
{
memcpy(RX_data2,RX_data,RX_SIZE);
flg_Received=1;
iNum=0;
}
RX_data[0]=cRec;
flg_Received=1;
}
void UART1_PutChar(unsigned char c) //字符输出函数
{
while (!(UCSR1A&(1 << UDRE1))); //判断上次发送有没有完成
UDR1 = c;
}
void UART1_Puts(unsigned char *s)
{
while (*s)
{
UART1_PutChar(*s++);
}
}
//串口输出字节
void UART1_PutBytes(unsigned char *s, unsigned char ilen)
{
unsigned char i;
for(i=0;i<ilen;i++)
{
UART1_PutChar(*s++);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -