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

📄 uart.i

📁 AVR系列被广泛应用的单片机MEGA8开发(原理图)及例程
💻 I
字号:
#line 1 "D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\Uart.c"

#line 1 "C:/icc/include/iom8v.h"




#line 7 "C:/icc/include/iom8v.h"


#line 10 "C:/icc/include/iom8v.h"


#line 13 "C:/icc/include/iom8v.h"


#line 16 "C:/icc/include/iom8v.h"






















































































































































































































































































































































































































































#line 3 "D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\Uart.c"
#line 1 "C:/icc/include/macros.h"






























#line 35 "C:/icc/include/macros.h"














void _StackCheck(void);
void _StackOverflowed(char);




#line 4 "D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\Uart.c"
#line 1 "D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare/Uart.h"
void uart0_RX_Enable(void);
void uart0_RX_Disable(void);
void uart0_init(void);
void uart0_rx_isr(void);
void uart0_udre_isr(void);
void uart0_tx_isr(void);
 int  PutStr(char *s);
void PutInt(unsigned int intdata);
void PutChar(unsigned char c);




#line 5 "D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\Uart.c"

void uart0_RX_Enable(void)
{
(*(volatile unsigned char *)0x2A) = 0xE8;
}
void uart0_RX_Disable(void)
{
(*(volatile unsigned char *)0x2A) = 0xF8;
}

void uart0_init(void)
{
(*(volatile unsigned char *)0x2A) = 0x00;
(*(volatile unsigned char *)0x2B) = 0x00;
(*(volatile unsigned char *)0x40) = 0x86;
(*(volatile unsigned char *)0x29) = 0x0B;
(*(volatile unsigned char *)0x40) = 0x00;
(*(volatile unsigned char *)0x2A) = 0xF8;
 }
#pragma interrupt_handler uart0_rx_isr:12
void uart0_rx_isr(void)
{ unsigned char tempdata;
   tempdata =(*(volatile unsigned char *)0x2C);
   PutChar( tempdata);


  PutStr("富友勤 ATMEGA8 DEMO");
 PutStr("Start IAP");

   if(tempdata=='I')
   	{asm("cli");
(*(volatile unsigned char *)0x2A) = 0x00;
          asm("JMP 0x1C00") ;
   	}
	}

#pragma interrupt_handler uart0_udre_isr:13
void uart0_udre_isr(void)
{


}

#pragma interrupt_handler uart0_tx_isr:14
void uart0_tx_isr(void)
{
}


int PutStr(char *s)
{
while(*s)
{while ( !((*(volatile unsigned char *)0x2B) & (1<< 5)) )
		;
(*(volatile unsigned char *)0x2C) = *s;

s++;
}


while ( !((*(volatile unsigned char *)0x2B) & (1<< 5)) )
		;
(*(volatile unsigned char *)0x2C) = 0x0a;

		;

return 1;
}
void PutInt(unsigned int intdata)
{
unsigned char  i,tempdata,tempdata1,tempdata2,tempdata3,tempdata4,tempdata5;
unsigned char  firstzero= 0;

for(i=0;i<5;i++)
  	  {
  		tempdata=intdata%10;
  		intdata=intdata/10;
  		switch(i)
  			{
  			case 0:
  			            tempdata1=tempdata;
  			             break;
  			  case 1:
  			      	     tempdata2=tempdata;
  			             break;
  			   case 2:
  	  			    tempdata3=tempdata;
  			             break;
  			   case 3:
  	  			     tempdata4=tempdata;
  			             break;
  			     case 4
  	  			      tempdata5=tempdata;
  			             break;
  			    default:
  			             break;

  			}

  	  }
if(tempdata5!=0)
{
PutChar(tempdata5+48);
firstzero= 1;
}
if((tempdata4!=0)||firstzero)
{
PutChar(tempdata4+48);

firstzero= 1;
}
if((tempdata3!=0)||firstzero)
{
PutChar(tempdata3+48);

firstzero= 1;

}
if((tempdata2!=0)||firstzero)
{
PutChar(tempdata2+48);

}

PutChar(tempdata1+48);
PutChar(0x0a);

}
void PutChar(unsigned char c)
{
while ( !((*(volatile unsigned char *)0x2B) & (1<< 5)) )
		;
(*(volatile unsigned char *)0x2C) = c;
}

⌨️ 快捷键说明

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