⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iic_test.lis

📁 单片机为meg88
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -