📄 dl.lis
字号:
.module dl.c
.area text(rom, con, rel)
0000 .dbfile dl.c
0000 .dbfunc e delay _delay fV
0000 ; x -> R16,R17
.even
0000 _delay::
0000 .dbline -1
0000 .dbline 16
0000 ; #include<iom8v.h> //包含ATMEGA8的头文件
0000 ; #include<macros.h> //包含一些常用宏的定义
0000 ; //#define osccal 0xaa//内部RC 校正常数
0000 ; #define fosc 8000000 //晶振8MHZ
0000 ; #define baud 4800 //波特率
0000 ; #define osccal_addr 0x1ff
0000 ; //内部晶体震荡器校正字存放地址
0000 ; #define uint unsigned int
0000 ; #define uchar unsigned char
0000 ;
0000 ; uint j;
0000 ; uchar t;
0000 ; ///////////////延时
0000 ; void delay(unsigned int x)
0000 ;
0000 ; {
0000 18C0 rjmp L3
0002 L2:
0002 .dbline 18
0002 ; while(x-->0)
0002 ; {
0002 .dbline 19
0002 ; for(j=0;j<5;j++)
0002 2224 clr R2
0004 3324 clr R3
0006 30920200 sts _j+1,R3
000A 20920100 sts _j,R2
000E 09C0 rjmp L8
0010 L5:
0010 .dbline 20
0010 .dbline 20
0010 .dbline 20
0010 L6:
0010 .dbline 19
0010 80910100 lds R24,_j
0014 90910200 lds R25,_j+1
0018 0196 adiw R24,1
001A 90930200 sts _j+1,R25
001E 80930100 sts _j,R24
0022 L8:
0022 .dbline 19
0022 80910100 lds R24,_j
0026 90910200 lds R25,_j+1
002A 8530 cpi R24,5
002C E0E0 ldi R30,0
002E 9E07 cpc R25,R30
0030 78F3 brlo L5
0032 .dbline 21
0032 L3:
0032 .dbline 17
0032 1801 movw R2,R16
0034 0150 subi R16,1
0036 1040 sbci R17,0
0038 2220 tst R2
003A 19F7 brne L2
003C 3320 tst R3
003E 09F7 brne L2
0040 X0:
0040 .dbline -2
0040 .dbline 22
0040 ; {;}
0040 ; }
0040 ; }
0040 L1:
0040 .dbline 0 ; func end
0040 0895 ret
0042 .dbsym r x 16 i
0042 .dbend
0042 .dbfunc e EEPROM_read _EEPROM_read fc
0042 ; uiAddress -> R16,R17
.even
0042 _EEPROM_read::
0042 .dbline -1
0042 .dbline 25
0042 L10:
0042 .dbline 25
0042 L11:
0042 .dbline 25
0042 ;
0042 ; unsigned char EEPROM_read(unsigned int uiAddress)
0042 ; {while(EECR&(1<<EEWE));
0042 E199 sbic 0x1c,1
0044 FECF rjmp L10
0046 .dbline 26
0046 ; EEAR=uiAddress;
0046 1FBB out 0x1f,R17
0048 0EBB out 0x1e,R16
004A .dbline 27
004A ; EECR|=(1<<EERE);
004A E09A sbi 0x1c,0
004C .dbline 28
004C ; return EEDR;
004C 0DB3 in R16,0x1d
004E .dbline -2
004E L9:
004E .dbline 0 ; func end
004E 0895 ret
0050 .dbsym r uiAddress 16 i
0050 .dbend
0050 .dbfunc e main _main fV
.even
0050 _main::
0050 .dbline -1
0050 .dbline 33
0050 ; }
0050 ;
0050 ;
0050 ; void main(void)
0050 ; {
0050 .dbline 34
0050 ; delay(200);
0050 08EC ldi R16,200
0052 10E0 ldi R17,0
0054 D5DF rcall _delay
0056 .dbline 35
0056 ; OSCCAL=EEPROM_read(osccal_addr); //D£?y?ú2?RC??μ′μ??μ?ê
0056 0FEF ldi R16,511
0058 11E0 ldi R17,1
005A F3DF rcall _EEPROM_read
005C 01BF out 0x31,R16
005E .dbline 36
005E ; DDRB=0xfe;
005E 8EEF ldi R24,254
0060 87BB out 0x17,R24
0062 .dbline 37
0062 ; DDRC=0xff;
0062 8FEF ldi R24,255
0064 84BB out 0x14,R24
0066 .dbline 39
0066 ;
0066 ; PORTC&=~(1<<5);
0066 AD98 cbi 0x15,5
0068 0FC0 rjmp L15
006A L14:
006A .dbline 41
006A ; while(1)
006A ; {
006A .dbline 42
006A ; t=(PINB&0x01);
006A 86B3 in R24,0x16
006C 8170 andi R24,1
006E 80930000 sts _t,R24
0072 .dbline 43
0072 ; if(t==0)
0072 8823 tst R24
0074 29F4 brne L17
0076 .dbline 44
0076 ; {
0076 .dbline 45
0076 ; PORTC|=(1<<5);
0076 AD9A sbi 0x15,5
0078 .dbline 46
0078 ; delay(50000);
0078 00E5 ldi R16,50000
007A 13EC ldi R17,195
007C C1DF rcall _delay
007E .dbline 47
007E ; }
007E 04C0 rjmp L18
0080 L17:
0080 .dbline 49
0080 ; else
0080 ; {
0080 .dbline 50
0080 ; PORTC&=~(1<<5);
0080 AD98 cbi 0x15,5
0082 .dbline 51
0082 ; delay(50000);
0082 00E5 ldi R16,50000
0084 13EC ldi R17,195
0086 BCDF rcall _delay
0088 .dbline 52
0088 ; }
0088 L18:
0088 .dbline 53
0088 L15:
0088 .dbline 40
0088 F0CF rjmp L14
008A X1:
008A .dbline -2
008A .dbline 54
008A ; }
008A ; }
008A L13:
008A .dbline 0 ; func end
008A 0895 ret
008C .dbend
.area bss(ram, con, rel)
0000 .dbfile dl.c
0000 _t::
0000 .blkb 1
0001 .dbsym e t _t c
0001 _j::
0001 .blkb 2
0003 .dbsym e j _j i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -