📄 uart.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 + -