📄 m8demo.lis
字号:
.module M8Demo.c
.area data(ram, con, rel)
0000 _out_eeprom_addr::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\M8Demo.c
0001 .dbsym e out_eeprom_addr _out_eeprom_addr c
0001 _in_eeprom_addr::
0001 .blkb 1
.area idata
0001 00 .byte 0
.area data(ram, con, rel)
0002 .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\M8Demo.c
0002 .dbsym e in_eeprom_addr _in_eeprom_addr c
0002 _adc_value::
0002 .blkb 2
.area idata
0002 0000 .word 0
.area data(ram, con, rel)
0004 .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\M8Demo.c
0004 .dbsym e adc_value _adc_value i
0004 _AT45DB021_addr::
0004 .blkb 1
.area idata
0004 00 .byte 0
.area data(ram, con, rel)
0005 .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\M8Demo.c
0005 .dbsym e AT45DB021_addr _AT45DB021_addr c
0005 _Display_Position::
0005 .blkb 1
.area idata
0005 00 .byte 0
.area data(ram, con, rel)
0006 .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\M8Demo.c
0006 .dbsym e Display_Position _Display_Position c
.area lit(rom, con, rel)
0000 _DataTab::
0000 C0F9 .byte 192,249
0002 A4B0 .byte 164,176
0004 9992 .byte 153,146
0006 82F8 .byte 130,248
0008 8090 .byte 128,144
000A 8883 .byte 136,131
000C C6A1 .byte 198,161
000E 868E .byte 134,142
0010 .dbsym e DataTab _DataTab A[16:16]kc
.area text(rom, con, rel)
0000 .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\M8Demo.c
0000 .dbfunc e Delay _Delay fV
0000 ; delay_time -> R16,R17
.even
0000 _Delay::
0000 .dbline -1
0000 .dbline 37
0000 ; //ICC-AVR application builder : 2003-11-10 10:04:46
0000 ; // Target : M8
0000 ; // Crystal: 7.3728Mhz
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ; #include "M8Demo.h"
0000 ; #include"I2C.H"
0000 ; #include "Eeprom.h"
0000 ; #include "AT45DB021.h"
0000 ; #include "Uart.h"
0000 ; #include "assembly.h"
0000 ; unsigned int DelayTimer;
0000 ; unsigned int TimerCount;
0000 ; unsigned int TimerCountOld;
0000 ; unsigned int key_tick;
0000 ; unsigned char key_state;
0000 ; unsigned char key_value;
0000 ; unsigned char key_pressed;
0000 ; unsigned char mode_state;
0000 ;
0000 ; unsigned char *OutPutStr;
0000 ; unsigned char out_eeprom_data;
0000 ; unsigned char out_eeprom_addr=0;
0000 ; unsigned char in_eeprom_data;
0000 ; unsigned char in_eeprom_addr=0;
0000 ; unsigned int adc_value=0;
0000 ; unsigned char AT45DB021_data;
0000 ; unsigned char AT45DB021_addr=0;
0000 ; unsigned char Display_Position=0;
0000 ;
0000 ; const char DataTab[16]=
0000 ; {0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0000 ; 0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8E};
0000 ;
0000 ;
0000 ; void Delay(unsigned int delay_time)
0000 ; {
0000 02C0 rjmp L3
0002 L2:
0002 .dbline 39
0002 0150 subi R16,1
0004 1040 sbci R17,0
0006 L3:
0006 .dbline 38
0006 ; while(delay_time)
0006 0030 cpi R16,0
0008 0107 cpc R16,R17
000A D9F7 brne L2
000C X0:
000C .dbline -2
000C L1:
000C .dbline 0 ; func end
000C 0895 ret
000E .dbsym r delay_time 16 i
000E .dbend
000E .dbfunc e Delayms _Delayms fV
000E ; timers -> R16,R17
.even
000E _Delayms::
000E .dbline -1
000E .dbline 43
000E ; delay_time--;
000E ; }
000E ;
000E ; void Delayms(unsigned int timers)
000E ; {
000E .dbline 44
000E ; DelayTimer=0;
000E 2224 clr R2
0010 3324 clr R3
0012 30921000 sts _DelayTimer+1,R3
0016 20920F00 sts _DelayTimer,R2
001A 08C0 rjmp L7
001C L6:
001C .dbline 46
001C ; while(1)
001C ; {if(DelayTimer>timers)
001C .dbline 46
001C 20900F00 lds R2,_DelayTimer
0020 30901000 lds R3,_DelayTimer+1
0024 0215 cp R16,R2
0026 1305 cpc R17,R3
0028 08F4 brsh L9
002A .dbline 47
002A ; return;
002A 01C0 rjmp L5
002C L9:
002C .dbline 48
002C L7:
002C .dbline 45
002C F7CF rjmp L6
002E X1:
002E .dbline -2
002E L5:
002E .dbline 0 ; func end
002E 0895 ret
0030 .dbsym r timers 16 i
0030 .dbend
0030 .dbfunc e port_init _port_init fV
.even
0030 _port_init::
0030 .dbline -1
0030 .dbline 52
0030 ; }
0030 ; }
0030 ;
0030 ; void port_init(void)
0030 ; {
0030 .dbline 53
0030 ; PORTB = 0xFF;
0030 8FEF ldi R24,255
0032 88BB out 0x18,R24
0034 .dbline 54
0034 ; DDRB = 0xFF;
0034 87BB out 0x17,R24
0036 .dbline 55
0036 ; PORTC = 0x7F; //m103 output only
0036 8FE7 ldi R24,127
0038 85BB out 0x15,R24
003A .dbline 56
003A ; DDRC = 0x79;
003A 89E7 ldi R24,121
003C 84BB out 0x14,R24
003E .dbline 57
003E ; PORTD = 0xFF;
003E 8FEF ldi R24,255
0040 82BB out 0x12,R24
0042 .dbline 58
0042 ; DDRD = 0xFC;
0042 8CEF ldi R24,252
0044 81BB out 0x11,R24
0046 .dbline -2
0046 L11:
0046 .dbline 0 ; func end
0046 0895 ret
0048 .dbend
0048 .dbfunc e timer0_init _timer0_init fV
.even
0048 _timer0_init::
0048 .dbline -1
0048 .dbline 66
0048 ; }
0048 ;
0048 ; //TIMER0 initialisation - prescale:1024
0048 ; // WGM: Normal
0048 ; // desired value: 10mSec
0048 ; // actual value: 10.000mSec (0.0%)
0048 ; void timer0_init(void)
0048 ; {
0048 .dbline 67
0048 ; TCCR0 = 0x00; //stop
0048 2224 clr R2
004A 23BE out 0x33,R2
004C .dbline 68
004C ; TCNT0 = 0x8D; //set count
004C 8DE8 ldi R24,141
004E 82BF out 0x32,R24
0050 .dbline 69
0050 ; TCCR0 = 0x03; //start timer
0050 83E0 ldi R24,3
0052 83BF out 0x33,R24
0054 .dbline -2
0054 L12:
0054 .dbline 0 ; func end
0054 0895 ret
0056 .dbend
.area vector(rom, abs)
.org 18
0012 2BC0 rjmp _timer0_ovf_isr
.area text(rom, con, rel)
0056 .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\M8Demo.c
0056 .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
0056 _timer0_ovf_isr::
0056 00D0 rcall push_lset
0058 00D0 rcall push_gset1
005A .dbline -1
005A .dbline 75
005A ;
005A ; }
005A ;
005A ; #pragma interrupt_handler timer0_ovf_isr:10
005A ; void timer0_ovf_isr(void)
005A ; {
005A .dbline 76
005A ; TCNT0 = 0x8D; //reload counter value
005A 8DE8 ldi R24,141
005C 82BF out 0x32,R24
005E .dbline 79
005E ; // TCNT0 = 0xA4; //reload counter value
005E ;
005E ; DelayTimer++;
005E 80910F00 lds R24,_DelayTimer
0062 90911000 lds R25,_DelayTimer+1
0066 0196 adiw R24,1
0068 90931000 sts _DelayTimer+1,R25
006C 80930F00 sts _DelayTimer,R24
0070 .dbline 80
0070 ; key_tick++;
0070 80910900 lds R24,_key_tick
0074 90910A00 lds R25,_key_tick+1
0078 0196 adiw R24,1
007A 90930A00 sts _key_tick+1,R25
007E 80930900 sts _key_tick,R24
0082 .dbline 81
0082 ; Display_Position++;
0082 80910500 lds R24,_Display_Position
0086 8F5F subi R24,255 ; addi 1
0088 80930500 sts _Display_Position,R24
008C .dbline 82
008C ; if(Display_Position>=5)
008C 8530 cpi R24,5
008E 18F0 brlo L14
0090 .dbline 83
0090 ; Display_Position=1;
0090 81E0 ldi R24,1
0092 80930500 sts _Display_Position,R24
0096 L14:
0096 .dbline 85
0096 ;
0096 ; switch(mode_state)
0096 40910500 lds R20,_mode_state
009A 5527 clr R21
009C 4030 cpi R20,0
009E 4507 cpc R20,R21
00A0 29F1 breq L19
00A2 X2:
00A2 4130 cpi R20,1
00A4 E0E0 ldi R30,0
00A6 5E07 cpc R21,R30
00A8 39F1 breq L20
00AA 4230 cpi R20,2
00AC E0E0 ldi R30,0
00AE 5E07 cpc R21,R30
00B0 19F1 breq L20
00B2 4330 cpi R20,3
00B4 E0E0 ldi R30,0
00B6 5E07 cpc R21,R30
00B8 F9F0 breq L20
00BA 4430 cpi R20,4
00BC E0E0 ldi R30,0
00BE 5E07 cpc R21,R30
00C0 09F1 breq L21
00C2 4530 cpi R20,5
00C4 E0E0 ldi R30,0
00C6 5E07 cpc R21,R30
00C8 E9F0 breq L21
00CA 4630 cpi R20,6
00CC E0E0 ldi R30,0
00CE 5E07 cpc R21,R30
00D0 C9F0 breq L21
00D2 4730 cpi R20,7
00D4 E0E0 ldi R30,0
00D6 5E07 cpc R21,R30
00D8 D9F0 breq L22
00DA 4830 cpi R20,8
00DC E0E0 ldi R30,0
00DE 5E07 cpc R21,R30
00E0 E9F0 breq L23
00E2 4930 cpi R20,9
00E4 E0E0 ldi R30,0
00E6 5E07 cpc R21,R30
00E8 C9F0 breq L23
00EA 1DC0 rjmp L17
00EC X3:
00EC .dbline 86
00EC ; {
00EC L19:
00EC .dbline 87
00EC ; case clock_mode: DisplayTimer(TimerCount);break;
00EC 00910D00 lds R16,_TimerCount
00F0 10910E00 lds R17,_TimerCount+1
00F4 64D1 rcall _DisplayTimer
00F6 .dbline 87
00F6 17C0 rjmp L17
00F8 L20:
00F8 .dbline 90
00F8 ; case out_eeprom_addr_modify_mode:
00F8 ; case out_eeprom_data_modify_mode:
00F8 ; case out_eeprom_read_mode:DisplayHexData(out_eeprom_addr,out_eeprom_data);break;
00F8 20910200 lds R18,_out_eeprom_data
00FC 00910000 lds R16,_out_eeprom_addr
0100 BDD0 rcall _DisplayHexData
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -