📄 m8demo.lis
字号:
0102 .dbline 90
0102 11C0 rjmp L17
0104 L21:
0104 .dbline 93
0104 ; case in_eeprom_addr_modify_mode:
0104 ; case in_eeprom_data_modify_mode:
0104 ; case in_eeprom_read_mode:DisplayHexData(in_eeprom_addr,in_eeprom_data);break;
0104 20910100 lds R18,_in_eeprom_data
0108 00910100 lds R16,_in_eeprom_addr
010C B7D0 rcall _DisplayHexData
010E .dbline 93
010E 0BC0 rjmp L17
0110 L22:
0110 .dbline 94
0110 ; case adc_mode:DisplayData( adc_value);break;
0110 00910200 lds R16,_adc_value
0114 10910300 lds R17,_adc_value+1
0118 CDD0 rcall _DisplayData
011A .dbline 94
011A 05C0 rjmp L17
011C L23:
011C .dbline 96
011C 20910000 lds R18,_AT45DB021_data
0120 00910400 lds R16,_AT45DB021_addr
0124 ABD0 rcall _DisplayHexData
0126 .dbline 96
0126 .dbline 97
0126 L17:
0126 .dbline -2
0126 L13:
0126 00D0 rcall pop_gset1
0128 00D0 rcall pop_lset
012A .dbline 0 ; func end
012A 1895 reti
012C .dbend
012C .dbfunc e timer1_init _timer1_init fV
.even
012C _timer1_init::
012C .dbline -1
012C .dbline 107
012C ; case AT45DB021_addr_modify_mode:
012C ; case AT45DB021_data_modify_mode:DisplayHexData(AT45DB021_addr,AT45DB021_data);break;
012C ; default :break;
012C ; }
012C ;
012C ; }
012C ;
012C ; //TIMER1 initialisation - prescale:256
012C ; // WGM: 0) Normal, TOP=0xFFFF
012C ; // desired value: 1Sec
012C ; // actual value: 1.000Sec (0.0%)
012C ; void timer1_init(void)
012C ; {
012C .dbline 108
012C ; TCCR1B = 0x00; //stop
012C 2224 clr R2
012E 2EBC out 0x2e,R2
0130 .dbline 109
0130 ; TCNT1H = 0x8F; //setup
0130 8FE8 ldi R24,143
0132 8DBD out 0x2d,R24
0134 .dbline 110
0134 ; TCNT1L = 0x80;
0134 80E8 ldi R24,128
0136 8CBD out 0x2c,R24
0138 .dbline 111
0138 ; OCR1AH = 0x70;
0138 80E7 ldi R24,112
013A 8BBD out 0x2b,R24
013C .dbline 112
013C ; OCR1AL = 0x80;
013C 80E8 ldi R24,128
013E 8ABD out 0x2a,R24
0140 .dbline 113
0140 ; OCR1BH = 0x70;
0140 80E7 ldi R24,112
0142 89BD out 0x29,R24
0144 .dbline 114
0144 ; OCR1BL = 0x80;
0144 80E8 ldi R24,128
0146 88BD out 0x28,R24
0148 .dbline 115
0148 ; ICR1H = 0x70;
0148 80E7 ldi R24,112
014A 87BD out 0x27,R24
014C .dbline 116
014C ; ICR1L = 0x80;
014C 80E8 ldi R24,128
014E 86BD out 0x26,R24
0150 .dbline 117
0150 ; TCCR1A = 0x00;
0150 2FBC out 0x2f,R2
0152 .dbline 118
0152 ; TCCR1B = 0x04; //start Timer
0152 84E0 ldi R24,4
0154 8EBD out 0x2e,R24
0156 .dbline -2
0156 L24:
0156 .dbline 0 ; func end
0156 0895 ret
0158 .dbend
.area vector(rom, abs)
.org 16
0010 ACC0 rjmp _timer1_ovf_isr
.area text(rom, con, rel)
0158 .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\M8Demo.c
0158 .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
0158 _timer1_ovf_isr::
0158 2A92 st -y,R2
015A 3A92 st -y,R3
015C 8A93 st -y,R24
015E 9A93 st -y,R25
0160 EA93 st -y,R30
0162 2FB6 in R2,0x3f
0164 2A92 st -y,R2
0166 .dbline -1
0166 .dbline 123
0166 .dbline 125
0166 8FE8 ldi R24,143
0168 8DBD out 0x2d,R24
016A .dbline 126
016A 80E8 ldi R24,128
016C 8CBD out 0x2c,R24
016E .dbline 127
016E 80910D00 lds R24,_TimerCount
0172 90910E00 lds R25,_TimerCount+1
0176 0196 adiw R24,1
0178 90930E00 sts _TimerCount+1,R25
017C 80930D00 sts _TimerCount,R24
0180 .dbline 128
0180 8031 cpi R24,16
0182 EEE0 ldi R30,14
0184 9E07 cpc R25,R30
0186 31F4 brne L26
0188 .dbline 129
0188 2224 clr R2
018A 3324 clr R3
018C 30920E00 sts _TimerCount+1,R3
0190 20920D00 sts _TimerCount,R2
0194 L26:
0194 .dbline -2
0194 L25:
0194 2990 ld R2,y+
0196 2FBE out 0x3f,R2
0198 E991 ld R30,y+
019A 9991 ld R25,y+
019C 8991 ld R24,y+
019E 3990 ld R3,y+
01A0 2990 ld R2,y+
01A2 .dbline 0 ; func end
01A2 1895 reti
01A4 .dbend
01A4 .dbfunc e spi_init _spi_init fV
.even
01A4 _spi_init::
01A4 .dbline -1
01A4 .dbline 134
01A4 ; }
01A4 ;
01A4 ; #pragma interrupt_handler timer1_ovf_isr:9
01A4 ; void timer1_ovf_isr(void)
01A4 ; {
01A4 ; //TIMER1 has overflowed
01A4 ; TCNT1H = 0x8F; //reload counter high value
01A4 ; TCNT1L = 0x80; //reload counter low value
01A4 ; TimerCount++;
01A4 ; if(TimerCount==3600)
01A4 ; TimerCount=0;
01A4 ; }
01A4 ;
01A4 ;
01A4 ; void spi_init(void)
01A4 ; {
01A4 .dbline 135
01A4 ; SPCR = 0x70; //setup SPI
01A4 80E7 ldi R24,112
01A6 8DB9 out 0xd,R24
01A8 .dbline 136
01A8 ; SPSR = 0x00; //setup SPI
01A8 2224 clr R2
01AA 2EB8 out 0xe,R2
01AC .dbline -2
01AC L28:
01AC .dbline 0 ; func end
01AC 0895 ret
01AE .dbend
01AE .dbfunc e twi_init _twi_init fV
.even
01AE _twi_init::
01AE .dbline -1
01AE .dbline 142
01AE ; }
01AE ;
01AE ; //TWI initialisation
01AE ; // bit rate:1
01AE ; void twi_init(void)
01AE ; {
01AE .dbline 143
01AE ; TWCR= 0X00; //disable twi
01AE 2224 clr R2
01B0 26BE out 0x36,R2
01B2 .dbline 144
01B2 ; TWBR= 0x01; //set bit rate
01B2 81E0 ldi R24,1
01B4 80B9 out 0x0,R24
01B6 .dbline 145
01B6 ; TWSR= 0x00; //set prescale
01B6 21B8 out 0x1,R2
01B8 .dbline 146
01B8 ; TWAR= 0x02; //set slave address
01B8 82E0 ldi R24,2
01BA 82B9 out 0x2,R24
01BC .dbline 147
01BC ; TWCR= 0x44; //enable twi
01BC 84E4 ldi R24,68
01BE 86BF out 0x36,R24
01C0 .dbline -2
01C0 L29:
01C0 .dbline 0 ; func end
01C0 0895 ret
01C2 .dbend
01C2 .dbfunc e twi_Enable _twi_Enable fV
.even
01C2 _twi_Enable::
01C2 .dbline -1
01C2 .dbline 151
01C2 ; }
01C2 ;
01C2 ; void twi_Enable(void)
01C2 ; {
01C2 .dbline 152
01C2 ; TWCR= 0x44; //enable twi
01C2 84E4 ldi R24,68
01C4 86BF out 0x36,R24
01C6 .dbline -2
01C6 L30:
01C6 .dbline 0 ; func end
01C6 0895 ret
01C8 .dbend
01C8 .dbfunc e twi_Disable _twi_Disable fV
.even
01C8 _twi_Disable::
01C8 .dbline -1
01C8 .dbline 155
01C8 ; }
01C8 ; void twi_Disable(void)
01C8 ; {
01C8 .dbline 156
01C8 ; TWCR= 0x00; //enable twi
01C8 2224 clr R2
01CA 26BE out 0x36,R2
01CC .dbline -2
01CC L31:
01CC .dbline 0 ; func end
01CC 0895 ret
01CE .dbend
01CE .dbfunc e adc_init _adc_init fV
.even
01CE _adc_init::
01CE .dbline -1
01CE .dbline 163
01CE ; }
01CE ;
01CE ;
01CE ; //ADC initialisation
01CE ; // Conversion time: 208uS
01CE ; void adc_init(void)
01CE ; {
01CE .dbline 164
01CE ; ADCSR = 0x00; //disable adc
01CE 2224 clr R2
01D0 26B8 out 0x6,R2
01D2 .dbline 165
01D2 ; ADMUX = 0x00; //select adc input 0
01D2 27B8 out 0x7,R2
01D4 .dbline 166
01D4 ; ACSR = 0x00;
01D4 28B8 out 0x8,R2
01D6 .dbline 167
01D6 ; ADCSR = 0xc8;
01D6 88EC ldi R24,200
01D8 86B9 out 0x6,R24
01DA .dbline -2
01DA L32:
01DA .dbline 0 ; func end
01DA 0895 ret
01DC .dbend
01DC .dbfunc e adc_Enable _adc_Enable fV
.even
01DC _adc_Enable::
01DC .dbline -1
01DC .dbline 170
01DC ; }
01DC ; void adc_Enable(void)
01DC ; {
01DC .dbline 171
01DC ; DDRC&=0xFE;
01DC 84B3 in R24,0x14
01DE 8E7F andi R24,254
01E0 84BB out 0x14,R24
01E2 .dbline 172
01E2 ; PORTC&=0xFE;
01E2 85B3 in R24,0x15
01E4 8E7F andi R24,254
01E6 85BB out 0x15,R24
01E8 .dbline 173
01E8 ; ADCSR = 0xC8;
01E8 88EC ldi R24,200
01EA 86B9 out 0x6,R24
01EC .dbline -2
01EC L33:
01EC .dbline 0 ; func end
01EC 0895 ret
01EE .dbend
01EE .dbfunc e adc_Disable _adc_Disable fV
.even
01EE _adc_Disable::
01EE .dbline -1
01EE .dbline 176
01EE ; }
01EE ; void adc_Disable(void)
01EE ; {//DDRC|=0x01;
01EE .dbline 178
01EE ; //PORTC|=0x01;
01EE ; ADCSR = 0x00;
01EE 2224 clr R2
01F0 26B8 out 0x6,R2
01F2 .dbline -2
01F2 L34:
01F2 .dbline 0 ; func end
01F2 0895 ret
01F4 .dbend
.area vector(rom, abs)
.org 28
001C FAC0 rjmp _adc_isr
.area text(rom, con, rel)
01F4 .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\M8Demo.c
01F4 .dbfunc e adc_isr _adc_isr fV
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -