📄 uart.lis
字号:
.module Uart.c
.area text(rom, con, rel)
0000 .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\Uart.c
0000 .dbfunc e uart0_RX_Enable _uart0_RX_Enable fV
.even
0000 _uart0_RX_Enable::
0000 .dbline -1
0000 .dbline 7
0000 ;
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ; #include "Uart.h"
0000 ;
0000 ; void uart0_RX_Enable(void)
0000 ; {
0000 .dbline 8
0000 ; UCSRB = 0xE8; //disable while setting baud rate
0000 88EE ldi R24,232
0002 8AB9 out 0xa,R24
0004 .dbline -2
0004 L1:
0004 .dbline 0 ; func end
0004 0895 ret
0006 .dbend
0006 .dbfunc e uart0_RX_Disable _uart0_RX_Disable fV
.even
0006 _uart0_RX_Disable::
0006 .dbline -1
0006 .dbline 11
0006 ; }
0006 ; void uart0_RX_Disable(void)
0006 ; {
0006 .dbline 12
0006 ; UCSRB = 0xF8; //disable while setting baud rate
0006 88EF ldi R24,248
0008 8AB9 out 0xa,R24
000A .dbline -2
000A L2:
000A .dbline 0 ; func end
000A 0895 ret
000C .dbend
000C .dbfunc e uart0_init _uart0_init fV
.even
000C _uart0_init::
000C .dbline -1
000C .dbline 16
000C ; }
000C ;
000C ; void uart0_init(void)
000C ; {
000C .dbline 17
000C ; UCSRB = 0x00; //disable while setting baud rate
000C 2224 clr R2
000E 2AB8 out 0xa,R2
0010 .dbline 18
0010 ; UCSRA = 0x00;
0010 2BB8 out 0xb,R2
0012 .dbline 19
0012 ; UCSRC = 0x86;
0012 86E8 ldi R24,134
0014 80BD out 0x20,R24
0016 .dbline 20
0016 ; UBRRL = 0x0B; //set baud rate lo
0016 8BE0 ldi R24,11
0018 89B9 out 0x9,R24
001A .dbline 21
001A ; UBRRH = 0x00; //set baud rate hi
001A 20BC out 0x20,R2
001C .dbline 22
001C ; UCSRB = 0xF8;
001C 88EF ldi R24,248
001E 8AB9 out 0xa,R24
0020 .dbline -2
0020 L3:
0020 .dbline 0 ; func end
0020 0895 ret
0022 .dbend
.area vector(rom, abs)
.org 22
0016 11C0 rjmp _uart0_rx_isr
.area text(rom, con, rel)
0022 .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\Uart.c
0022 .dbfunc e uart0_rx_isr _uart0_rx_isr fV
0022 ; tempdata -> R20
.even
0022 _uart0_rx_isr::
0022 00D0 rcall push_lset
0024 00D0 rcall push_gset1
0026 .dbline -1
0026 .dbline 26
0026 .dbline 27
0026 4CB1 in R20,0xc
0028 .dbline 28
0028 042F mov R16,R20
002A 8FD0 rcall _PutChar
002C .dbline 31
002C 00E0 ldi R16,<L5
002E 10E0 ldi R17,>L5
0030 0FD0 rcall _PutStr
0032 .dbline 32
0032 00E0 ldi R16,<L6
0034 10E0 ldi R17,>L6
0036 0CD0 rcall _PutStr
0038 .dbline 34
0038 4934 cpi R20,73
003A 29F4 brne L7
003C .dbline 35
003C .dbline 35
003C F894 cli
003E .dbline 36
003E 2224 clr R2
0040 2AB8 out 0xa,R2
0042 .dbline 37
0042 0C94000E JMP 0x1C00
0046 .dbline 38
0046 L7:
0046 .dbline -2
0046 L4:
0046 00D0 rcall pop_gset1
0048 00D0 rcall pop_lset
004A .dbline 0 ; func end
004A 1895 reti
004C .dbsym r tempdata 20 c
004C .dbend
.area vector(rom, abs)
.org 24
0018 26C0 rjmp _uart0_udre_isr
.area text(rom, con, rel)
004C .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\Uart.c
004C .dbfunc e uart0_udre_isr _uart0_udre_isr fV
.even
004C _uart0_udre_isr::
004C .dbline -1
004C .dbline 43
004C ; }
004C ; #pragma interrupt_handler uart0_rx_isr:12
004C ; void uart0_rx_isr(void)
004C ; { unsigned char tempdata;
004C ; tempdata = UDR; /* read the received data */
004C ; PutChar( tempdata);
004C ; // PutChar(0x0a);
004C ; // PutChar(0x0d);
004C ; PutStr("富友勤 ATMEGA8 DEMO");
004C ; PutStr("Start IAP");
004C ;
004C ; if(tempdata=='I')
004C ; { CLI();
004C ; UCSRB = 0x00;
004C ; asm("JMP 0x1C00") ;
004C ; }
004C ; }
004C ;
004C ; #pragma interrupt_handler uart0_udre_isr:13
004C ; void uart0_udre_isr(void)
004C ; {
004C .dbline -2
004C L9:
004C .dbline 0 ; func end
004C 1895 reti
004E .dbend
.area vector(rom, abs)
.org 26
001A 27C0 rjmp _uart0_tx_isr
.area text(rom, con, rel)
004E .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\Uart.c
004E .dbfunc e uart0_tx_isr _uart0_tx_isr fV
.even
004E _uart0_tx_isr::
004E .dbline -1
004E .dbline 50
004E ; //character transferred to shift register so UDR is now empty
004E ;
004E ; }
004E ;
004E ; #pragma interrupt_handler uart0_tx_isr:14
004E ; void uart0_tx_isr(void)
004E ; {
004E .dbline -2
004E L10:
004E .dbline 0 ; func end
004E 1895 reti
0050 .dbend
0050 .dbfunc e PutStr _PutStr fI
0050 ; s -> R16,R17
.even
0050 _PutStr::
0050 .dbline -1
0050 .dbline 55
0050 ; }
0050 ;
0050 ;
0050 ; int PutStr(char *s)
0050 ; {
0050 07C0 rjmp L13
0052 X0:
0052 .dbline 57
0052 ; while(*s)
0052 ; {while ( !(UCSRA & (1<<UDRE)) )
0052 L15:
0052 .dbline 58
0052 L16:
0052 .dbline 57
0052 5D9B sbis 0xb,5
0054 FECF rjmp L15
0056 .dbline 59
0056 F801 movw R30,R16
0058 2080 ldd R2,z+0
005A 2CB8 out 0xc,R2
005C .dbline 61
005C 0F5F subi R16,255 ; offset = 1
005E 1F4F sbci R17,255
0060 .dbline 62
0060 L13:
0060 .dbline 56
0060 F801 movw R30,R16
0062 2080 ldd R2,z+0
0064 2220 tst R2
0066 A9F7 brne L16
0068 L18:
0068 .dbline 66
0068 L19:
0068 .dbline 65
0068 ; ; /* wait for empty transmit buffer */
0068 ; UDR = *s; /* start transmittion */
0068 ;
0068 ; s++;
0068 ; }
0068 ;
0068 ;
0068 ; while ( !(UCSRA & (1<<UDRE)) )
0068 5D9B sbis 0xb,5
006A FECF rjmp L18
006C .dbline 67
006C ; ; /* wait for empty transmit buffer */
006C ; UDR = 0x0a; /* start transmittion */
006C 8AE0 ldi R24,10
006E 8CB9 out 0xc,R24
0070 .dbline 69
0070 ; //while ( !(UCSRA & (1<<UDRE)) )
0070 ; ; /* wait for empty transmit buffer */
0070 .dbline 71
0070 ; //UDR = 0x0d; /* start transmittion */
0070 ; return 1;
0070 01E0 ldi R16,1
0072 10E0 ldi R17,0
0074 .dbline -2
0074 L11:
0074 .dbline 0 ; func end
0074 0895 ret
0076 .dbsym r s 16 pc
0076 .dbend
0076 .dbfunc e PutInt _PutInt fV
0076 ; tempdata1 -> R20
0076 ; tempdata5 -> R10
0076 ; tempdata4 -> y+3
0076 ; tempdata3 -> y+2
0076 ; tempdata2 -> y+1
0076 ; firstzero -> y+0
0076 ; tempdata -> R12
0076 ; i -> R14
0076 ; intdata -> y+14
.even
0076 _PutInt::
0076 1A93 st -y,r17
0078 0A93 st -y,r16
007A 00D0 rcall push_gset5
007C 2497 sbiw R28,4
007E .dbline -1
007E .dbline 74
007E ; }
007E ; void PutInt(unsigned int intdata)
007E ; {
007E .dbline 76
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -