📄 eeprom.lis
字号:
.module eeprom.c
.area text(rom, con, rel)
0000 .dbfile ./74164.h
0000 .dbfunc e write164 _write164 fV
0000 ; ch -> R20
0000 ; i -> R22
0000 ; x -> R16
.even
0000 _write164::
0000 00D0 rcall push_gset2
0002 .dbline -1
0002 .dbline 2
0002 ; //ICC-AVR application builder : 2005-3-1 23:23:33
0002 ; // Target : M8
0002 .dbline 5
0002 ; // Crystal: 8.0000Mhz
0002 ;
0002 ; #include <iom8v.h>
0002 402F mov R20,R16
0004 .dbline 6
0004 ; #include <macros.h>
0004 C098 cbi 0x18,0
0006 .dbline 7
0006 ; #include <74164.h>
0006 9698 cbi 0x12,6
0008 .dbline 8
0008 6627 clr R22
000A 0AC0 rjmp L5
000C L2:
000C .dbline 8
000C ; #include <eeprom.h>
000C .dbline 9
000C ;
000C 47FF sbrs R20,7
000E 02C0 rjmp L6
0010 .dbline 10
0010 ; unsigned char display[4]; // 显示缓冲区
0010 979A sbi 0x12,7
0012 01C0 rjmp L7
0014 L6:
0014 .dbline 12
0014 ; unsigned char dis; // 当前显示
0014 ; unsigned char s,m; // 时间
0014 9798 cbi 0x12,7
0016 L7:
0016 .dbline 13
0016 440F lsl R20
0018 .dbline 14
0018 969A sbi 0x12,6
001A .dbline 15
001A 0000 nop
001C .dbline 16
001C 9698 cbi 0x12,6
001E .dbline 17
001E L3:
001E .dbline 8
001E 6395 inc R22
0020 L5:
0020 .dbline 8
0020 6830 cpi R22,8
0022 A0F3 brlo L2
0024 .dbline 18
0024 ;
0024 ; //TIMER0 initialisation - prescale:256
0024 ; // WGM: Normal
0024 ; // desired value: 5mSec
0024 ; // actual value: 4.992mSec (0.2%)
0024 ; void timer0_init(void)
0024 C09A sbi 0x18,0
0026 .dbline -2
0026 .dbline 19
0026 ; {
0026 L1:
0026 00D0 rcall pop_gset2
0028 .dbline 0 ; func end
0028 0895 ret
002A .dbsym r ch 20 c
002A .dbsym r i 22 c
002A .dbsym r x 16 c
002A .dbend
002A .dbfile D:\job\avrtest\web\example\eeprom\eeprom.c
002A .dbfunc e timer0_init _timer0_init fV
.even
002A _timer0_init::
002A .dbline -1
002A .dbline 19
002A .dbline 20
002A ; TCCR0 = 0x00; //stop
002A 2224 clr R2
002C 23BE out 0x33,R2
002E .dbline 21
002E ; TCNT0 = 0x64; //set count
002E 84E6 ldi R24,100
0030 82BF out 0x32,R24
0032 .dbline 22
0032 ; TCCR0 = 0x04; //start timer
0032 84E0 ldi R24,4
0034 83BF out 0x33,R24
0036 .dbline -2
0036 .dbline 23
0036 ; }
0036 L8:
0036 .dbline 0 ; func end
0036 0895 ret
0038 .dbend
.area vector(rom, abs)
.org 18
0012 1CC0 rjmp _timer0_ovf_isr
.area text(rom, con, rel)
0038 .dbfile D:\job\avrtest\web\example\eeprom\eeprom.c
0038 .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
0038 _timer0_ovf_isr::
0038 00D0 rcall push_lset
003A 00D0 rcall push_gset1
003C .dbline -1
003C .dbline 27
003C ;
003C ; #pragma interrupt_handler timer0_ovf_isr:10
003C ; void timer0_ovf_isr(void)
003C ; {
003C .dbline 28
003C ; TCNT0 = 0x64; //reload counter value
003C 84E6 ldi R24,100
003E 82BF out 0x32,R24
0040 .dbline 30
0040 40910200 lds R20,_dis
0044 5527 clr R21
0046 4030 cpi R20,0
0048 4507 cpc R20,R21
004A 69F0 breq L13
004C X0:
004C 4130 cpi R20,1
004E E0E0 ldi R30,0
0050 5E07 cpc R21,R30
0052 A1F0 breq L14
0054 4230 cpi R20,2
0056 E0E0 ldi R30,0
0058 5E07 cpc R21,R30
005A D9F0 breq L15
005C 4330 cpi R20,3
005E E0E0 ldi R30,0
0060 5E07 cpc R21,R30
0062 11F1 breq L16
0064 2BC0 rjmp L10
0066 X1:
0066 .dbline 30
0066 ; // display
0066 ; switch(dis){ // 显示
0066 L13:
0066 .dbline 31
0066 ; case 0: write164(display[dis] | 0x70); break;
0066 80E0 ldi R24,<_display
0068 90E0 ldi R25,>_display
006A E0910200 lds R30,_dis
006E FF27 clr R31
0070 E80F add R30,R24
0072 F91F adc R31,R25
0074 0081 ldd R16,z+0
0076 0067 ori R16,112
0078 C3DF rcall _write164
007A .dbline 31
007A 20C0 rjmp L11
007C L14:
007C .dbline 32
007C ; case 1: write164(display[dis] | 0xB0); break;
007C 80E0 ldi R24,<_display
007E 90E0 ldi R25,>_display
0080 E0910200 lds R30,_dis
0084 FF27 clr R31
0086 E80F add R30,R24
0088 F91F adc R31,R25
008A 0081 ldd R16,z+0
008C 006B ori R16,176
008E B8DF rcall _write164
0090 .dbline 32
0090 15C0 rjmp L11
0092 L15:
0092 .dbline 33
0092 ; case 2: write164(display[dis] | 0xD0); break;
0092 80E0 ldi R24,<_display
0094 90E0 ldi R25,>_display
0096 E0910200 lds R30,_dis
009A FF27 clr R31
009C E80F add R30,R24
009E F91F adc R31,R25
00A0 0081 ldd R16,z+0
00A2 006D ori R16,208
00A4 ADDF rcall _write164
00A6 .dbline 33
00A6 0AC0 rjmp L11
00A8 L16:
00A8 .dbline 34
00A8 ; case 3: write164(display[dis] | 0xE0); break;
00A8 80E0 ldi R24,<_display
00AA 90E0 ldi R25,>_display
00AC E0910200 lds R30,_dis
00B0 FF27 clr R31
00B2 E80F add R30,R24
00B4 F91F adc R31,R25
00B6 0081 ldd R16,z+0
00B8 006E ori R16,224
00BA A2DF rcall _write164
00BC .dbline 34
00BC L10:
00BC L11:
00BC .dbline 36
00BC 80910200 lds R24,_dis
00C0 8F5F subi R24,255 ; addi 1
00C2 282E mov R2,R24
00C4 20920200 sts _dis,R2
00C8 83E0 ldi R24,3
00CA 8215 cp R24,R2
00CC 18F4 brsh L17
00CE .dbline 36
00CE 2224 clr R2
00D0 20920200 sts _dis,R2
00D4 L17:
00D4 .dbline -2
00D4 .dbline 38
00D4 ; }
00D4 ; if(++dis > 3) dis = 0;
00D4 ; //end display
00D4 ; }
00D4 L9:
00D4 00D0 rcall pop_gset1
00D6 00D0 rcall pop_lset
00D8 .dbline 0 ; func end
00D8 1895 reti
00DA .dbend
00DA .dbfunc e timer1_init _timer1_init fV
.even
00DA _timer1_init::
00DA .dbline -1
00DA .dbline 45
00DA ;
00DA ; //TIMER1 initialisation - prescale:1024
00DA ; // WGM: 0) Normal, TOP=0xFFFF
00DA ; // desired value: 1Hz
00DA ; // actual value: 1.000Hz (0.0%)
00DA ; void timer1_init(void)
00DA ; {
00DA .dbline 46
00DA ; TCCR1B = 0x00; //stop
00DA 2224 clr R2
00DC 2EBC out 0x2e,R2
00DE .dbline 47
00DE ; TCNT1H = 0xE1; //setup
00DE 81EE ldi R24,225
00E0 8DBD out 0x2d,R24
00E2 .dbline 48
00E2 ; TCNT1L = 0x7C;
00E2 8CE7 ldi R24,124
00E4 8CBD out 0x2c,R24
00E6 .dbline 49
00E6 ; OCR1AH = 0x1E;
00E6 8EE1 ldi R24,30
00E8 8BBD out 0x2b,R24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -