📄 main.lis
字号:
.module main.c
.area lit(rom, con, rel)
0000 _seg7_data::
0000 3F06 .byte 63,6
0002 5B4F .byte 91,'O
0004 666D .byte 'f,'m
0006 7D07 .byte 125,7
0008 7F6F .byte 127,'o
000A 777C .byte 'w,124
000C 395E .byte 57,94
000E 7971 .byte 'y,'q
0010 00 .byte 0
0011 .dbfile E:\avr\2.1.6\main.c
0011 .dbsym e seg7_data _seg7_data A[17:17]kc
.area text(rom, con, rel)
0000 .dbfile E:\avr\2.1.6\main.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 12
0000 ; //ICC-AVR application builder : 2007-5-29 15:21:23
0000 ; // Target : M16
0000 ; // Crystal: 7.3728Mhz
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; const unsigned char seg7_data[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};//0~F and "shut"
0000 ;
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 13
0000 ; PORTA = 0xFF;
0000 8FEF ldi R24,255
0002 8BBB out 0x1b,R24
0004 .dbline 14
0004 ; DDRA = 0xFF;
0004 8ABB out 0x1a,R24
0006 .dbline 15
0006 ; PORTB = 0x01; //PB0,是TIMER0的外部时钟输入脚(T0),需要设为输入,并且使能内部上拉
0006 81E0 ldi R24,1
0008 88BB out 0x18,R24
000A .dbline 16
000A ; DDRB = 0x00;
000A 2224 clr R2
000C 27BA out 0x17,R2
000E .dbline 17
000E ; PORTC = 0x00; //m103 output only
000E 25BA out 0x15,R2
0010 .dbline 18
0010 ; DDRC = 0x00;
0010 24BA out 0x14,R2
0012 .dbline 19
0012 ; PORTD = 0x00;
0012 22BA out 0x12,R2
0014 .dbline 20
0014 ; DDRD = 0x00;
0014 21BA out 0x11,R2
0016 .dbline -2
0016 L1:
0016 .dbline 0 ; func end
0016 0895 ret
0018 .dbend
0018 .dbfunc e timer0_init _timer0_init fV
.even
0018 _timer0_init::
0018 .dbline -1
0018 .dbline 28
0018 ; }
0018 ;
0018 ; //TIMER0 initialize - prescale:Falling edge
0018 ; // WGM: Normal
0018 ; // desired value: 1KHz
0018 ; // actual value: Out of range
0018 ; void timer0_init(void)
0018 ; {
0018 .dbline 29
0018 ; TCCR0 = 0x00; //stop
0018 2224 clr R2
001A 23BE out 0x33,R2
001C .dbline 30
001C ; TCNT0 = 0x00; //set count
001C 22BE out 0x32,R2
001E .dbline 31
001E ; OCR0 = 0x0A; //set compare十进制的十,十次按键后匹配,进入这里
001E 8AE0 ldi R24,10
0020 8CBF out 0x3c,R24
0022 .dbline 32
0022 ; TCCR0 = 0x06; //start timer
0022 86E0 ldi R24,6
0024 83BF out 0x33,R24
0026 .dbline -2
0026 L2:
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbend
.area vector(rom, abs)
.org 76
004C 0C941400 jmp _timer0_comp_isr
.area text(rom, con, rel)
0028 .dbfile E:\avr\2.1.6\main.c
0028 .dbfunc e timer0_comp_isr _timer0_comp_isr fV
.even
0028 _timer0_comp_isr::
0028 2A92 st -y,R2
002A 2FB6 in R2,0x3f
002C 2A92 st -y,R2
002E .dbline -1
002E .dbline 37
002E ; }
002E ;
002E ; #pragma interrupt_handler timer0_comp_isr:20
002E ; void timer0_comp_isr(void)
002E ; {
002E .dbline 40
002E ; //compare occured TCNT0=OCR0
002E ; //按下键OCR0次后,会进入本中断
002E ; TCNT0 = 0x00;
002E 2224 clr R2
0030 22BE out 0x32,R2
0032 .dbline -2
0032 L3:
0032 2990 ld R2,y+
0034 2FBE out 0x3f,R2
0036 2990 ld R2,y+
0038 .dbline 0 ; func end
0038 1895 reti
003A .dbend
003A .dbfunc e init_devices _init_devices fV
.even
003A _init_devices::
003A .dbline -1
003A .dbline 45
003A ; }
003A ;
003A ; //call this routine to initialize all peripherals
003A ; void init_devices(void)
003A ; {
003A .dbline 47
003A ; //stop errant interrupts until set up
003A ; CLI(); //disable all interrupts
003A F894 cli
003C .dbline 48
003C ; port_init();
003C E1DF xcall _port_init
003E .dbline 49
003E ; timer0_init();
003E ECDF xcall _timer0_init
0040 .dbline 51
0040 ;
0040 ; MCUCR = 0x00;
0040 2224 clr R2
0042 25BE out 0x35,R2
0044 .dbline 52
0044 ; GICR = 0x00;
0044 2BBE out 0x3b,R2
0046 .dbline 53
0046 ; TIMSK = 0x02; //timer interrupt sources
0046 82E0 ldi R24,2
0048 89BF out 0x39,R24
004A .dbline 54
004A ; SEI(); //re-enable interrupts
004A 7894 sei
004C .dbline -2
004C L4:
004C .dbline 0 ; func end
004C 0895 ret
004E .dbend
004E .dbfunc e main _main fV
.even
004E _main::
004E .dbline -1
004E .dbline 59
004E ; //all peripherals are now initialized
004E ; }
004E ;
004E ; void main(void)
004E ; {
004E .dbline 60
004E ; init_devices();
004E F5DF xcall _init_devices
0050 08C0 xjmp L7
0052 L6:
0052 .dbline 62
0052 .dbline 63
0052 80E0 ldi R24,<_seg7_data
0054 90E0 ldi R25,>_seg7_data
0056 E2B7 in R30,0x32
0058 FF27 clr R31
005A E80F add R30,R24
005C F91F adc R31,R25
005E E491 lpm R30,Z
0060 EBBB out 0x1b,R30
0062 .dbline 64
0062 L7:
0062 .dbline 61
0062 F7CF xjmp L6
0064 X0:
0064 .dbline -2
0064 L5:
0064 .dbline 0 ; func end
0064 0895 ret
0066 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -