📄 main.lis
字号:
00E4 81E0 ldi R24,1
00E6 88BB out 0x18,R24
00E8 .dbline 79
00E8 ; DDRB = 0xFE;
00E8 8EEF ldi R24,254
00EA 87BB out 0x17,R24
00EC .dbline 80
00EC ; PORTC = 0x00; //m103 output only
00EC 25BA out 0x15,R2
00EE .dbline 81
00EE ; DDRC = 0x01;
00EE 81E0 ldi R24,1
00F0 84BB out 0x14,R24
00F2 .dbline 82
00F2 ; PORTD = 0xff;
00F2 8FEF ldi R24,255
00F4 82BB out 0x12,R24
00F6 .dbline 83
00F6 ; DDRD = 0x00;
00F6 21BA out 0x11,R2
00F8 .dbline 85
00F8 ;
00F8 ; lcd_data_port=0xff;
00F8 82BB out 0x12,R24
00FA .dbline 86
00FA ; lcd_data_ddr=0xff;
00FA 81BB out 0x11,R24
00FC .dbline 87
00FC ; lcd_control_port=0x07;
00FC 87E0 ldi R24,7
00FE 8BBB out 0x1b,R24
0100 .dbline 88
0100 ; lcd_control_ddr=0x07;
0100 8ABB out 0x1a,R24
0102 .dbline -2
0102 L14:
0102 .dbline 0 ; func end
0102 0895 ret
0104 .dbend
0104 .dbfunc e timer1_init _timer1_init fV
.even
0104 _timer1_init::
0104 .dbline -1
0104 .dbline 96
0104 ; }
0104 ;
0104 ; //TIMER1 initialize - prescale:64
0104 ; // WGM: 0) Normal, TOP=0xFFFF
0104 ; // desired value: 1Hz
0104 ; // actual value: 1.000Hz (0.0%)
0104 ; void timer1_init(void)
0104 ; {
0104 .dbline 97
0104 ; TCCR1B = 0x00; //stop
0104 2224 clr R2
0106 2EBC out 0x2e,R2
0108 .dbline 98
0108 ; TCNT1H = 0x0B; //setup
0108 8BE0 ldi R24,11
010A 8DBD out 0x2d,R24
010C .dbline 99
010C ; TCNT1L = 0xDC;
010C 8CED ldi R24,220
010E 8CBD out 0x2c,R24
0110 .dbline 101
0110 ;
0110 ; TCCR1A = 0x00;
0110 2FBC out 0x2f,R2
0112 .dbline 102
0112 ; TCCR1B = 0x03; //start Timer
0112 83E0 ldi R24,3
0114 8EBD out 0x2e,R24
0116 .dbline -2
0116 L15:
0116 .dbline 0 ; func end
0116 0895 ret
0118 .dbend
0118 .dbfunc e init_devices _init_devices fV
.even
0118 _init_devices::
0118 .dbline -1
0118 .dbline 106
0118 ; }
0118 ;
0118 ; void init_devices(void)
0118 ; {
0118 .dbline 108
0118 ; //stop errant interrupts until set up
0118 ; CLI(); //disable all interrupts
0118 F894 cli
011A .dbline 109
011A ; port_init();
011A E0DF xcall _port_init
011C .dbline 110
011C ; timer1_init();
011C F3DF xcall _timer1_init
011E .dbline 111
011E ; TCCR0=0x06;
011E 86E0 ldi R24,6
0120 83BF out 0x33,R24
0122 .dbline 112
0122 ; TCNT0=0x00;
0122 2224 clr R2
0124 22BE out 0x32,R2
0126 .dbline 114
0126 ;
0126 ; count=0x00;
0126 3324 clr R3
0128 30920200 sts _count+1,R3
012C 20920100 sts _count,R2
0130 .dbline 115
0130 ; tim0_ovf_count=0x00;
0130 20920000 sts _tim0_ovf_count,R2
0134 .dbline 116
0134 ; timer1_init();
0134 E7DF xcall _timer1_init
0136 .dbline 118
0136 ;
0136 ; lcd_init();
0136 0E940000 xcall _lcd_init
013A .dbline 120
013A ;
013A ; MCUCR = 0x00;
013A 2224 clr R2
013C 25BE out 0x35,R2
013E .dbline 121
013E ; GICR = 0x00;
013E 2BBE out 0x3b,R2
0140 .dbline 122
0140 ; TIMSK = 0x05; //timer interrupt sources
0140 85E0 ldi R24,5
0142 89BF out 0x39,R24
0144 .dbline 123
0144 ; SEI(); //re-enable interrupts
0144 7894 sei
0146 .dbline -2
0146 L16:
0146 .dbline 0 ; func end
0146 0895 ret
0148 .dbend
.area vector(rom, abs)
.org 36
0024 0C94A400 jmp _timer0_ovf_isr
.area text(rom, con, rel)
0148 .dbfile F:\avr单片机学习\我自编程序\1602lcd\main.c
0148 .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
0148 _timer0_ovf_isr::
0148 2A92 st -y,R2
014A 8A93 st -y,R24
014C 9A93 st -y,R25
014E 2FB6 in R2,0x3f
0150 2A92 st -y,R2
0152 .dbline -1
0152 .dbline 128
0152 ; }
0152 ;
0152 ; #pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
0152 ; void timer0_ovf_isr(void)
0152 ; {
0152 .dbline 129
0152 ; TCNT0 = 0x00 /*INVALID SETTING*/; //reload counter value
0152 2224 clr R2
0154 22BE out 0x32,R2
0156 .dbline 130
0156 ; tim0_ovf_count++;
0156 80910000 lds R24,_tim0_ovf_count
015A 8F5F subi R24,255 ; addi 1
015C 80930000 sts _tim0_ovf_count,R24
0160 .dbline -2
0160 L17:
0160 .dbline 0 ; func end
0160 2990 ld R2,y+
0162 2FBE out 0x3f,R2
0164 9991 ld R25,y+
0166 8991 ld R24,y+
0168 2990 ld R2,y+
016A 1895 reti
016C .dbend
.area vector(rom, abs)
.org 32
0020 0C94B600 jmp _timer1_ovf_isr
.area text(rom, con, rel)
016C .dbfile F:\avr单片机学习\我自编程序\1602lcd\main.c
016C .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
016C _timer1_ovf_isr::
016C 2A92 st -y,R2
016E 3A92 st -y,R3
0170 4A92 st -y,R4
0172 5A92 st -y,R5
0174 0A93 st -y,R16
0176 1A93 st -y,R17
0178 2A93 st -y,R18
017A 3A93 st -y,R19
017C 8A93 st -y,R24
017E 2FB6 in R2,0x3f
0180 2A92 st -y,R2
0182 .dbline -1
0182 .dbline 137
0182 ; }
0182 ;
0182 ;
0182 ;
0182 ; #pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF
0182 ; void timer1_ovf_isr(void)
0182 ; {
0182 .dbline 139
0182 ; //TIMER1 has overflowed
0182 ; TCNT1H = 0x0B; //reload counter high value
0182 8BE0 ldi R24,11
0184 8DBD out 0x2d,R24
0186 .dbline 140
0186 ; TCNT1L = 0xDC; //reload counter low value
0186 8CED ldi R24,220
0188 8CBD out 0x2c,R24
018A .dbline 141
018A ; count=tim0_ovf_count*256+TCNT0;
018A 20910000 lds R18,_tim0_ovf_count
018E 3327 clr R19
0190 00E0 ldi R16,256
0192 11E0 ldi R17,1
0194 0E940000 xcall empy16s
0198 1801 movw R2,R16
019A 42B6 in R4,0x32
019C 5524 clr R5
019E 240C add R2,R4
01A0 351C adc R3,R5
01A2 30920200 sts _count+1,R3
01A6 20920100 sts _count,R2
01AA .dbline 142
01AA ; tim0_ovf_count=0x00;
01AA 2224 clr R2
01AC 20920000 sts _tim0_ovf_count,R2
01B0 .dbline 143
01B0 ; TCNT0=0x00;
01B0 22BE out 0x32,R2
01B2 .dbline -2
01B2 L18:
01B2 .dbline 0 ; func end
01B2 2990 ld R2,y+
01B4 2FBE out 0x3f,R2
01B6 8991 ld R24,y+
01B8 3991 ld R19,y+
01BA 2991 ld R18,y+
01BC 1991 ld R17,y+
01BE 0991 ld R16,y+
01C0 5990 ld R5,y+
01C2 4990 ld R4,y+
01C4 3990 ld R3,y+
01C6 2990 ld R2,y+
01C8 1895 reti
01CA .dbend
.area bss(ram, con, rel)
0000 .dbfile F:\avr单片机学习\我自编程序\1602lcd\main.c
0000 _tim0_ovf_count::
0000 .blkb 1
0001 .dbsym e tim0_ovf_count _tim0_ovf_count c
0001 _count::
0001 .blkb 2
0003 .dbsym e count _count i
0003 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -