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

📄 lesson10._c

📁 It is a common usart pogrameer
💻 _C
字号:
#include <iom128v.h>
#include <macros.h>
#define  uchar unsigned char
#define  uint  unsigned int

#define  mclk   7372800
#pragma interrupt_handler uart_rx:31
uchar rdata,flag=0;
void delay(uint ms)
{
        uint i,j;
	for(i=0;i<ms;i++)
	   {
	   for(j=0;j<562;j++);
       }
}
void init_port();
void init_port()
{
DDRB=DDRB|BIT(7);
	 PORTB=PORTB|BIT(7);
    
}
void uart_init(uint baud)
{
    UCSR1B=0x00; 
   UCSR1A=0x00; 		    //控制寄存器清零
   UCSR1C=(0<<UPM10)|(3<<UCSZ10);   
                                                        //选择UCSRC,异步模式,禁止                        
                                                     //   校验,1位停止位,8位数据位
   baud=mclk/16/baud-1	;   //波特率最大为65K
   UBRR1L=baud; 					     	  
   UBRR1H=baud>>8; 		   //设置波特率
   UCSR1B=(1<<TXEN1)|(1<<RXEN1)|(1<<RXCIE1); 
                                                       //接收、发送使能,接收中断使能
   SREG=BIT(7);	                //全局中断开放
   DDRD|=0X08;	                //配置TX为输出(很重要)

}
void uart_sendB(uchar data)
{
   while(!(UCSR1A&(BIT(UDRE1)))) ;
   UDR1=data;
   while(!(UCSR1A&(BIT(TXC1))));
   UCSR1A|=BIT(TXC1);
}
void uart_rx()
{
    UCSR1B&=~BIT(RXCIE1);
	rdata=UDR1;
	flag=1;
	UCSR1B|=BIT(RXCIE1);
}
void main()
{

	// unsigned int i=3; 
	// unsigned char j='a';
	 init_port();
	// uart_init(19200);
	 delay(1);
	while(1)
	{
	   if(flag==1)
	   {     
	        uart_sendB(rdata);
	      while(1)
		  {
	  	      PORTB=PORTB&(~BIT(7));
			  delay(1);
			 PORTB=PORTB|BIT(7);
			 delay(1);
			 flag=0;
	      }
		 flag=0;
		  
	   }
	}
	
}

⌨️ 快捷键说明

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