📄 timer.lis
字号:
.module timer.c
.area vector(rom, abs)
.org 56
0038 0C942300 jmp _Timer_INT
.area data(ram, con, rel)
0000 _flag::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile G:\猛\avr实践\定时器中断\timer.c
0001 .dbsym e flag _flag c
.area text(rom, con, rel)
0000 .dbfile G:\猛\avr实践\定时器中断\timer.c
0000 .dbfunc e main _main fV
0000 ; i -> <dead>
0000 ; achar -> <dead>
.even
0000 _main::
0000 .dbline -1
0000 .dbline 23
0000 ; #include <iom128.h>
0000 ; #include <macros.h>
0000 ;
0000 ;
0000 ; #define Red_LED_on PORTB&~BIT(0)
0000 ; #define Red_LED_off PORTB|(1<<0)
0000 ; #define Green_LED_on PORTB&(~(1<<1))
0000 ; #define Green_LED_off PORTB|(1<<1)
0000 ; #define Yellow_LED_on PORTB&(~(1<<2))
0000 ; #define Yellow_LED_off PORTB|(1<<2)
0000 ; #define Flag_H PORTB|(1<<3)
0000 ; #define Flag_L PORTB&~(1<<3)
0000 ;
0000 ; #pragma interrupt_handler Timer_INT:15 //定时器中断
0000 ;
0000 ; void Port_initilaze(void);
0000 ; void Timer_initilaze(void);
0000 ;
0000 ;
0000 ; unsigned char flag = 0;
0000 ;
0000 ; void main(void)
0000 ; {
0000 .dbline 27
0000 ; unsigned char achar;
0000 ; unsigned char i;
0000 ;
0000 ; Port_initilaze();
0000 0ED0 xcall _Port_initilaze
0002 .dbline 28
0002 ; Timer_initilaze();
0002 11D0 xcall _Timer_initilaze
0004 .dbline 32
0004 ;
0004 ;
0004 ;
0004 ; PORTB = Red_LED_on;
0004 C098 cbi 0x18,0
0006 .dbline 33
0006 ; PORTB = Yellow_LED_on;
0006 C298 cbi 0x18,2
0008 .dbline 37
0008 ; //PORTB = Green_LED_on;
0008 ;
0008 ;
0008 ; for(;;)
0008 L2:
0008 .dbline 38
0008 ; {
0008 .dbline 39
0008 ; if (flag == 0)
0008 20900000 lds R2,_flag
000C 2220 tst R2
000E 19F4 brne L6
0010 .dbline 40
0010 ; {
0010 .dbline 41
0010 ; PORTB = Flag_H;
0010 C39A sbi 0x18,3
0012 .dbline 42
0012 ; PORTB = Green_LED_off;
0012 C19A sbi 0x18,1
0014 .dbline 43
0014 ; }
0014 F9CF xjmp L2
0016 L6:
0016 .dbline 45
0016 .dbline 46
0016 C398 cbi 0x18,3
0018 .dbline 47
0018 C198 cbi 0x18,1
001A .dbline 48
001A .dbline 49
001A .dbline 37
001A .dbline 37
001A F6CF xjmp L2
001C X0:
001C .dbline -2
001C L1:
001C .dbline 0 ; func end
001C 0895 ret
001E .dbsym l i 1 c
001E .dbsym l achar 1 c
001E .dbend
001E .dbfunc e Port_initilaze _Port_initilaze fV
.even
001E _Port_initilaze::
001E .dbline -1
001E .dbline 54
001E ; else
001E ; {
001E ; PORTB = Flag_L;
001E ; PORTB = Green_LED_on;
001E ; }
001E ; }
001E ;
001E ; }
001E ;
001E ; void Port_initilaze(void)
001E ; {
001E .dbline 55
001E ; DDRB = 0xFF;
001E 8FEF ldi R24,255
0020 87BB out 0x17,R24
0022 .dbline 56
0022 ; PORTB = 0xFF;
0022 88BB out 0x18,R24
0024 .dbline -2
0024 .dbline 57
0024 ; }
0024 L8:
0024 .dbline 0 ; func end
0024 0895 ret
0026 .dbend
0026 .dbfunc e Timer_initilaze _Timer_initilaze fV
.even
0026 _Timer_initilaze::
0026 .dbline -1
0026 .dbline 59
0026 ; void Timer_initilaze(void)
0026 ; {
0026 .dbline 60
0026 ; TCCR1A = 0x00; //普通方式,引脚作IO用
0026 2224 clr R2
0028 2FBC out 0x2f,R2
002A .dbline 61
002A ; TCCR1B = 0x02; //CK/1024
002A 82E0 ldi R24,2
002C 8EBD out 0x2e,R24
002E .dbline 62
002E ; TCCR1C = 0;
002E 20927A00 sts 122,R2
0032 .dbline 63
0032 ; TCNT1 = 0x3d09;
0032 89E0 ldi R24,15625
0034 9DE3 ldi R25,61
0036 90934D00 sts 76+1,R25
003A 80934C00 sts 76,R24
003E .dbline 64
003E ; TIMSK = 0x04; //开放T1溢出中断
003E 84E0 ldi R24,4
0040 87BF out 0x37,R24
0042 .dbline 66
0042 ;
0042 ; SEI();
0042 7894 sei
0044 .dbline -2
0044 .dbline 68
0044 ;
0044 ; }
0044 L9:
0044 .dbline 0 ; func end
0044 0895 ret
0046 .dbend
0046 .dbfunc e Timer_INT _Timer_INT fV
.even
0046 _Timer_INT::
0046 2A92 st -y,R2
0048 8A93 st -y,R24
004A 9A93 st -y,R25
004C 2FB6 in R2,0x3f
004E 2A92 st -y,R2
0050 .dbline -1
0050 .dbline 70
0050 ; void Timer_INT(void)
0050 ; {
0050 .dbline 71
0050 ; TCNT1 = 0x3d09;
0050 89E0 ldi R24,15625
0052 9DE3 ldi R25,61
0054 90934D00 sts 76+1,R25
0058 80934C00 sts 76,R24
005C .dbline 72
005C ; flag = ~flag;
005C 20900000 lds R2,_flag
0060 2094 com R2
0062 20920000 sts _flag,R2
0066 .dbline 73
0066 ; PORTB = Green_LED_on;
0066 C198 cbi 0x18,1
0068 .dbline -2
0068 .dbline 74
0068 ; }
0068 L10:
0068 2990 ld R2,y+
006A 2FBE out 0x3f,R2
006C 9991 ld R25,y+
006E 8991 ld R24,y+
0070 2990 ld R2,y+
0072 .dbline 0 ; func end
0072 1895 reti
0074 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -