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

📄 time.lis

📁 ATmegal128的混合中断编程
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0158 0E940000          xcall mod8u
 015C 802F              mov R24,R16
 015E 805D              subi R24,208    ; addi 48
 0160 8083              std z+0,R24
 0162                   .dbline 85
 0162 1AE0              ldi R17,10
 0164 042F              mov R16,R20
 0166 0E940000          xcall div8u
 016A 402F              mov R20,R16
 016C                   .dbline 86
 016C           L27:
 016C                   .dbline 82
 016C 6395              inc R22
 016E           L29:
 016E                   .dbline 82
 016E 6230              cpi R22,2
 0170 38F3              brlo L26
 0172                   .dbline 87
 0172           ;          {
 0172           ;           time[7-i]=temp%10+0x30;
 0172           ;               temp=temp/10;
 0172           ;          }
 0172           ;       time[8]=0;
 0172 2224              clr R2
 0174 20920A00          sts _time+8,R2
 0178                   .dbline 88
 0178           ;       cls(0,3,1,8);
 0178 88E0              ldi R24,8
 017A 8A83              std y+2,R24
 017C 81E0              ldi R24,1
 017E 8883              std y+0,R24
 0180 23E0              ldi R18,3
 0182 30E0              ldi R19,0
 0184 0027              clr R16
 0186 1127              clr R17
 0188 0E940000          xcall _cls
 018C                   .dbline 89
 018C           ;       asc_tran(4,52,time);
 018C 80E0              ldi R24,<_time
 018E 90E0              ldi R25,>_time
 0190 8883              std y+0,R24
 0192 9983              std y+1,R25
 0194 24E3              ldi R18,52
 0196 04E0              ldi R16,4
 0198 0E940000          xcall _asc_tran
 019C                   .dbline -2
 019C                   .dbline 90
 019C           ;    }
 019C           L15:
 019C 2396              adiw R28,3
 019E 0E940000          xcall pop_gset2
 01A2                   .dbline 0 ; func end
 01A2 0895              ret
 01A4                   .dbsym r temp 20 c
 01A4                   .dbsym r i 22 c
 01A4                   .dbend
 01A4                   .dbfunc e timer2_init _timer2_init fV
                        .even
 01A4           _timer2_init::
 01A4                   .dbline -1
 01A4                   .dbline 92
 01A4           ; void timer2_init(void)
 01A4           ; {
 01A4                   .dbline 93
 01A4           ;  TCCR2 = 0x00; 
 01A4 2224              clr R2
 01A6 25BC              out 0x25,R2
 01A8                   .dbline 94
 01A8           ;  TCNT2 = 0xe1; 
 01A8 81EE              ldi R24,225
 01AA 84BD              out 0x24,R24
 01AC                   .dbline 95
 01AC           ;  TCCR2 = 0x03;
 01AC 83E0              ldi R24,3
 01AE 85BD              out 0x25,R24
 01B0                   .dbline -2
 01B0                   .dbline 96
 01B0           ; }
 01B0           L31:
 01B0                   .dbline 0 ; func end
 01B0 0895              ret
 01B2                   .dbend
                        .area vector(rom, abs)
                        .org 40
 0028 0C94D900          jmp _timer2_ovf_isr
                        .area text(rom, con, rel)
 01B2                   .dbfile C:\work\mega128\mix_exp\time.c
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\work\mega128\mix_exp\time.c
 0000           L33:
 0000                   .blkb 2
                        .area text(rom, con, rel)
 01B2                   .dbfile C:\work\mega128\mix_exp\time.c
 01B2                   .dbfunc e timer2_ovf_isr _timer2_ovf_isr fV
 01B2                   .dbsym s i L33 i
                        .even
 01B2           _timer2_ovf_isr::
 01B2 2A92              st -y,R2
 01B4 3A92              st -y,R3
 01B6 8A93              st -y,R24
 01B8 9A93              st -y,R25
 01BA EA93              st -y,R30
 01BC 2FB6              in R2,0x3f
 01BE 2A92              st -y,R2
 01C0                   .dbline -1
 01C0                   .dbline 99
 01C0           ; #pragma interrupt_handler timer2_ovf_isr:11
 01C0           ; void timer2_ovf_isr(void)
 01C0           ; {
 01C0                   .dbline 101
 01C0           ;   static unsigned int i;
 01C0           ;   TCNT2 = 0xe1; //reload counter value
 01C0 81EE              ldi R24,225
 01C2 84BD              out 0x24,R24
 01C4                   .dbline 102
 01C4           ;   i++;
 01C4 80910000          lds R24,L33
 01C8 90910100          lds R25,L33+1
 01CC 0196              adiw R24,1
 01CE 90930100          sts L33+1,R25
 01D2 80930000          sts L33,R24
 01D6                   .dbline 103
 01D6           ;   if(i<800)
 01D6 8032              cpi R24,32
 01D8 E3E0              ldi R30,3
 01DA 9E07              cpc R25,R30
 01DC 38F4              brsh L34
 01DE                   .dbline 104
 01DE           ;      {
 01DE                   .dbline 105
 01DE           ;       PORTB^=0x80;
 01DE 80E8              ldi R24,128
 01E0 90E0              ldi R25,0
 01E2 28B2              in R2,0x18
 01E4 3324              clr R3
 01E6 2826              eor R2,R24
 01E8 3926              eor R3,R25
 01EA 28BA              out 0x18,R2
 01EC                   .dbline 106
 01EC           ;        }
 01EC           L34:
 01EC                   .dbline 107
 01EC 80E4              ldi R24,1600
 01EE 96E0              ldi R25,6
 01F0 20900000          lds R2,L33
 01F4 30900100          lds R3,L33+1
 01F8 8215              cp R24,R2
 01FA 9305              cpc R25,R3
 01FC 30F4              brsh L36
 01FE                   .dbline 108
 01FE 2224              clr R2
 0200 3324              clr R3
 0202 30920100          sts L33+1,R3
 0206 20920000          sts L33,R2
 020A           L36:
 020A                   .dbline -2
 020A                   .dbline 109
 020A           ;   if(i>1600)
 020A           ;       i=0;            
 020A           ; }   
 020A           L32:
 020A 2990              ld R2,y+
 020C 2FBE              out 0x3f,R2
 020E E991              ld R30,y+
 0210 9991              ld R25,y+
 0212 8991              ld R24,y+
 0214 3990              ld R3,y+
 0216 2990              ld R2,y+
 0218                   .dbline 0 ; func end
 0218 1895              reti
 021A                   .dbend
 021A                   .dbfunc e timecal _timecal fV
 021A           ;           step -> R10
 021A           ;           temp -> R22
                        .even
 021A           _timecal::
 021A 0E940000          xcall push_gset5
 021E 2397              sbiw R28,3
 0220                   .dbline -1
 0220                   .dbline 111
 0220           ; void timecal(void)
 0220           ;    {
 0220                   .dbline 113
 0220           ;     unsigned char temp,step;
 0220           ;       ocmj_write(0xf4);
 0220 04EF              ldi R16,244
 0222 0E940000          xcall _ocmj_write
 0226                   .dbline 114
 0226           ;       hz_tran(2,1,"输入时间");
 0226 80E0              ldi R24,<L39
 0228 90E0              ldi R25,>L39
 022A 8883              std y+0,R24
 022C 9983              std y+1,R25
 022E 21E0              ldi R18,1
 0230 02E0              ldi R16,2
 0232 0E940000          xcall _hz_tran
 0236                   .dbline 115
 0236           ;       hz_tran(1,2,"按");
 0236 80E0              ldi R24,<L40
 0238 90E0              ldi R25,>L40
 023A 8883              std y+0,R24
 023C 9983              std y+1,R25
 023E 22E0              ldi R18,2
 0240 01E0              ldi R16,1
 0242 0E940000          xcall _hz_tran
 0246                   .dbline 116
 0246           ;       asc_tran(4,36,"SHIFT");
 0246 80E0              ldi R24,<L41
 0248 90E0              ldi R25,>L41
 024A 8883              std y+0,R24
 024C 9983              std y+1,R25
 024E 24E2              ldi R18,36
 0250 04E0              ldi R16,4
 0252 0E940000          xcall _asc_tran
 0256                   .dbline 117
 0256           ;       hz_tran(5,2,"确定");
 0256 80E0              ldi R24,<L42
 0258 90E0              ldi R25,>L42
 025A 8883              std y+0,R24
 025C 9983              std y+1,R25
 025E 22E0              ldi R18,2
 0260 05E0              ldi R16,5
 0262 0E940000          xcall _hz_tran
 0266                   .dbline 118
 0266           ;       asc_tran(4,52,"__:__:__");
 0266 80E0              ldi R24,<L43
 0268 90E0              ldi R25,>L43
 026A 8883              std y+0,R24
 026C 9983              std y+1,R25
 026E 24E3              ldi R18,52
 0270 04E0              ldi R16,4
 0272 0E940000          xcall _asc_tran
 0276                   .dbline 119
 0276           ;       for(temp=0;temp<9;temp++)
 0276 6627              clr R22
 0278 09C0              xjmp L47
 027A           L44:
 027A                   .dbline 120
 027A                   .dbline 121
 027A 80E0              ldi R24,<_time
 027C 90E0              ldi R25,>_time
 027E E62F              mov R30,R22
 0280 FF27              clr R31
 0282 E80F              add R30,R24
 0284 F91F              adc R31,R25
 0286 8FE5              ldi R24,95
 0288 8083              std z+0,R24
 028A                   .dbline 122
 028A           L45:
 028A                   .dbline 119
 028A 6395              inc R22
 028C           L47:
 028C                   .dbline 119
 028C 6930              cpi R22,9
 028E A8F3              brlo L44
 0290                   .dbline 123
 0290           ;          {
 0290           ;           time[temp]='_';
 0290           ;          }
 0290           ;       time[2]=':';
 0290 8AE3              ldi R24,58
 0292 80930400          sts _time+2,R24
 0296                   .dbline 124
 0296           ;       time[5]=':';
 0296 80930700          sts _time+5,R24
 029A                   .dbline 125
 029A           ;       time[8]=0;   
 029A 2224              clr R2
 029C 20920A00          sts _time+8,R2
 02A0                   .dbline 126
 02A0           ;       step=0;
 02A0 AA24              clr R10
 02A2           L51:
 02A2                   .dbline 128
 02A2           ;       do
 02A2           ;         {
 02A2                   .dbline 129
 02A2           ;          temp=keypad();
 02A2 0E940000          xcall _keypad
 02A6 602F              mov R22,R16
 02A8                   .dbline 130
 02A8           ;          if(((temp&0x7f)!=0x7f)&((temp&0x7f)<0x0a))
 02A8 862F              mov R24,R22
 02AA 8F77              andi R24,127
 02AC 8F37              cpi R24,127
 02AE 21F0              breq L56
 02B0 81E0              ldi R24,1
 02B2 90E0              ldi R25,0
 02B4 7C01              movw R14,R24
 02B6 02C0              xjmp L57
 02B8           L56:
 02B8 EE24              clr R14
 02BA FF24              clr R15
 02BC           L57:
 02BC 862F              mov R24,R22
 02BE 8F77              andi R24,127
 02C0 8A30              cpi R24,10
 02C2 20F4              brsh L58
 02C4 81E0              ldi R24,1
 02C6 90E0              ldi R25,0
 02C8 6C01              movw R12,R24
 02CA 02C0              xjmp L59
 02CC           L58:
 02CC CC24              clr R12
 02CE DD24              clr R13
 02D0           L59:
 02D0 1701              movw R2,R14
 02D2 2C20              and R2,R12
 02D4 3D20              and R3,R13
 02D6 2220              tst R2
 02D8 19F4              brne X0
 02DA 3320              tst R3
 02DC 09F4              brne X3
 02DE A1C0              xjmp L54
 02E0           X3:
 02E0           X0:
 02E0                   .dbline 131
 02E0           ;             {
 02E0                   .dbline 132
 02E0           ;                  switch (step)
 02E0 4A2D              mov R20,R10
 02E2 5527              clr R21
 02E4 4030              cpi R20,0
 02E6 4507              cpc R20,R21
 02E8 C9F0              breq L63
 02EA           X1:
 02EA 4130              cpi R20,1
 02EC E0E0              ldi R30,0
 02EE 5E07              cpc R21,R30
 02F0 11F1              breq L66
 02F2 4230              cpi R20,2
 02F4 E0E0              ldi R30,0
 02F6 5E07              cpc R21,R30
 02F8 09F4              brne X4
 02FA 39C0              xjmp L73
 02FC           X4:
 02FC 4330              cpi R20,3
 02FE E0E0              ldi R30,0
 0300 5E07              cpc R21,R30
 0302 09F4              brne X5
 0304 41C0              xjmp L77
 0306           X5:
 0306 4430              cpi R20,4
 0308 E0E0              ldi R30,0
 030A 5E07              cpc R21,R30

⌨️ 快捷键说明

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