⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avr-usart.c

📁 avr usart/uart 通讯
💻 C
字号:


/*---------------------UART初始化:器件=mega88
帧结构的确定:
起始位1,数据位8,无奇偶校验,2位停止位
---数据位数8:
UCSZn2 UCSZn1 UCSZn0 字符长度
000                              5 位
001                               6 位
010			7 位
011			8 位
UCSZn2 位于UCSRnB寄存器,UCSZn1 0位于UCSRnC 
setbits2(UCSRnC,UCSZn1,UCSZn0);clrbit(UCSRnB,UCSZn2);
 ----停止位选择:
USBSn 停止位
0      1 位
1       2 位 
setbit(UCSRnC,USBSn);
 -----无奇偶校验:
UPMn1 UPMn0 校验模式
00 禁止 
clrbits2(UCSRnC,UPMn1,UPMn0);
 -----异步模式:
UMSELn1 UMSELn0 模式
0    0             异步操作 
clrbits2(UCSRnC,UMSELn1,UMSELn0);
 ----波特率 9600bps:
 
clrbit(UCSRnA,U2Xn);//不倍速
UBRRn=Fosc/(16*baud)-1;   // 倍速模式则为8 也可查表
-----------------------------------*/

void UartInit(void)
{

UCSRnC=0x0e;
clrbit(UCSRnB,UCSZn2);
clrbit(UCSRnA,U2Xn);
UBRRn=25;//Fosc1/(16*baud)-1;

out(DDRC,5);

out(DDRD,2);//en
out(DDRD,1);//TXD
in(DDRD,0);//RXD 
pullup(PORTD,0);// 
 

RXEN; 
RXIE; 
selectRX;
rxbytescount=0;
rxokflag=0;
}

 




//-------------------------interrupt handler,commu rx

#pragma vector=USART_RX_vect        
 __interrupt void rxisr(void) 
{	
//while(!getbit(UCSRnA,RXCn));//polling method


if(rxbytescount<TOTAL_BYTES_COUNT)
{
rxpackage[rxbytescount++]=UDRn;  //or out if
rxtimeoutfactor=1;
RXEN;
RXIE;

}
if(rxbytescount>=TOTAL_BYTES_COUNT) //shouldnot just else 
{
rxbytescount=0;rxokflag=1;
}
 
 

}



 
  



 
//-----------------------------------------------
void CommuTrans(unsigned char *ptr,unsigned char len){ 

unchar i;

TXEN;
selectTX;

 
for(i=0;i<len;i++)
{
while(!getbit(UCSRnA,UDREn));//wait for tx buffer being empty	
UDRn=*ptr;ptr++;//txpackage[i]; 
     
}//end for

while(!getbit(UCSR0A,TXCn)) ;//wait for tx over //needed?

 
delayms(10);
selectRX; 

}
  


//-------------------------------------process commu info
void ProcessCommuInfo(void)
{
  unsigned char i;
                      
switch(rxokflag)
{
case 0:  break;
case 1:
	{   
	
         
 //ADD TO DO HERE
	
	rxokflag=0;
	
	}break;//end case 1
  default:break;

}//end switch

}//end fun

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -