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

📄 iic_test.lis

📁 单片机为meg88
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0118           L12:
 0118                   .dbline 90
 0118           ;       g_ucKeyPressedCnt = s_ucKeyPressCnt;
 0118 20900300          lds R2,L9
 011C 20920000          sts _g_ucKeyPressedCnt,R2
 0120                   .dbline -2
 0120           L7:
 0120                   .dbline 0 ; func end
 0120 0895              ret
 0122                   .dbend
                        .area data(ram, con, rel)
 0006                   .dbfile C:\DOCUME~1\fengzm.POWERMAXTECH\桌面\MCU2\iic_test.c
 0006           L24:
 0006                   .blkb 2
                        .area idata
 0006 0000              .word 0
                        .area data(ram, con, rel)
 0008                   .dbfile C:\DOCUME~1\fengzm.POWERMAXTECH\桌面\MCU2\iic_test.c
 0008           L25:
 0008                   .blkb 1
                        .area idata
 0008 04                .byte 4
                        .area data(ram, con, rel)
 0009                   .dbfile C:\DOCUME~1\fengzm.POWERMAXTECH\桌面\MCU2\iic_test.c
                        .area text(rom, con, rel)
 0122                   .dbfile C:\DOCUME~1\fengzm.POWERMAXTECH\桌面\MCU2\iic_test.c
 0122                   .dbfunc e KeyPressedTask _KeyPressedTask fV
 0122                   .dbsym s s_ucLedFlashCnt L25 c
 0122                   .dbsym s s_unLedFlashTimeDly L24 i
                        .even
 0122           _KeyPressedTask::
 0122 2197              sbiw R28,1
 0124                   .dbline -1
 0124                   .dbline 94
 0124           ; }
 0124           ; 
 0124           ; void KeyPressedTask(void)
 0124           ; {
 0124                   .dbline 97
 0124           ;       static uint  s_unLedFlashTimeDly = 0;
 0124           ;       static uchar s_ucLedFlashCnt = 4;
 0124           ;       if(g_ucKeyPressedCnt == 1)                                      //press the first
 0124 80910000          lds R24,_g_ucKeyPressedCnt
 0128 8130              cpi R24,1
 012A 39F4              brne L26
 012C                   .dbline 98
 012C           ;               IICSendStr(0x60,g_ucTorchIICData,2);
 012C 82E0              ldi R24,2
 012E 8883              std y+0,R24
 0130 20E0              ldi R18,<_g_ucTorchIICData
 0132 30E0              ldi R19,>_g_ucTorchIICData
 0134 00E6              ldi R16,96
 0136 00D0              rcall _IICSendStr
 0138 61C0              rjmp L27
 013A           L26:
 013A                   .dbline 99
 013A           ;       else if(g_ucKeyPressedCnt == 2)
 013A 80910000          lds R24,_g_ucKeyPressedCnt
 013E 8230              cpi R24,2
 0140 39F4              brne L28
 0142                   .dbline 100
 0142           ;               IICSendStr(0x60,g_ucLightOFFData,2);
 0142 82E0              ldi R24,2
 0144 8883              std y+0,R24
 0146 20E0              ldi R18,<_g_ucLightOFFData
 0148 30E0              ldi R19,>_g_ucLightOFFData
 014A 00E6              ldi R16,96
 014C 00D0              rcall _IICSendStr
 014E 56C0              rjmp L29
 0150           L28:
 0150                   .dbline 101
 0150           ;       else if((g_ucKeyPressedCnt == 3) && (!g_ucFlashEnd))            //press the second
 0150 80910000          lds R24,_g_ucKeyPressedCnt
 0154 8330              cpi R24,3
 0156 09F0              breq X0
 0158 51C0              rjmp L30
 015A           X0:
 015A 20900000          lds R2,_g_ucFlashEnd
 015E 2220              tst R2
 0160 09F0              breq X1
 0162 4CC0              rjmp L30
 0164           X1:
 0164                   .dbline 102
 0164           ;       {
 0164                   .dbline 103
 0164           ;               if(s_ucLedFlashCnt > 0)
 0164 2224              clr R2
 0166 30900800          lds R3,L25
 016A 2314              cp R2,R3
 016C 78F5              brsh L32
 016E                   .dbline 104
 016E           ;               {
 016E                   .dbline 105
 016E           ;                       s_unLedFlashTimeDly++;
 016E 80910600          lds R24,L24
 0172 90910700          lds R25,L24+1
 0176 0196              adiw R24,1
 0178 90930700          sts L24+1,R25
 017C 80930600          sts L24,R24
 0180                   .dbline 106
 0180           ;                       if(s_unLedFlashTimeDly < 50)
 0180 8233              cpi R24,50
 0182 E0E0              ldi R30,0
 0184 9E07              cpc R25,R30
 0186 38F4              brsh L34
 0188                   .dbline 107
 0188           ;                               IICSendStr(0x60,g_ucIledIICData,2);             //led is on
 0188 82E0              ldi R24,2
 018A 8883              std y+0,R24
 018C 20E0              ldi R18,<_g_ucIledIICData
 018E 30E0              ldi R19,>_g_ucIledIICData
 0190 00E6              ldi R16,96
 0192 00D0              rcall _IICSendStr
 0194 33C0              rjmp L33
 0196           L34:
 0196                   .dbline 108
 0196           ;                       else if(s_unLedFlashTimeDly < 100)
 0196 80910600          lds R24,L24
 019A 90910700          lds R25,L24+1
 019E 8436              cpi R24,100
 01A0 E0E0              ldi R30,0
 01A2 9E07              cpc R25,R30
 01A4 38F4              brsh L36
 01A6                   .dbline 109
 01A6           ;                               IICSendStr(0x60,g_ucLightOFFData,2);    //led is off
 01A6 82E0              ldi R24,2
 01A8 8883              std y+0,R24
 01AA 20E0              ldi R18,<_g_ucLightOFFData
 01AC 30E0              ldi R19,>_g_ucLightOFFData
 01AE 00E6              ldi R16,96
 01B0 00D0              rcall _IICSendStr
 01B2 24C0              rjmp L33
 01B4           L36:
 01B4                   .dbline 111
 01B4           ;                       else
 01B4           ;                       {
 01B4                   .dbline 112
 01B4           ;                               s_unLedFlashTimeDly = 0;
 01B4 2224              clr R2
 01B6 3324              clr R3
 01B8 30920700          sts L24+1,R3
 01BC 20920600          sts L24,R2
 01C0                   .dbline 113
 01C0           ;                               s_ucLedFlashCnt--;
 01C0 80910800          lds R24,L25
 01C4 8150              subi R24,1
 01C6 80930800          sts L25,R24
 01CA                   .dbline 114
 01CA           ;                       }
 01CA                   .dbline 115
 01CA           ;               }
 01CA 18C0              rjmp L33
 01CC           L32:
 01CC                   .dbline 117
 01CC           ;               else
 01CC           ;               {
 01CC                   .dbline 118
 01CC           ;                       s_ucLedFlashCnt = 4;
 01CC 84E0              ldi R24,4
 01CE 80930800          sts L25,R24
 01D2                   .dbline 119
 01D2           ;                       g_ucFlashEnd = true;
 01D2 8FEF              ldi R24,255
 01D4 80930000          sts _g_ucFlashEnd,R24
 01D8                   .dbline 120
 01D8           ;                       IICSendStr(0x60,g_ucFlashEnIICData,2);          //enalble flash
 01D8 82E0              ldi R24,2
 01DA 8883              std y+0,R24
 01DC 20E0              ldi R18,<_g_ucFlashEnIICData
 01DE 30E0              ldi R19,>_g_ucFlashEnIICData
 01E0 00E6              ldi R16,96
 01E2 00D0              rcall _IICSendStr
 01E4                   .dbline 121
 01E4           ;                       IICSendStr(0x60,g_ucFlashTimerIICData,2);
 01E4 82E0              ldi R24,2
 01E6 8883              std y+0,R24
 01E8 20E0              ldi R18,<_g_ucFlashTimerIICData
 01EA 30E0              ldi R19,>_g_ucFlashTimerIICData
 01EC 00E6              ldi R16,96
 01EE 00D0              rcall _IICSendStr
 01F0                   .dbline 122
 01F0           ;                       IICSendStr(0x60,g_ucFlashIICData,2);            //flash is on
 01F0 82E0              ldi R24,2
 01F2 8883              std y+0,R24
 01F4 20E0              ldi R18,<_g_ucFlashIICData
 01F6 30E0              ldi R19,>_g_ucFlashIICData
 01F8 00E6              ldi R16,96
 01FA 00D0              rcall _IICSendStr
 01FC                   .dbline 123
 01FC           ;               }
 01FC           L33:
 01FC                   .dbline 124
 01FC           ;       }
 01FC           L30:
 01FC           L29:
 01FC           L27:
 01FC                   .dbline -2
 01FC           L23:
 01FC 2196              adiw R28,1
 01FE                   .dbline 0 ; func end
 01FE 0895              ret
 0200                   .dbend
 0200                   .dbfunc e init_devices _init_devices fV
                        .even
 0200           _init_devices::
 0200                   .dbline -1
 0200                   .dbline 129
 0200           ; }
 0200           ; 
 0200           ; //call this routine to initialize all peripherals
 0200           ; void init_devices(void)
 0200           ; {
 0200                   .dbline 131
 0200           ; //stop errant interrupts until set up
 0200           ;       CLI(); //disable all interrupts
 0200 F894              cli
 0202                   .dbline 132
 0202           ;       port_init();
 0202 FEDE              rcall _port_init
 0204                   .dbline 133
 0204           ;       twi_init();
 0204 00D0              rcall _twi_init
 0206                   .dbline 134
 0206           ;       timer0_init();
 0206 07DF              rcall _timer0_init
 0208                   .dbline 136
 0208           ; 
 0208           ;       MCUCR = 0x00;
 0208 2224              clr R2
 020A 25BE              out 0x35,R2
 020C                   .dbline 137
 020C           ;       EICRA = 0x0A;   //extended ext ints
 020C 8AE0              ldi R24,10
 020E 80936900          sts 105,R24
 0212                   .dbline 138
 0212           ;       EIMSK = 0x03;
 0212 83E0              ldi R24,3
 0214 8DBB              out 0x1d,R24
 0216                   .dbline 140
 0216           ; 
 0216           ;       TIMSK0 = 0x01;  //timer 0 interrupt sources
 0216 81E0              ldi R24,1
 0218 80936E00          sts 110,R24
 021C                   .dbline 141
 021C           ;       TIMSK1 = 0x21;  //timer 1 interrupt sources
 021C 81E2              ldi R24,33
 021E 80936F00          sts 111,R24
 0222                   .dbline 142
 0222           ;       TIMSK2 = 0x01;  //timer 2 interrupt sources
 0222 81E0              ldi R24,1
 0224 80937000          sts 112,R24
 0228                   .dbline 144
 0228           ; 
 0228           ;       PCMSK0 = 0x02;  //pin change mask 0                     //允许外部电平中断
 0228 82E0              ldi R24,2
 022A 80936B00          sts 107,R24
 022E                   .dbline 145
 022E           ;       PCMSK1 = 0x02;  //pin change mask 1
 022E 80936C00          sts 108,R24
 0232                   .dbline 146
 0232           ;       PCMSK2 = 0x00;  //pin change mask
 0232 20926D00          sts 109,R2
 0236                   .dbline 147
 0236           ;       PCICR  = 0x03;  //pin change enable
 0236 83E0              ldi R24,3
 0238 80936800          sts 104,R24
 023C                   .dbline 148
 023C           ;       PRR    = 0x00;  //power controller
 023C 20926400          sts 100,R2
 0240                   .dbline 149
 0240           ;       SEI(); //re-enable interrupts
 0240 7894              sei
 0242                   .dbline -2
 0242           L38:
 0242                   .dbline 0 ; func end
 0242 0895              ret
 0244                   .dbend
 0244                   .dbfunc e main _main fV
                        .even
 0244           _main::
 0244                   .dbline -1
 0244                   .dbline 154
 0244           ; //all peripherals are now initialized
 0244           ; }
 0244           ; 
 0244           ; void main(void)
 0244           ; {
 0244                   .dbline 155
 0244           ;       init_devices();
 0244 DDDF              rcall _init_devices
 0246 09C0              rjmp L41
 0248           L40:
 0248                   .dbline 158
 0248           ; 
 0248           ;       while(1)
 0248           ;       {
 0248                   .dbline 159
 0248           ;               if(g_ucLoopTimeFlag)
 0248 20900000          lds R2,_g_ucLoopTimeFlag
 024C 2220              tst R2
 024E 29F0              breq L43
 0250                   .dbline 160
 0250           ;               {
 0250                   .dbline 161
 0250           ;                       g_ucLoopTimeFlag = false;
 0250 2224              clr R2
 0252 20920000          sts _g_ucLoopTimeFlag,R2
 0256                   .dbline 163
 0256           ; //                    disablechip();
 0256           ;                       KeyScanTask();                                  //key scan
 0256 11DF              rcall _KeyScanTask
 0258                   .dbline 164
 0258           ;                       KeyPressedTask();                               //key process
 0258 64DF              rcall _KeyPressedTask
 025A                   .dbline 165
 025A           ;               }
 025A           L43:
 025A                   .dbline 166
 025A           L41:
 025A                   .dbline 157
 025A F6CF              rjmp L40
 025C           X2:
 025C                   .dbline -2
 025C           L39:
 025C                   .dbline 0 ; func end
 025C 0895              ret
 025E                   .dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -