📄 usart.h
字号:
static volatile unsigned char stmp;//暂存接收UDR信息.
static volatile unsigned char inbuffer[10];//串口接收器缓冲器.
static volatile int inbufcount=0;//缓冲器计数器.
/*------宏定义------*/
#define uchar unsigned char
#define uint unsigned int
#define BIT(x) (1<<(x))
#define NOP() asm("nop")
#define WDR() asm("wdr")
extern void twi_write_8(uchar adress,uchar com);
extern void twi_read_8(uchar adress);
extern void init_mma7455(void);
//串口通信初始化
void usart_init(void)
{
UCSRB = 0x00;//禁止中断
UCSRA = 0x00;
UCSRC = BIT(URSEL) | 0x06;
UBRRL = 0x0C;
UBRRH = 0x00;
UCSRB = 0x98;
}
//发出串口正常信号.
void ssig(char a[])
{
int c=strlen(a);
//在这继续添加你的代码
for(int count=0;count<c;count++)
{
_delay_us(300);
UDR=a[count];
}
_delay_us(300);
}
//串行接收结束中断服务程序
ISR(USART_RXC_vect)
{
cli();//关中断.
stmp=UDR;//保护接收UDR数据.
if((stmp!='x')&&(stmp!='y')&&(stmp!='z')&&(stmp!='r'))//装缓冲区,以换行符为结束字节.
{
inbuffer[inbufcount++]=stmp;
return;
}
else //结束条件满足,执行操作.
{
if(stmp=='x')
{
twi_write_8(0x10,inbuffer[inbufcount-1]);
}
else if(stmp=='y')
{
twi_write_8(0x12,inbuffer[inbufcount-1]);
}
else if(stmp=='z')
{
twi_write_8(0x14,inbuffer[inbufcount-1]);
}
else if(stmp=='r')
{
init_mma7455();
}
}
inbufcount=0;//放在这来起来延时的作用.一举两得.
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -