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

📄 lesson10.c

📁 AVR单片机C语言编程及应用实例 适合初学者的学习研究 其中包含Atmega16中文资料及Protel部分电路图
💻 C
字号:
#include <iom16v.h>
#include <macros.h>
#define  uchar unsigned char
#define  uint  unsigned int

#define  mclk   8000000
#pragma interrupt_handler uart_rx:12
uchar rdata,flag=0;
void delay(uint ms)
{
        uint i,j;
	for(i=0;i<ms;i++)
	   {
	   for(j=0;j<1141;j++);
       }
}

void uart_init(uint baud)
{
    UCSRB=0x00; 
   UCSRA=0x00; 		    //控制寄存器清零
   UCSRC=(1<<URSEL)|(0<<UPM0)|(3<<UCSZ0);   
                                                        //选择UCSRC,异步模式,禁止                        
                                                     //   校验,1位停止位,8位数据位
   baud=mclk/16/baud-1	;   //波特率最大为65K
   UBRRL=baud; 					     	  
   UBRRH=baud>>8; 		   //设置波特率
   UCSRB=(1<<TXEN)|(1<<RXEN)|(1<<RXCIE); 
                                                       //接收、发送使能,接收中断使能
   SREG=BIT(7);	                //全局中断开放
   DDRD|=0X02;	                //配置TX为输出(很重要)

}
void uart_sendB(uchar data)
{
   while(!(UCSRA&(BIT(UDRE)))) ;
   UDR=data;
   while(!(UCSRA&(BIT(TXC))));
   UCSRA|=BIT(TXC);
}
void uart_rx()
{
    UCSRB&=~BIT(RXCIE);
	rdata=UDR;
	flag=1;
	UCSRB|=BIT(RXCIE);
}
void main()
{
    //uchar i=4;
	//uchar j='a';
    uart_init(19200);
	while(1)
	{
	   if(flag)
	   {
	      uart_sendB(rdata);
		  flag=0;
	   }
	}
	
}

⌨️ 快捷键说明

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