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

📄 rtc.lis

📁 AVRkaifashili.rar
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0000           L86:
 0000 0000              .byte 0,0
 0002 0000              .byte 0,0
 0004 0000              .byte 0,0
 0006 0000              .byte 0,0
 0008 0000              .byte 0,0
 000A 0000              .byte 0,0
 000C 0000              .byte 0,0
 000E 0000              .byte 0,0
 0010 00                .byte 0
 0011           L87:
 0011 0000              .byte 0,0
 0013 0000              .byte 0,0
 0015 0000              .byte 0,0
 0017 00                .byte 0
 0018           L88:
 0018 0000              .byte 0,0
 001A FF                .byte 255
                        .area text(rom, con, rel)
 0282                   .dbfile E:\张军\AVR\光盘内容\实例源文件\第十章程序\RTC.C
 0282                   .dbfunc e Key_Process _Key_Process fV
 0282           ;          temp3 -> y+27
 0282           ;          temp2 -> y+20
 0282           ;           Flag -> R22,R23
 0282           ;            Key -> R10
 0282           ;          temp1 -> y+3
 0282           ;              i -> R20
                        .even
 0282           _Key_Process::
 0282 00D0              rcall push_gset4
 0284 6E97              sbiw R28,30
 0286                   .dbline -1
 0286                   .dbline 218
 0286           ; 
 0286           ; //***************************按键处理程序**************************//
 0286           ; //说明:为简化程序设计,此程序不保证输入的时间数据的合理性。
 0286           ; void Key_Process(void)
 0286           ; {uchar temp1[17]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
 0286                   .dbline 218
 0286 80E0              ldi R24,<L86
 0288 90E0              ldi R25,>L86
 028A EC2F              mov R30,R28
 028C FD2F              mov R31,R29
 028E 3396              adiw R30,3
 0290 01E1              ldi R16,17
 0292 10E0              ldi R17,0
 0294 FA93              st -y,R31
 0296 EA93              st -y,R30
 0298 9A93              st -y,R25
 029A 8A93              st -y,R24
 029C 00D0              rcall asgncblk
 029E                   .dbline 220
 029E           ;   //输入数据格式依次为年、月、日、星期、小时和分钟
 029E           ;  uchar temp2[7]={0,0,0,0,0,0,0,};
 029E 80E0              ldi R24,<L87
 02A0 90E0              ldi R25,>L87
 02A2 EC2F              mov R30,R28
 02A4 FD2F              mov R31,R29
 02A6 7496              adiw R30,20
 02A8 07E0              ldi R16,7
 02AA 10E0              ldi R17,0
 02AC FA93              st -y,R31
 02AE EA93              st -y,R30
 02B0 9A93              st -y,R25
 02B2 8A93              st -y,R24
 02B4 00D0              rcall asgncblk
 02B6                   .dbline 221
 02B6           ;  uchar temp3[3]={0,0,0xff};
 02B6 80E0              ldi R24,<L88
 02B8 90E0              ldi R25,>L88
 02BA EC2F              mov R30,R28
 02BC FD2F              mov R31,R29
 02BE 7B96              adiw R30,27
 02C0 03E0              ldi R16,3
 02C2 10E0              ldi R17,0
 02C4 FA93              st -y,R31
 02C6 EA93              st -y,R30
 02C8 9A93              st -y,R25
 02CA 8A93              st -y,R24
 02CC 00D0              rcall asgncblk
 02CE                   .dbline 226
 02CE           ;   //输入数据格式依次为小时和分钟
 02CE           ;  uchar Key;
 02CE           ;  uchar *Flag;
 02CE           ;  uchar i;
 02CE           ;  Flag=temp1;
 02CE 6C2F              mov R22,R28
 02D0 7D2F              mov R23,R29
 02D2 6D5F              subi R22,253  ; offset = 3
 02D4 7F4F              sbci R23,255
 02D6                   .dbline 227
 02D6           ;  if(PIND!=0xff)
 02D6 80B3              in R24,0x10
 02D8 8F3F              cpi R24,255
 02DA 09F4              brne X2
 02DC C2C1              rjmp L89
 02DE           X2:
 02DE                   .dbline 228
 02DE           ;   {DelayMs(20);                        //延时去抖
 02DE                   .dbline 228
 02DE 04E1              ldi R16,20
 02E0 8FDE              rcall _DelayMs
 02E2                   .dbline 229
 02E2           ;    if(PIND!=0xff)
 02E2 80B3              in R24,0x10
 02E4 8F3F              cpi R24,255
 02E6 09F0              breq L91
 02E8                   .dbline 230
 02E8           ;    Key=PINB;
 02E8 A6B2              in R10,0x16
 02EA           L91:
 02EA                   .dbline 231
 02EA           ;    if(Key==0xfe)                       //"时间设置"键按下
 02EA 8A2D              mov R24,R10
 02EC 8E3F              cpi R24,254
 02EE 09F0              breq X3
 02F0 D7C0              rjmp L93
 02F2           X3:
 02F2                   .dbline 232
 02F2           ;     {temp1[0]|=0x80;                   //年高位设置提示
 02F2                   .dbline 232
 02F2 8B81              ldd R24,y+3
 02F4 8068              ori R24,128
 02F6 8B83              std y+3,R24
 02F8 A0C0              rjmp L96
 02FA           L95:
 02FA                   .dbline 234
 02FA           ;        while(!Enter_Flag)                //直到按下确定键方停止
 02FA           ;        {for(i=0;i<50;i++)
 02FA                   .dbline 234
 02FA 4427              clr R20
 02FC 06C0              rjmp L101
 02FE           L98:
 02FE                   .dbline 235
 02FE 0C2F              mov R16,R28
 0300 1D2F              mov R17,R29
 0302 0D5F              subi R16,253  ; offset = 3
 0304 1F4F              sbci R17,255
 0306 88DE              rcall _Display
 0308           L99:
 0308                   .dbline 234
 0308 4395              inc R20
 030A           L101:
 030A                   .dbline 234
 030A 4233              cpi R20,50
 030C C0F3              brlo L98
 030E                   .dbline 236
 030E           ;             Display(temp1);              //显示和延时
 030E           ;               Key=~PIND;
 030E A0B2              in R10,0x10
 0310 A094              com R10
 0312                   .dbline 237
 0312           ;               switch(Key)
 0312 CA2C              mov R12,R10
 0314 DD24              clr R13
 0316 8C2D              mov R24,R12
 0318 9D2D              mov R25,R13
 031A 8031              cpi R24,16
 031C E0E0              ldi R30,0
 031E 9E07              cpc R25,R30
 0320 09F4              brne X4
 0322 43C0              rjmp L111
 0324           X4:
 0324 80E1              ldi R24,16
 0326 8C15              cp R24,R12
 0328 9D05              cpc R25,R13
 032A 94F0              brlt L121
 032C           L120:
 032C 8C2D              mov R24,R12
 032E 9D2D              mov R25,R13
 0330 8430              cpi R24,4
 0332 E0E0              ldi R30,0
 0334 9E07              cpc R25,R30
 0336 01F1              breq L105
 0338 8430              cpi R24,4
 033A E0E0              ldi R30,0
 033C 9E07              cpc R25,R30
 033E 0CF4              brge X5
 0340 7CC0              rjmp L103
 0342           X5:
 0342           L122:
 0342 8C2D              mov R24,R12
 0344 9D2D              mov R25,R13
 0346 8830              cpi R24,8
 0348 E0E0              ldi R30,0
 034A 9E07              cpc R25,R30
 034C 09F1              breq L108
 034E 75C0              rjmp L103
 0350           L121:
 0350 8C2D              mov R24,R12
 0352 9D2D              mov R25,R13
 0354 8032              cpi R24,32
 0356 E0E0              ldi R30,0
 0358 9E07              cpc R25,R30
 035A 09F4              brne X6
 035C 4AC0              rjmp L115
 035E           X6:
 035E 8032              cpi R24,32
 0360 E0E0              ldi R30,0
 0362 9E07              cpc R25,R30
 0364 0CF4              brge X7
 0366 69C0              rjmp L103
 0368           X7:
 0368           L123:
 0368 8C2D              mov R24,R12
 036A 9D2D              mov R25,R13
 036C 8034              cpi R24,64
 036E E0E0              ldi R30,0
 0370 9E07              cpc R25,R30
 0372 09F4              brne X8
 0374 5FC0              rjmp L119
 0376           X8:
 0376 61C0              rjmp L103
 0378           X0:
 0378                   .dbline 238
 0378           ;                {case 0x04:                   //"+"键处理
 0378           L105:
 0378                   .dbline 239
 0378           ;                      (*Flag)++;
 0378 E62F              mov R30,R22
 037A F72F              mov R31,R23
 037C 8081              ldd R24,z+0
 037E 8F5F              subi R24,255    ; addi 1
 0380 8083              std z+0,R24
 0382                   .dbline 240
 0382           ;                          if(((*Flag)&0x7f)==10) *Flag=0|0x80;
 0382 8F77              andi R24,127
 0384 8A30              cpi R24,10
 0386 09F0              breq X9
 0388 58C0              rjmp L103
 038A           X9:
 038A                   .dbline 240
 038A 80E8              ldi R24,128
 038C 8083              std z+0,R24
 038E                   .dbline 241
 038E           ;                      break;
 038E 55C0              rjmp L103
 0390           L108:
 0390                   .dbline 243
 0390           ;                 case 0x08:                   //"-"键处理
 0390           ;                       if(((*Flag)&0x7f)==0)   *Flag=10|0x80; 
 0390 E62F              mov R30,R22
 0392 F72F              mov R31,R23
 0394 8081              ldd R24,z+0
 0396 8F77              andi R24,127
 0398 11F4              brne L109
 039A                   .dbline 243
 039A 8AE8              ldi R24,138
 039C 8083              std z+0,R24
 039E           L109:
 039E                   .dbline 244
 039E           ;                               (*Flag)--;
 039E E62F              mov R30,R22
 03A0 F72F              mov R31,R23
 03A2 8081              ldd R24,z+0
 03A4 8150              subi R24,1
 03A6 8083              std z+0,R24
 03A8                   .dbline 245
 03A8           ;                               break;
 03A8 48C0              rjmp L103
 03AA           L111:
 03AA                   .dbline 247
 03AA           ;                 case 0x10:                   //"下一位"键处理
 03AA           ;                       Flag++;
 03AA 6F5F              subi R22,255  ; offset = 1
 03AC 7F4F              sbci R23,255
 03AE                   .dbline 248
 03AE           ;                               (*(Flag-1))&=0x7f;     //上一位去掉小数点显示
 03AE 862F              mov R24,R22
 03B0 972F              mov R25,R23
 03B2 0197              sbiw R24,1
 03B4 E82F              mov R30,R24
 03B6 F92F              mov R31,R25
 03B8 8081              ldd R24,z+0
 03BA 8F77              andi R24,127
 03BC 8083              std z+0,R24
 03BE                   .dbline 249
 03BE           ;                               (*Flag)|=0x80;         //当前位加上小数点显示
 03BE E62F              mov R30,R22
 03C0 F72F              mov R31,R23
 03C2 8081              ldd R24,z+0
 03C4 8068              ori R24,128
 03C6 8083              std z+0,R24
 03C8                   .dbline 250
 03C8           ;                               if(Flag==temp1+13) 
 03C8 8C2F              mov R24,R28
 03CA 9D2F              mov R25,R29
 03CC 4096              adiw R24,16
 03CE E817              cp R30,R24
 03D0 F907              cpc R31,R25
 03D2 09F0              breq X10
 03D4 32C0              rjmp L103
 03D6           X10:
 03D6                   .dbline 251
 03D6           ;                                {Flag=temp1;
 03D6                   .dbline 251
 03D6 6C2F              mov R22,R28
 03D8 7D2F              mov R23,R29
 03DA 6D5F              subi R22,253  ; offset = 3
 03DC 7F4F              sbci R23,255
 03DE                   .dbline 252
 03DE           ;                                 (*Flag)|=0x80;
 03DE E62F              mov R30,R22
 03E0 F72F              mov R31,R23
 03E2 8081              ldd R24,z+0
 03E4 8068              ori R24,128
 03E6 8083              std z+0,R24
 03E8                   .dbline 253
 03E8           ;                                 (*(Flag+13))&=0x7f;}
 03E8 3D96              adiw R30,13
 03EA 8081              ldd R24,z+0
 03EC 8F77              andi R24,127
 03EE 8083              std z+0,R24
 03F0                   .dbline 253
 03F0                   .dbline 254
 03F0           ;                               break;
 03F0 24C0              rjmp L103
 03F2           L115:
 03F2                   .dbline 256
 03F2           ;                 case 0x20:                   //"上一位"键处理
 03F2           ;                       if(Flag==temp1) 
 03F2 8C2F              mov R24,R28
 03F4 9D2F              mov R25,R29
 03F6 0396              adiw R24,3
 03F8 6817              cp R22,R24
 03FA 7907              cpc R23,R25
 03FC 79F4              brne L116
 03FE                   .dbline 257
 03FE           ;                                   {(*Flag)&=0x7f;
 03FE                   .dbline 257
 03FE E62F              mov R30,R22
 0400 F72F              mov R31,R23
 0402 8081              ldd R24,z+0
 0404 8F77              andi R24,127
 0406 8083              std z+0,R24
 0408                   .dbline 258
 0408           ;                                        Flag=temp1+13;
 0408 6C2F              mov R22,R28

⌨️ 快捷键说明

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