📄 iic_test.lis
字号:
.module iic_test.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\fengzm.POWERMAXTECH\桌面\MCU2\iic_test.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 14
0000 ; //ICC-AVR application builder : 2006-10-16 下午 09:35:42
0000 ; // Target : M88
0000 ; // Crystal: 20.0000Mhz
0000 ;
0000 ; #include "common.h"
0000 ;
0000 ;
0000 ; void KeyScanTask1(void);
0000 ; void KeyScanTask2(void);
0000 ; void KeyPressedTask1(void);
0000 ; void KeyPressedTask2(void);
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 15
0000 ; PORTB = 0x01; //只用PB0口,并且是输入口
0000 81E0 ldi R24,1
0002 85B9 out 0x5,R24
0004 .dbline 16
0004 ; DDRB = 0xFE; //0是输入
0004 8EEF ldi R24,254
0006 84B9 out 0x4,R24
0008 .dbline 17
0008 ; PORTC = 0x08; //0000 1000// PORTC |= 0x08; PORTC &= ~0x08;
0008 88E0 ldi R24,8
000A 88B9 out 0x8,R24
000C .dbline 18
000C ; DDRC = 0x08; //1是输出 0000 1000
000C 87B9 out 0x7,R24
000E .dbline 19
000E ; PORTD = 0x00;
000E 2224 clr R2
0010 2BB8 out 0xb,R2
0012 .dbline 20
0012 ; DDRD = 0x00;
0012 2AB8 out 0xa,R2
0014 .dbline -2
0014 L1:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbend
0016 .dbfunc e timer0_init _timer0_init fV
.even
0016 _timer0_init::
0016 .dbline -1
0016 .dbline 28
0016 ; }
0016 ;
0016 ; //TIMER0 initialize - prescale:64
0016 ; // WGM: Normal
0016 ; // desired value: 1mSec
0016 ; // actual value: 1.000mSec (0.0%)
0016 ; void timer0_init(void)
0016 ; {
0016 .dbline 29
0016 ; TCCR0B = 0x00; //stop
0016 2224 clr R2
0018 25BC out 0x25,R2
001A .dbline 30
001A ; TCNT0 = 0x83; //set count
001A 83E8 ldi R24,131
001C 86BD out 0x26,R24
001E .dbline 31
001E ; TCCR0A = 0x00;
001E 24BC out 0x24,R2
0020 .dbline 32
0020 ; TCCR0B = 0x03; //start timer
0020 83E0 ldi R24,3
0022 85BD out 0x25,R24
0024 .dbline -2
0024 L2:
0024 .dbline 0 ; func end
0024 0895 ret
0026 .dbend
.area vector(rom, abs)
.org 32
0020 13C0 rjmp _timer0_ovf_isr
.area text(rom, con, rel)
0026 .dbfile C:\DOCUME~1\fengzm.POWERMAXTECH\桌面\MCU2\iic_test.c
.area data(ram, con, rel)
0000 .dbfile C:\DOCUME~1\fengzm.POWERMAXTECH\桌面\MCU2\iic_test.c
0000 L4:
0000 .blkb 2
.area idata
0000 0000 .word 0
.area data(ram, con, rel)
0002 .dbfile C:\DOCUME~1\fengzm.POWERMAXTECH\桌面\MCU2\iic_test.c
.area text(rom, con, rel)
0026 .dbfile C:\DOCUME~1\fengzm.POWERMAXTECH\桌面\MCU2\iic_test.c
0026 .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
0026 .dbsym s s_unLoopTimeCnt L4 i
.even
0026 _timer0_ovf_isr::
0026 2A92 st -y,R2
0028 3A92 st -y,R3
002A 8A93 st -y,R24
002C 9A93 st -y,R25
002E 2FB6 in R2,0x3f
0030 2A92 st -y,R2
0032 .dbline -1
0032 .dbline 38
0032 .dbline 41
0032 83E8 ldi R24,131
0034 86BD out 0x26,R24
0036 .dbline 42
0036 80910000 lds R24,L4
003A 90910100 lds R25,L4+1
003E 0196 adiw R24,1
0040 90930100 sts L4+1,R25
0044 80930000 sts L4,R24
0048 .dbline 43
0048 82E0 ldi R24,2
004A 90E0 ldi R25,0
004C 20900000 lds R2,L4
0050 30900100 lds R3,L4+1
0054 8215 cp R24,R2
0056 9305 cpc R25,R3
0058 48F4 brsh L5
005A .dbline 44
005A .dbline 45
005A 2224 clr R2
005C 3324 clr R3
005E 30920100 sts L4+1,R3
0062 20920000 sts L4,R2
0066 .dbline 46
0066 8FEF ldi R24,255
0068 80930000 sts _g_ucLoopTimeFlag,R24
006C .dbline 47
006C L5:
006C .dbline -2
006C L3:
006C 2990 ld R2,y+
006E 2FBE out 0x3f,R2
0070 9991 ld R25,y+
0072 8991 ld R24,y+
0074 3990 ld R3,y+
0076 2990 ld R2,y+
0078 .dbline 0 ; func end
0078 1895 reti
007A .dbend
.area data(ram, con, rel)
0002 .dbfile C:\DOCUME~1\fengzm.POWERMAXTECH\桌面\MCU2\iic_test.c
0002 L8:
0002 .blkb 1
.area idata
0002 00 .byte 0
.area data(ram, con, rel)
0003 .dbfile C:\DOCUME~1\fengzm.POWERMAXTECH\桌面\MCU2\iic_test.c
0003 L9:
0003 .blkb 1
.area idata
0003 00 .byte 0
.area data(ram, con, rel)
0004 .dbfile C:\DOCUME~1\fengzm.POWERMAXTECH\桌面\MCU2\iic_test.c
0004 L10:
0004 .blkb 2
.area idata
0004 0000 .word 0
.area data(ram, con, rel)
0006 .dbfile C:\DOCUME~1\fengzm.POWERMAXTECH\桌面\MCU2\iic_test.c
.area text(rom, con, rel)
007A .dbfile C:\DOCUME~1\fengzm.POWERMAXTECH\桌面\MCU2\iic_test.c
007A .dbfunc e KeyScanTask _KeyScanTask fV
007A .dbsym s s_undisabletime L10 i
007A .dbsym s s_ucKeyPressCnt L9 c
007A .dbsym s s_ucKeyDitheringCnt L8 c
.even
007A _KeyScanTask::
007A .dbline -1
007A .dbline 52
007A ; }
007A ;
007A ;
007A ; #pragma interrupt_handler timer0_ovf_isr:17 //TIMER0 has overflowed
007A ; void timer0_ovf_isr(void)
007A ; {
007A ; static uint s_unLoopTimeCnt = 0;
007A ;
007A ; TCNT0 = 0x83; //set count
007A ; s_unLoopTimeCnt++;
007A ; if(s_unLoopTimeCnt > 2)
007A ; {
007A ; s_unLoopTimeCnt = 0;
007A ; g_ucLoopTimeFlag = true;
007A ; }
007A ;
007A ; }
007A ;
007A ; void KeyScanTask(void)
007A ; {
007A .dbline 57
007A ; static uchar s_ucKeyDitheringCnt = 0; //avoid dithering
007A ; static uchar s_ucKeyPressCnt = 0; //count the sequence of the pressed key
007A ; static uint s_undisabletime = 0;
007A ;
007A ; if(PINB & 0x01) //if the input voltage is high
007A 189B sbis 0x3,0
007C 1AC0 rjmp L11
007E .dbline 58
007E ; {
007E .dbline 59
007E ; s_ucKeyDitheringCnt++;
007E 80910200 lds R24,L8
0082 8F5F subi R24,255 ; addi 1
0084 80930200 sts L8,R24
0088 .dbline 60
0088 ; if(s_ucKeyDitheringCnt > 5) //delay time 5x2=10ms;avoid dithering
0088 85E0 ldi R24,5
008A 20900200 lds R2,L8
008E 8215 cp R24,R2
0090 40F4 brsh L13
0092 .dbline 61
0092 ; {
0092 .dbline 62
0092 ; s_ucKeyDitheringCnt = 0;
0092 2224 clr R2
0094 20920200 sts L8,R2
0098 .dbline 63
0098 ; if(PINB & 0x01)
0098 189B sbis 0x3,0
009A 03C0 rjmp L15
009C .dbline 64
009C ; g_ucKeyPressed = true;
009C 8FEF ldi R24,255
009E 80930000 sts _g_ucKeyPressed,R24
00A2 L15:
00A2 .dbline 65
00A2 ; }
00A2 L13:
00A2 .dbline 66
00A2 ; s_undisabletime = 0;
00A2 2224 clr R2
00A4 3324 clr R3
00A6 30920500 sts L10+1,R3
00AA 20920400 sts L10,R2
00AE .dbline 67
00AE ; PORTC |= 0x08;
00AE 439A sbi 0x8,3
00B0 .dbline 68
00B0 ; }
00B0 33C0 rjmp L12
00B2 L11:
00B2 .dbline 70
00B2 ; else
00B2 ; {
00B2 .dbline 71
00B2 ; s_ucKeyDitheringCnt = 0;
00B2 2224 clr R2
00B4 20920200 sts L8,R2
00B8 .dbline 72
00B8 ; s_undisabletime++;
00B8 80910400 lds R24,L10
00BC 90910500 lds R25,L10+1
00C0 0196 adiw R24,1
00C2 90930500 sts L10+1,R25
00C6 80930400 sts L10,R24
00CA .dbline 73
00CA ; if(s_undisabletime > 30000)
00CA 80E3 ldi R24,30000
00CC 95E7 ldi R25,117
00CE 20900400 lds R2,L10
00D2 30900500 lds R3,L10+1
00D6 8215 cp R24,R2
00D8 9305 cpc R25,R3
00DA 38F4 brsh L17
00DC .dbline 74
00DC ; {
00DC .dbline 75
00DC ; s_undisabletime = 0;
00DC 2224 clr R2
00DE 3324 clr R3
00E0 30920500 sts L10+1,R3
00E4 20920400 sts L10,R2
00E8 .dbline 76
00E8 ; PORTC &= ~0x08;
00E8 4398 cbi 0x8,3
00EA .dbline 77
00EA ; }
00EA L17:
00EA .dbline 79
00EA ;
00EA ; if(g_ucKeyPressed)
00EA 20900000 lds R2,_g_ucKeyPressed
00EE 2220 tst R2
00F0 99F0 breq L19
00F2 .dbline 80
00F2 ; {
00F2 .dbline 81
00F2 ; s_ucKeyPressCnt++;
00F2 80910300 lds R24,L9
00F6 8F5F subi R24,255 ; addi 1
00F8 80930300 sts L9,R24
00FC .dbline 82
00FC ; if(s_ucKeyPressCnt > 3)
00FC 83E0 ldi R24,3
00FE 20900300 lds R2,L9
0102 8215 cp R24,R2
0104 30F4 brsh L21
0106 .dbline 83
0106 ; {
0106 .dbline 84
0106 ; s_ucKeyPressCnt = 1;
0106 81E0 ldi R24,1
0108 80930300 sts L9,R24
010C .dbline 85
010C ; g_ucFlashEnd = false;
010C 2224 clr R2
010E 20920000 sts _g_ucFlashEnd,R2
0112 .dbline 86
0112 ; }
0112 L21:
0112 .dbline 87
0112 ; g_ucKeyPressed = false;
0112 2224 clr R2
0114 20920000 sts _g_ucKeyPressed,R2
0118 .dbline 88
0118 ; }
0118 L19:
0118 .dbline 89
0118 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -