📄 isp.lis
字号:
.module isp.c
.area text(rom, con, rel)
0000 .dbfile E:\icc\iccavr\mega8\mega8\music\isp.c
0000 .dbfunc e uart_init _uart_init fV
.even
0000 _uart_init::
0000 .dbline -1
0000 .dbline 15
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ; #include <eeprom.h>
0000 ; /* 位操作宏 */
0000 ; #define set_bit(x,y) (x|=(1<<y))
0000 ; #define clr_bit(x,y) (x&=~(1<<y))
0000 ; #define get_bit(x,y) (x&(1<<y))
0000 ; #define fosc 8000000
0000 ; #define baud 19200
0000 ; #define device 0x76
0000 ; #define osc_address 0x1ff0
0000 ; extern unsigned char read_flash(unsigned int add);
0000 ; /* UART初始化 */
0000 ; void uart_init(void)
0000 ; {
0000 .dbline 16
0000 ; OSCCAL=read_flash(osc_address);
0000 00EF ldi R16,8176
0002 1FE1 ldi R17,31
0004 00D0 rcall _read_flash
0006 01BF out 0x31,R16
0008 .dbline 17
0008 ; UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);//允许发送和接收
0008 88E9 ldi R24,152
000A 8AB9 out 0xa,R24
000C .dbline 18
000C ; UBRRL=(fosc/16/(baud+1))%256;
000C 8AE1 ldi R24,26
000E 89B9 out 0x9,R24
0010 .dbline 19
0010 ; UBRRH=(fosc/16/(baud+1))/256;
0010 2224 clr R2
0012 20BC out 0x20,R2
0014 .dbline 20
0014 ; UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位STOP位
0014 86E8 ldi R24,134
0016 80BD out 0x20,R24
0018 .dbline -2
0018 .dbline 21
0018 ; }
0018 L1:
0018 .dbline 0 ; func end
0018 0895 ret
001A .dbend
001A .dbfunc e putchar _putchar fV
001A ; c -> R16
.even
001A _putchar::
001A .dbline -1
001A .dbline 24
001A ; /* 字符输出函数 */
001A ; void putchar(unsigned char c)
001A ; {
001A L3:
001A .dbline 25
001A L4:
001A .dbline 25
001A ; while (!(UCSRA&(1<<UDRE)));
001A 5D9B sbis 0xb,5
001C FECF rjmp L3
001E .dbline 26
001E ; UDR=c;
001E 0CB9 out 0xc,R16
0020 .dbline -2
0020 .dbline 27
0020 ; }
0020 L2:
0020 .dbline 0 ; func end
0020 0895 ret
0022 .dbsym r c 16 c
0022 .dbend
0022 .dbfunc e getchar _getchar fc
.even
0022 _getchar::
0022 .dbline -1
0022 .dbline 30
0022 ; /* 字符输入函数 */
0022 ; unsigned char getchar(void)
0022 ; {
0022 L7:
0022 .dbline 31
0022 L8:
0022 .dbline 31
0022 ; while(!(UCSRA& (1<<RXC)));
0022 5F9B sbis 0xb,7
0024 FECF rjmp L7
0026 .dbline 32
0026 ; return UDR;
0026 0CB1 in R16,0xc
0028 .dbline -2
0028 L6:
0028 .dbline 0 ; func end
0028 0895 ret
002A .dbend
.area vector(rom, abs)
.org 22
0016 15C0 rjmp _isp
.area text(rom, con, rel)
002A .dbfile E:\icc\iccavr\mega8\mega8\music\isp.c
.area bss(ram, con, rel)
0000 .dbfile E:\icc\iccavr\mega8\mega8\music\isp.c
0000 L11:
0000 .blkb 2
.area text(rom, con, rel)
002A .dbfile E:\icc\iccavr\mega8\mega8\music\isp.c
002A .dbfunc e isp _isp fV
002A .dbsym s adder L11 i
002A ; val -> R20
.even
002A _isp::
002A 00D0 rcall push_lset
002C 00D0 rcall push_gset1
002E .dbline -1
002E .dbline 36
002E ; }
002E ; #pragma interrupt_handler isp:iv_USART_RXC
002E ; void isp(void)
002E ; {
002E .dbline 39
002E ; static unsigned int adder;
002E ; unsigned char val;
002E ; val=UDR;
002E 4CB1 in R20,0xc
0030 .dbline 40
0030 ; switch (val)
0030 5527 clr R21
0032 4C34 cpi R20,76
0034 E0E0 ldi R30,0
0036 5E07 cpc R21,R30
0038 09F4 brne X1
003A AFC0 rjmp L22
003C X1:
003C 8CE4 ldi R24,76
003E 90E0 ldi R25,0
0040 8417 cp R24,R20
0042 9507 cpc R25,R21
0044 D4F0 brlt L36
0046 L35:
0046 4B31 cpi R20,27
0048 E0E0 ldi R30,0
004A 5E07 cpc R21,R30
004C 09F4 brne X2
004E E6C0 rjmp L13
0050 X2:
0050 4B31 cpi R20,27
0052 E0E0 ldi R30,0
0054 5E07 cpc R21,R30
0056 0CF4 brge X3
0058 DFC0 rjmp L12
005A X3:
005A L37:
005A 4134 cpi R20,65
005C E0E0 ldi R30,0
005E 5E07 cpc R21,R30
0060 09F4 brne X4
0062 5FC0 rjmp L19
0064 X4:
0064 4434 cpi R20,68
0066 E0E0 ldi R30,0
0068 5E07 cpc R21,R30
006A 09F4 brne X5
006C 73C0 rjmp L20
006E X5:
006E 4634 cpi R20,70
0070 E0E0 ldi R30,0
0072 5E07 cpc R21,R30
0074 09F4 brne X6
0076 9FC0 rjmp L26
0078 X6:
0078 CFC0 rjmp L12
007A L36:
007A 4136 cpi R20,97
007C E0E0 ldi R30,0
007E 5E07 cpc R21,R30
0080 09F4 brne X7
0082 4CC0 rjmp L18
0084 X7:
0084 4436 cpi R20,100
0086 E0E0 ldi R30,0
0088 5E07 cpc R21,R30
008A 09F4 brne X8
008C 76C0 rjmp L21
008E X8:
008E 84E6 ldi R24,100
0090 90E0 ldi R25,0
0092 8417 cp R24,R20
0094 9507 cpc R25,R21
0096 ACF0 brlt L39
0098 L38:
0098 4035 cpi R20,80
009A E0E0 ldi R30,0
009C 5E07 cpc R21,R30
009E 09F4 brne X9
00A0 38C0 rjmp L17
00A2 X9:
00A2 4335 cpi R20,83
00A4 E0E0 ldi R30,0
00A6 5E07 cpc R21,R30
00A8 09F4 brne X10
00AA 8FC0 rjmp L28
00AC X10:
00AC 4435 cpi R20,84
00AE E0E0 ldi R30,0
00B0 5E07 cpc R21,R30
00B2 09F4 brne X11
00B4 77C0 rjmp L23
00B6 X11:
00B6 4635 cpi R20,86
00B8 E0E0 ldi R30,0
00BA 5E07 cpc R21,R30
00BC 09F4 brne X12
00BE 97C0 rjmp L30
00C0 X12:
00C0 ABC0 rjmp L12
00C2 L39:
00C2 4D36 cpi R20,109
00C4 E0E0 ldi R30,0
00C6 5E07 cpc R21,R30
00C8 09F4 brne X13
00CA A3C0 rjmp L34
00CC X13:
00CC 4037 cpi R20,112
00CE E0E0 ldi R30,0
00D0 5E07 cpc R21,R30
00D2 09F4 brne X14
00D4 89C0 rjmp L29
00D6 X14:
00D6 4337 cpi R20,115
00D8 E0E0 ldi R30,0
00DA 5E07 cpc R21,R30
00DC 09F4 brne X15
00DE 6EC0 rjmp L27
00E0 X15:
00E0 4437 cpi R20,116
00E2 E0E0 ldi R30,0
00E4 5E07 cpc R21,R30
00E6 81F0 breq L16
00E8 4637 cpi R20,118
00EA E0E0 ldi R30,0
00EC 5E07 cpc R21,R30
00EE 09F4 brne X16
00F0 83C0 rjmp L31
00F2 X16:
00F2 4837 cpi R20,120
00F4 E0E0 ldi R30,0
00F6 5E07 cpc R21,R30
00F8 09F4 brne X17
00FA 83C0 rjmp L32
00FC X17:
00FC 4937 cpi R20,121
00FE E0E0 ldi R30,0
0100 5E07 cpc R21,R30
0102 09F4 brne X18
0104 82C0 rjmp L33
0106 X18:
0106 88C0 rjmp L12
0108 X0:
0108 .dbline 41
0108 ; {
0108 .dbline 42
0108 ; case 0x1b:{
0108 .dbline 43
0108 ; break;
0108 L16:
0108 .dbline 45
0108 ; }
0108 ; case 't':{
0108 .dbline 46
0108 ; putchar(device);
0108 06E7 ldi R16,118
010A 87DF rcall _putchar
010C .dbline 47
010C ; putchar(0x00);
010C 0027 clr R16
010E 85DF rcall _putchar
0110 .dbline 48
0110 ; break;
0110 85C0 rjmp L13
0112 L17:
0112 .dbline 50
0112 ; }
0112 ; case 'P':{
0112 .dbline 51
0112 ; clr_bit(DDRC,0);
0112 A098 cbi 0x14,0
0114 .dbline 52
0114 ; CLI();
0114 F894 cli
0116 .dbline 53
0116 ; putchar(13);
0116 0DE0 ldi R16,13
0118 80DF rcall _putchar
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -