📄 main.lis
字号:
0096 .dbline 79
0096 ; unsigned int i;
0096 ;
0096 ; i = 1000; /*防按键颤动代码*/
0096 08EE ldi R16,1000
0098 13E0 ldi R17,3
009A 03C0 xjmp L18
009C L17:
009C .dbline 80
009C ; while (i --) {
009C .dbline 81
009C ; if ((PINE & (1 << PE4)) != 0) { /*按键是否为低电平*/
009C 0C9B sbis 0x1,4
009E 01C0 rjmp L20
00A0 .dbline 81
00A0 .dbline 82
00A0 ; return ;
00A0 0DC0 xjmp L16
00A2 L20:
00A2 .dbline 84
00A2 L18:
00A2 .dbline 80
00A2 1801 movw R2,R16
00A4 0150 subi R16,1
00A6 1040 sbci R17,0
00A8 2220 tst R2
00AA C1F7 brne L17
00AC 3320 tst R3
00AE B1F7 brne L17
00B0 X1:
00B0 .dbline 86
00B0 ; }
00B0 ; }
00B0 ;
00B0 ; PORTB ^= (1 << PB4); /*PB1电平取反*/
00B0 80E1 ldi R24,16
00B2 28B2 in R2,0x18
00B4 2826 eor R2,R24
00B6 28BA out 0x18,R2
00B8 L22:
00B8 .dbline 87
00B8 L23:
00B8 .dbline 87
00B8 ; while ((PINE & (1 << PE4)) == 0); /*等待按键松开*/
00B8 0C9B sbis 0x1,4
00BA FECF rjmp L22
00BC .dbline -2
00BC L16:
00BC 2990 ld R2,y+
00BE 2FBE out 0x3f,R2
00C0 8991 ld R24,y+
00C2 1991 ld R17,y+
00C4 0991 ld R16,y+
00C6 3990 ld R3,y+
00C8 2990 ld R2,y+
00CA .dbline 0 ; func end
00CA 1895 reti
00CC .dbsym r i 16 i
00CC .dbend
.area vector(rom, abs)
.org 24
0018 0C946600 jmp _Int5
.area text(rom, con, rel)
00CC .dbfile E:\ICCAVR\project\AVRMEG~3\icc\006-INT-LED\main.c
00CC .dbfunc e Int5 _Int5 fV
.even
00CC _Int5::
00CC 2A92 st -y,R2
00CE 8A93 st -y,R24
00D0 2FB6 in R2,0x3f
00D2 2A92 st -y,R2
00D4 .dbline -1
00D4 .dbline 92
00D4 ; }
00D4 ;
00D4 ; /*外部中断INT5,任意电平变化触发*/
00D4 ; #pragma interrupt_handler Int5: 7
00D4 ; void Int5(void) {
00D4 .dbline 93
00D4 ; PORTB ^= (1 << PB5); /*PB1电平取反*/
00D4 80E2 ldi R24,32
00D6 28B2 in R2,0x18
00D8 2826 eor R2,R24
00DA 28BA out 0x18,R2
00DC .dbline -2
00DC L25:
00DC 2990 ld R2,y+
00DE 2FBE out 0x3f,R2
00E0 8991 ld R24,y+
00E2 2990 ld R2,y+
00E4 .dbline 0 ; func end
00E4 1895 reti
00E6 .dbend
.area vector(rom, abs)
.org 28
001C 0C947300 jmp _Int6
.area text(rom, con, rel)
00E6 .dbfile E:\ICCAVR\project\AVRMEG~3\icc\006-INT-LED\main.c
00E6 .dbfunc e Int6 _Int6 fV
00E6 ; i -> R16,R17
.even
00E6 _Int6::
00E6 2A92 st -y,R2
00E8 3A92 st -y,R3
00EA 0A93 st -y,R16
00EC 1A93 st -y,R17
00EE 8A93 st -y,R24
00F0 2FB6 in R2,0x3f
00F2 2A92 st -y,R2
00F4 .dbline -1
00F4 .dbline 98
00F4 ; }
00F4 ;
00F4 ; /*外部中断INT4,下降沿触发*/
00F4 ; #pragma interrupt_handler Int6: 8
00F4 ; void Int6(void) {
00F4 .dbline 101
00F4 ; unsigned int i;
00F4 ;
00F4 ; i = 1000; /*防按键颤动代码*/
00F4 08EE ldi R16,1000
00F6 13E0 ldi R17,3
00F8 03C0 xjmp L28
00FA L27:
00FA .dbline 102
00FA ; while (i --) {
00FA .dbline 103
00FA ; if ((PINE & (1 << PE6)) != 0) { /*按键是否为低电平*/
00FA 0E9B sbis 0x1,6
00FC 01C0 rjmp L30
00FE .dbline 103
00FE .dbline 104
00FE ; return ;
00FE 0BC0 xjmp L26
0100 L30:
0100 .dbline 106
0100 L28:
0100 .dbline 102
0100 1801 movw R2,R16
0102 0150 subi R16,1
0104 1040 sbci R17,0
0106 2220 tst R2
0108 C1F7 brne L27
010A 3320 tst R3
010C B1F7 brne L27
010E X2:
010E .dbline 108
010E ; }
010E ; }
010E ;
010E ; PORTB ^= (1 << PB6); /*PB1电平取反*/
010E 80E4 ldi R24,64
0110 28B2 in R2,0x18
0112 2826 eor R2,R24
0114 28BA out 0x18,R2
0116 .dbline -2
0116 L26:
0116 2990 ld R2,y+
0118 2FBE out 0x3f,R2
011A 8991 ld R24,y+
011C 1991 ld R17,y+
011E 0991 ld R16,y+
0120 3990 ld R3,y+
0122 2990 ld R2,y+
0124 .dbline 0 ; func end
0124 1895 reti
0126 .dbsym r i 16 i
0126 .dbend
.area vector(rom, abs)
.org 32
0020 0C949300 jmp _Int7
.area text(rom, con, rel)
0126 .dbfile E:\ICCAVR\project\AVRMEG~3\icc\006-INT-LED\main.c
0126 .dbfunc e Int7 _Int7 fV
0126 ; i -> R16,R17
.even
0126 _Int7::
0126 2A92 st -y,R2
0128 3A92 st -y,R3
012A 0A93 st -y,R16
012C 1A93 st -y,R17
012E 8A93 st -y,R24
0130 9A93 st -y,R25
0132 2FB6 in R2,0x3f
0134 2A92 st -y,R2
0136 .dbline -1
0136 .dbline 113
0136 ; }
0136 ;
0136 ; /*外部中断INT4,上升沿触发*/
0136 ; #pragma interrupt_handler Int7: 9
0136 ; void Int7(void) {
0136 .dbline 116
0136 ; unsigned int i;
0136 ;
0136 ; i = 1000; /*防按键颤动代码*/
0136 08EE ldi R16,1000
0138 13E0 ldi R17,3
013A 03C0 xjmp L34
013C L33:
013C .dbline 117
013C ; while (i --) {
013C .dbline 118
013C ; if ((PINE & (1 << PE7)) == 0) { /*按键是否为高电平*/
013C 0F99 sbic 0x1,7
013E 01C0 rjmp L36
0140 .dbline 118
0140 .dbline 119
0140 ; return ;
0140 0EC0 xjmp L32
0142 L36:
0142 .dbline 121
0142 L34:
0142 .dbline 117
0142 1801 movw R2,R16
0144 0150 subi R16,1
0146 1040 sbci R17,0
0148 2220 tst R2
014A C1F7 brne L33
014C 3320 tst R3
014E B1F7 brne L33
0150 X3:
0150 .dbline 123
0150 ; }
0150 ; }
0150 ;
0150 ; PORTB ^= (1 << PB7); /*PB1电平取反*/
0150 80E8 ldi R24,128
0152 90E0 ldi R25,0
0154 28B2 in R2,0x18
0156 3324 clr R3
0158 2826 eor R2,R24
015A 3926 eor R3,R25
015C 28BA out 0x18,R2
015E .dbline -2
015E L32:
015E 2990 ld R2,y+
0160 2FBE out 0x3f,R2
0162 9991 ld R25,y+
0164 8991 ld R24,y+
0166 1991 ld R17,y+
0168 0991 ld R16,y+
016A 3990 ld R3,y+
016C 2990 ld R2,y+
016E .dbline 0 ; func end
016E 1895 reti
0170 .dbsym r i 16 i
0170 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -