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

📄 time.lis

📁 双龙AVR-MEGA128开发板的配套源码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                         .module time.c
                         .area data(ram, con, rel)
 0000                 _sound::
 0000                   .blkb 1
                         .area idata
 0000 00                .byte 0
                         .area data(ram, con, rel)
 0001                   .dbfile D:\ICC-AVR\Pc_At\time.c
 0001                   .dbsym s sound _sound c
                         .area text(rom, con, rel)
 0000                   .dbfile D:\ICC-AVR\Pc_At\time.c
 0000                   .dbfunc s timer0_init _timer0_init fI
                         .even
 0000                 _timer0_init::
 0000                   .dbline -1
 0000                   .dbline 10
                       ; #include<iom103.h>
                       ; unsigned char second;
                       ; unsigned char minute;
                       ; unsigned char hour;
                       ; unsigned char time[9];
                       ; unsigned char sound=0;
                       ; extern unsigned char keytime;
                       ; extern unsigned char keypad(void);
                       ; void timer0_init(void)
                       ; {
 0000                   .dbline 11
                       ;  TCCR0 = 0x00; //stop
 0000 2224              clr R2
 0002 23BE              out 0x33,R2
 0004                   .dbline 12
                       ;  ASSR = 0x08; //set async mode
 0004 88E0              ldi R24,8
 0006 80BF              out 0x30,R24
 0008                   .dbline 13
                       ;  TCNT0 = 0x00; //set count
 0008 22BE              out 0x32,R2
 000A                   .dbline 14
                       ;  TCCR0 = 0x05; //start timer
 000A 85E0              ldi R24,5
 000C 83BF              out 0x33,R24
 000E                   .dbline -2
 000E                   .dbline 15
                       ; }
 000E                 L1:
 000E                   .dbline 0 ; func end
 000E 0895              ret
                         .area vector(rom, abs)
                         .org 64
 0040 0C940800          jmp _timer0_ovf_isr
                         .area text(rom, con, rel)
 0010                   .dbfile D:\ICC-AVR\Pc_At\time.c
 0010                   .dbfunc s timer0_ovf_isr _timer0_ovf_isr fI
                         .even
 0010                 _timer0_ovf_isr::
 0010 2A92              st -y,R2
 0012 8A93              st -y,R24
 0014 9A93              st -y,R25
 0016 2FB6              in R2,0x3f
 0018 2A92              st -y,R2
 001A                   .dbline -1
 001A                   .dbline 18
                       ; #pragma interrupt_handler timer0_ovf_isr:17
                       ; void timer0_ovf_isr(void)
                       ; {
 001A                   .dbline 19
                       ;  TCNT0 = 0x00; //reload counter value
 001A 2224              clr R2
 001C 22BE              out 0x32,R2
 001E                   .dbline 20
                       ;  keytime++;
 001E 80910000          lds R24,_keytime
 0022 8F5F              subi R24,255    ; addi 1
 0024 80930000          sts _keytime,R24
 0028                   .dbline 21
                       ;  if(second>=59)
 0028 80910D00          lds R24,_second
 002C 8B33              cpi R24,59
 002E D8F0              brlo L3
 0030                   .dbline 22
                       ;    {
 0030                   .dbline 23
                       ;     second=0;
 0030 20920D00          sts _second,R2
 0034                   .dbline 24
                       ;     if(minute>=59)
 0034 80910C00          lds R24,_minute
 0038 8B33              cpi R24,59
 003A 78F0              brlo L5
 003C                   .dbline 25
                       ;       {
 003C                   .dbline 26
                       ;        minute=0;
 003C 20920C00          sts _minute,R2
 0040                   .dbline 27
                       ;        if(hour>=23)
 0040 80910B00          lds R24,_hour
 0044 8731              cpi R24,23
 0046 18F0              brlo L7
 0048                   .dbline 28
                       ;          {
 0048                   .dbline 29
                       ;           hour=0;
 0048 20920B00          sts _hour,R2
 004C                   .dbline 30
                       ;          }
 004C 11C0              xjmp L4
 004E                 L7:
 004E                   .dbline 32
                       ;        else
                       ;          {
 004E                   .dbline 33
                       ;           hour++;
 004E 80910B00          lds R24,_hour
 0052 8F5F              subi R24,255    ; addi 1
 0054 80930B00          sts _hour,R24
 0058                   .dbline 34
                       ;          }   
 0058                   .dbline 35
                       ;       }
 0058 0BC0              xjmp L4
 005A                 L5:
 005A                   .dbline 37
                       ;     else
                       ;       {
 005A                   .dbline 38
                       ;        minute++; 
 005A 80910C00          lds R24,_minute
 005E 8F5F              subi R24,255    ; addi 1
 0060 80930C00          sts _minute,R24
 0064                   .dbline 39
                       ;       }  
 0064                   .dbline 40
                       ;    }
 0064 05C0              xjmp L4
 0066                 L3:
 0066                   .dbline 42
                       ;  else
                       ;    {
 0066                   .dbline 43
                       ;     second++;
 0066 80910D00          lds R24,_second
 006A 8F5F              subi R24,255    ; addi 1
 006C 80930D00          sts _second,R24
 0070                   .dbline 44
                       ;    }  
 0070                 L4:
 0070                   .dbline 45
                       ;  if((PIND&0b00100000)==0) sound=1;  
 0070 8599              sbic 0x10,5
 0072 03C0              rjmp L9
 0074                   .dbline 45
 0074 81E0              ldi R24,1
 0076 80930000          sts _sound,R24
 007A                 L9:
 007A                   .dbline 46
                       ;  if (minute==0)
 007A 20900C00          lds R2,_minute
 007E 2220              tst R2
 0080 61F4              brne L11
 0082                   .dbline 47
                       ;      {
 0082                   .dbline 48
                       ;       if (sound==0)
 0082 20900000          lds R2,_sound
 0086 2220              tst R2
 0088 21F4              brne L13
 008A                   .dbline 49
                       ;           TIMSK|=0x40;
 008A 87B7              in R24,0x37
 008C 8064              ori R24,64
 008E 87BF              out 0x37,R24
 0090 0AC0              xjmp L12
 0092                 L13:
 0092                   .dbline 51
                       ;       else
                       ;           TIMSK&=0xbf;    
 0092 87B7              in R24,0x37
 0094 8F7B              andi R24,191
 0096 87BF              out 0x37,R24
 0098                   .dbline 52
                       ;      } 
 0098 06C0              xjmp L12
 009A                 L11:
 009A                   .dbline 54
 009A                   .dbline 55
 009A 87B7              in R24,0x37
 009C 8F7B              andi R24,191
 009E 87BF              out 0x37,R24
 00A0                   .dbline 56
 00A0 2224              clr R2
 00A2 20920000          sts _sound,R2
 00A6                   .dbline 57
 00A6                 L12:
 00A6                   .dbline -2
 00A6                   .dbline 58
                       ;  else
                       ;      {
                       ;       TIMSK&=0xbf;
                       ;       sound=0;
                       ;      }     
                       ; }
 00A6                 L2:
 00A6 2990              ld R2,y+
 00A8 2FBE              out 0x3f,R2
 00AA 9991              ld R25,y+
 00AC 8991              ld R24,y+
 00AE 2990              ld R2,y+
 00B0                   .dbline 0 ; func end
 00B0 1895              reti
 00B2                   .dbfunc s timetoasc _timetoasc fI
                       ;           temp -> R20
                       ;              i -> R22
                         .even
 00B2                 _timetoasc::
 00B2 0E940000          xcall push_gset2
 00B6 2497              sbiw R28,4
 00B8                   .dbline -1
 00B8                   .dbline 60
                       ; void timetoasc(void)
                       ;    {
 00B8                   .dbline 63
                       ;     unsigned char i;
                       ;     unsigned char temp;
                       ;     temp=hour;
 00B8 40910B00          lds R20,_hour
 00BC                   .dbline 64
                       ;     for(i=0;i<2;i++)
 00BC 6627              clr R22
 00BE 17C0              xjmp L19
 00C0                 L16:
 00C0                   .dbline 65
 00C0                   .dbline 66
 00C0 262E              mov R2,R22
 00C2 3324              clr R3
 00C4 E1E0              ldi R30,1
 00C6 F0E0              ldi R31,0
 00C8 E219              sub R30,R2
 00CA F309              sbc R31,R3
 00CC 80E0              ldi R24,<_time
 00CE 90E0              ldi R25,>_time
 00D0 E80F              add R30,R24
 00D2 F91F              adc R31,R25
 00D4 1AE0              ldi R17,10
 00D6 042F              mov R16,R20
 00D8 0E940000          xcall mod8u
 00DC 802F              mov R24,R16
 00DE 805D              subi R24,208    ; addi 48
 00E0 8083              std z+0,R24
 00E2                   .dbline 67
 00E2 1AE0              ldi R17,10
 00E4 042F              mov R16,R20
 00E6 0E940000          xcall div8u
 00EA 402F              mov R20,R16
 00EC                   .dbline 68
 00EC                 L17:
 00EC                   .dbline 64
 00EC 6395              inc R22
 00EE                 L19:
 00EE                   .dbline 64
 00EE 6230              cpi R22,2
 00F0 38F3              brlo L16
 00F2                   .dbline 69
                       ;        {
                       ;         time[1-i]=temp%10+0x30;
                       ;         temp=temp/10;
                       ;        }
                       ;     time[2]=':';   
 00F2 8AE3              ldi R24,58
 00F4 80930400          sts _time+2,R24
 00F8                   .dbline 70
                       ;     temp=minute;
 00F8 40910C00          lds R20,_minute
 00FC                   .dbline 71
                       ;     for(i=0;i<2;i++)
 00FC 6627              clr R22
 00FE 17C0              xjmp L24
 0100                 L21:
 0100                   .dbline 72
 0100                   .dbline 73
 0100 262E              mov R2,R22
 0102 3324              clr R3
 0104 E4E0              ldi R30,4
 0106 F0E0              ldi R31,0
 0108 E219              sub R30,R2
 010A F309              sbc R31,R3
 010C 80E0              ldi R24,<_time
 010E 90E0              ldi R25,>_time
 0110 E80F              add R30,R24
 0112 F91F              adc R31,R25
 0114 1AE0              ldi R17,10
 0116 042F              mov R16,R20
 0118 0E940000          xcall mod8u
 011C 802F              mov R24,R16
 011E 805D              subi R24,208    ; addi 48
 0120 8083              std z+0,R24
 0122                   .dbline 74
 0122 1AE0              ldi R17,10
 0124 042F              mov R16,R20
 0126 0E940000          xcall div8u
 012A 402F              mov R20,R16
 012C                   .dbline 75
 012C                 L22:
 012C                   .dbline 71
 012C 6395              inc R22
 012E                 L24:
 012E                   .dbline 71
 012E 6230              cpi R22,2
 0130 38F3              brlo L21
 0132                   .dbline 76
                       ;        {
                       ;         time[4-i]=temp%10+0x30;
                       ;         temp=temp/10;
                       ;        }
                       ;     time[5]=':';
 0132 8AE3              ldi R24,58
 0134 80930700          sts _time+5,R24
 0138                   .dbline 77
                       ;     temp=second;
 0138 40910D00          lds R20,_second
 013C                   .dbline 78
                       ;     for(i=0;i<2;i++)
 013C 6627              clr R22
 013E 17C0              xjmp L29
 0140                 L26:
 0140                   .dbline 79
 0140                   .dbline 80
 0140 262E              mov R2,R22
 0142 3324              clr R3
 0144 E7E0              ldi R30,7
 0146 F0E0              ldi R31,0
 0148 E219              sub R30,R2
 014A F309              sbc R31,R3
 014C 80E0              ldi R24,<_time
 014E 90E0              ldi R25,>_time
 0150 E80F              add R30,R24
 0152 F91F              adc R31,R25
 0154 1AE0              ldi R17,10
 0156 042F              mov R16,R20
 0158 0E940000          xcall mod8u
 015C 802F              mov R24,R16
 015E 805D              subi R24,208    ; addi 48
 0160 8083              std z+0,R24
 0162                   .dbline 81
 0162 1AE0              ldi R17,10
 0164 042F              mov R16,R20
 0166 0E940000          xcall div8u
 016A 402F              mov R20,R16
 016C                   .dbline 82
 016C                 L27:

⌨️ 快捷键说明

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