📄 m128_my.lis
字号:
.module m128_my.c
.area data(ram, con, rel)
0000 _v::
0000 .blkb 2
.area idata
0000 0000 .word 0
.area data(ram, con, rel)
0002 .dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\a___EWTS82\m128_my.c
0002 .dbsym e v _v I
0002 _time::
0002 .blkb 2
.area idata
0002 0000 .word 0
.area data(ram, con, rel)
0004 .dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\a___EWTS82\m128_my.c
0004 .dbsym e time _time i
.area text(rom, con, rel)
0000 .dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\a___EWTS82\m128_my.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 11
0000 ; //ICC-AVR application builder : 2007-2-21 下午 09:30:23
0000 ; // Target : M128
0000 ; // Crystal: 8.0000Mhz
0000 ;
0000 ; #include <iom128v.h>
0000 ; #include <macros.h>
0000 ; int v=0;
0000 ; unsigned int time=0;
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline -2
0000 L1:
0000 .dbline 0 ; func end
0000 0895 ret
0002 .dbend
0002 .dbfunc e adc_init _adc_init fV
.even
0002 _adc_init::
0002 .dbline -1
0002 .dbline 18
0002 ;
0002 ; }
0002 ;
0002 ; //ADC initialize
0002 ; // Conversion time: 3uS
0002 ; void adc_init(void)
0002 ; {
0002 .dbline 19
0002 ; ADCSRA = 0x00; //disable adc
0002 2224 clr R2
0004 26B8 out 0x6,R2
0006 .dbline 20
0006 ; ADMUX = 0x00; //select adc input 0
0006 27B8 out 0x7,R2
0008 .dbline 21
0008 ; ACSR = 0x80;
0008 80E8 ldi R24,128
000A 88B9 out 0x8,R24
000C .dbline 22
000C ; ADCSRA = 0xE9;
000C 89EE ldi R24,233
000E 86B9 out 0x6,R24
0010 .dbline -2
0010 L2:
0010 .dbline 0 ; func end
0010 0895 ret
0012 .dbend
.area vector(rom, abs)
.org 84
0054 0C940900 jmp _adc_isr
.area text(rom, con, rel)
0012 .dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\a___EWTS82\m128_my.c
0012 .dbfunc e adc_isr _adc_isr fV
.even
0012 _adc_isr::
0012 2A92 st -y,R2
0014 3A92 st -y,R3
0016 4A92 st -y,R4
0018 5A92 st -y,R5
001A 2FB6 in R2,0x3f
001C 2A92 st -y,R2
001E .dbline -1
001E .dbline 27
001E ; }
001E ;
001E ; #pragma interrupt_handler adc_isr:22
001E ; void adc_isr(void)
001E ; {
001E .dbline 29
001E ; //conversion complete, read value (int) using...
001E ; v=ADCL; //Read 8 low bits first (important)
001E 24B0 in R2,0x4
0020 3324 clr R3
0022 30920100 sts _v+1,R3
0026 20920000 sts _v,R2
002A .dbline 30
002A ; v|=(int)ADCH << 8; //read 2 high bits and shift into top byte
002A 25B0 in R2,0x5
002C 3324 clr R3
002E 322C mov R3,R2
0030 2224 clr R2
0032 40900000 lds R4,_v
0036 50900100 lds R5,_v+1
003A 4228 or R4,R2
003C 5328 or R5,R3
003E 50920100 sts _v+1,R5
0042 40920000 sts _v,R4
0046 .dbline -2
0046 L3:
0046 2990 ld R2,y+
0048 2FBE out 0x3f,R2
004A 5990 ld R5,y+
004C 4990 ld R4,y+
004E 3990 ld R3,y+
0050 2990 ld R2,y+
0052 .dbline 0 ; func end
0052 1895 reti
0054 .dbend
0054 .dbfunc e init_devices _init_devices fV
.even
0054 _init_devices::
0054 .dbline -1
0054 .dbline 37
0054 ;
0054 ;
0054 ; }
0054 ;
0054 ; //call this routine to initialize all peripherals
0054 ; void init_devices(void)
0054 ; {
0054 .dbline 39
0054 ; //stop errant interrupts until set up
0054 ; CLI(); //disable all interrupts
0054 F894 cli
0056 .dbline 40
0056 ; XDIV = 0x00; //xtal divider
0056 2224 clr R2
0058 2CBE out 0x3c,R2
005A .dbline 41
005A ; XMCRA = 0x00; //external memory
005A 20926D00 sts 109,R2
005E .dbline 42
005E ; port_init();
005E D0DF xcall _port_init
0060 .dbline 43
0060 ; adc_init();
0060 D0DF xcall _adc_init
0062 .dbline 44
0062 ; timer0_init();
0062 0ED0 xcall _timer0_init
0064 .dbline 46
0064 ;
0064 ; MCUCR = 0x00;
0064 2224 clr R2
0066 25BE out 0x35,R2
0068 .dbline 47
0068 ; EICRA = 0x0A; //extended ext ints
0068 8AE0 ldi R24,10
006A 80936A00 sts 106,R24
006E .dbline 48
006E ; EICRB = 0x00; //extended ext ints
006E 2ABE out 0x3a,R2
0070 .dbline 49
0070 ; EIMSK = 0x03;
0070 83E0 ldi R24,3
0072 89BF out 0x39,R24
0074 .dbline 50
0074 ; TIMSK = 0x01; //timer interrupt sources
0074 81E0 ldi R24,1
0076 87BF out 0x37,R24
0078 .dbline 51
0078 ; ETIMSK = 0x00; //extended timer interrupt sources
0078 20927D00 sts 125,R2
007C .dbline 52
007C ; SEI(); //re-enable interrupts
007C 7894 sei
007E .dbline -2
007E L4:
007E .dbline 0 ; func end
007E 0895 ret
0080 .dbend
0080 .dbfunc e timer0_init _timer0_init fV
.even
0080 _timer0_init::
0080 .dbline -1
0080 .dbline 63
0080 ; //all peripherals are now initialized
0080 ; }
0080 ;
0080 ;
0080 ;
0080 ; //TIMER0 initialize - prescale:64
0080 ; // WGM: Normal
0080 ; // desired value: 1mSec
0080 ; // actual value: 1.000mSec (0.0%)
0080 ; void timer0_init(void)
0080 ; {
0080 .dbline 64
0080 ; TCCR0 = 0x00; //stop
0080 2224 clr R2
0082 23BE out 0x33,R2
0084 .dbline 65
0084 ; ASSR = 0x00; //set async mode
0084 20BE out 0x30,R2
0086 .dbline 66
0086 ; TCNT0 = 0x83; //set count
0086 83E8 ldi R24,131
0088 82BF out 0x32,R24
008A .dbline 67
008A ; OCR0 = 0x7D;
008A 8DE7 ldi R24,125
008C 81BF out 0x31,R24
008E .dbline 68
008E ; TCCR0 = 0x04; //start timer
008E 84E0 ldi R24,4
0090 83BF out 0x33,R24
0092 .dbline -2
0092 L5:
0092 .dbline 0 ; func end
0092 0895 ret
0094 .dbend
.area vector(rom, abs)
.org 64
0040 0C944A00 jmp _timer0_ovf_isr
.area text(rom, con, rel)
0094 .dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\a___EWTS82\m128_my.c
0094 .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
0094 _timer0_ovf_isr::
0094 8A93 st -y,R24
0096 9A93 st -y,R25
0098 8FB7 in R24,0x3f
009A 8A93 st -y,R24
009C .dbline -1
009C .dbline 73
009C ; }
009C ;
009C ; #pragma interrupt_handler timer0_ovf_isr:17
009C ; void timer0_ovf_isr(void)
009C ; {
009C .dbline 74
009C ; TCNT0 = 0x83; //reload counter value
009C 83E8 ldi R24,131
009E 82BF out 0x32,R24
00A0 .dbline 75
00A0 ; time++;
00A0 80910200 lds R24,_time
00A4 90910300 lds R25,_time+1
00A8 0196 adiw R24,1
00AA 90930300 sts _time+1,R25
00AE 80930200 sts _time,R24
00B2 .dbline -2
00B2 L6:
00B2 8991 ld R24,y+
00B4 8FBF out 0x3f,R24
00B6 9991 ld R25,y+
00B8 8991 ld R24,y+
00BA .dbline 0 ; func end
00BA 1895 reti
00BC .dbend
.area vector(rom, abs)
.org 4
0004 0C945E00 jmp _int0_isr
.area text(rom, con, rel)
00BC .dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\a___EWTS82\m128_my.c
00BC .dbfunc e int0_isr _int0_isr fV
.even
00BC _int0_isr::
00BC 2A92 st -y,R2
00BE 8A93 st -y,R24
00C0 2FB6 in R2,0x3f
00C2 2A92 st -y,R2
00C4 .dbline -1
00C4 .dbline 79
00C4 ; }
00C4 ; #pragma interrupt_handler int0_isr:2
00C4 ; void int0_isr(void)
00C4 ; {
00C4 .dbline 81
00C4 ; //external interupt on INT0
00C4 ; EIMSK = 0x00;
00C4 2224 clr R2
00C6 29BE out 0x39,R2
00C8 .dbline 82
00C8 ; PORTB=0xfe;
00C8 8EEF ldi R24,254
00CA 88BB out 0x18,R24
00CC .dbline -2
00CC L7:
00CC 2990 ld R2,y+
00CE 2FBE out 0x3f,R2
00D0 8991 ld R24,y+
00D2 2990 ld R2,y+
00D4 .dbline 0 ; func end
00D4 1895 reti
00D6 .dbend
.area vector(rom, abs)
.org 8
0008 0C946B00 jmp _int1_isr
.area text(rom, con, rel)
00D6 .dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\a___EWTS82\m128_my.c
00D6 .dbfunc e int1_isr _int1_isr fV
.even
00D6 _int1_isr::
00D6 2A92 st -y,R2
00D8 8A93 st -y,R24
00DA 2FB6 in R2,0x3f
00DC 2A92 st -y,R2
00DE .dbline -1
00DE .dbline 87
00DE ; }
00DE ;
00DE ; #pragma interrupt_handler int1_isr:3
00DE ; void int1_isr(void)
00DE ; {
00DE .dbline 89
00DE ; //external interupt on INT1
00DE ; EIMSK = 0x00;
00DE 2224 clr R2
00E0 29BE out 0x39,R2
00E2 .dbline 90
00E2 ; PORTB=0xfd;
00E2 8DEF ldi R24,253
00E4 88BB out 0x18,R24
00E6 .dbline -2
00E6 L8:
00E6 2990 ld R2,y+
00E8 2FBE out 0x3f,R2
00EA 8991 ld R24,y+
00EC 2990 ld R2,y+
00EE .dbline 0 ; func end
00EE 1895 reti
00F0 .dbend
00F0 .dbfunc e asc_tran1 _asc_tran1 fV
00F0 ; asc_p -> y+4
00F0 ; y -> R20
00F0 ; x -> R22
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -