📄 time.lis
字号:
.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 C:\work\mega128\mix_exp\time.c
0001 .dbsym e sound _sound c
.area text(rom, con, rel)
0000 .dbfile C:\work\mega128\mix_exp\time.c
0000 .dbfunc e timer0_init _timer0_init fV
.even
0000 _timer0_init::
0000 .dbline -1
0000 .dbline 14
0000 ; #include<iom128v.h>
0000 ; unsigned char second;
0000 ; unsigned char minute;
0000 ; unsigned char hour;
0000 ; unsigned char time[9];
0000 ; unsigned char sound=0;
0000 ; extern unsigned char keytime;
0000 ; extern unsigned char keypad(void);
0000 ; extern void cls(unsigned x,unsigned y,unsigned char high,unsigned char width);
0000 ; extern void asc_tran(unsigned char x,unsigned char y,unsigned char *asc_p);
0000 ; extern void ocmj_write(unsigned char data);
0000 ; extern void hz_tran(unsigned char x,unsigned char y,unsigned char *hz_p);
0000 ; void timer0_init(void)
0000 ; {
0000 .dbline 15
0000 ; TCCR0 = 0x00; //stop
0000 2224 clr R2
0002 23BE out 0x33,R2
0004 .dbline 16
0004 ; ASSR = 0x08; //set async mode
0004 88E0 ldi R24,8
0006 80BF out 0x30,R24
0008 .dbline 17
0008 ; TCNT0 = 0x00; //set count
0008 22BE out 0x32,R2
000A .dbline 18
000A ; TCCR0 = 0x05; //start timer
000A 85E0 ldi R24,5
000C 83BF out 0x33,R24
000E .dbline -2
000E .dbline 19
000E ; }
000E L1:
000E .dbline 0 ; func end
000E 0895 ret
0010 .dbend
.area vector(rom, abs)
.org 64
0040 0C940800 jmp _timer0_ovf_isr
.area text(rom, con, rel)
0010 .dbfile C:\work\mega128\mix_exp\time.c
0010 .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.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 22
001A ; #pragma interrupt_handler timer0_ovf_isr:17
001A ; void timer0_ovf_isr(void)
001A ; {
001A .dbline 23
001A ; TCNT0 = 0x00; //reload counter value
001A 2224 clr R2
001C 22BE out 0x32,R2
001E .dbline 24
001E ; keytime++;
001E 80910000 lds R24,_keytime
0022 8F5F subi R24,255 ; addi 1
0024 80930000 sts _keytime,R24
0028 .dbline 25
0028 ; if(second>=59)
0028 80910D00 lds R24,_second
002C 8B33 cpi R24,59
002E D8F0 brlo L3
0030 .dbline 26
0030 ; {
0030 .dbline 27
0030 ; second=0;
0030 20920D00 sts _second,R2
0034 .dbline 28
0034 ; if(minute>=59)
0034 80910C00 lds R24,_minute
0038 8B33 cpi R24,59
003A 78F0 brlo L5
003C .dbline 29
003C ; {
003C .dbline 30
003C ; minute=0;
003C 20920C00 sts _minute,R2
0040 .dbline 31
0040 ; if(hour>=23)
0040 80910B00 lds R24,_hour
0044 8731 cpi R24,23
0046 18F0 brlo L7
0048 .dbline 32
0048 ; {
0048 .dbline 33
0048 ; hour=0;
0048 20920B00 sts _hour,R2
004C .dbline 34
004C ; }
004C 11C0 xjmp L4
004E L7:
004E .dbline 36
004E ; else
004E ; {
004E .dbline 37
004E ; hour++;
004E 80910B00 lds R24,_hour
0052 8F5F subi R24,255 ; addi 1
0054 80930B00 sts _hour,R24
0058 .dbline 38
0058 ; }
0058 .dbline 39
0058 ; }
0058 0BC0 xjmp L4
005A L5:
005A .dbline 41
005A ; else
005A ; {
005A .dbline 42
005A ; minute++;
005A 80910C00 lds R24,_minute
005E 8F5F subi R24,255 ; addi 1
0060 80930C00 sts _minute,R24
0064 .dbline 43
0064 ; }
0064 .dbline 44
0064 ; }
0064 05C0 xjmp L4
0066 L3:
0066 .dbline 46
0066 ; else
0066 ; {
0066 .dbline 47
0066 ; second++;
0066 80910D00 lds R24,_second
006A 8F5F subi R24,255 ; addi 1
006C 80930D00 sts _second,R24
0070 .dbline 48
0070 ; }
0070 L4:
0070 .dbline 49
0070 ; if((PIND&0b00100000)==0) sound=1;
0070 8599 sbic 0x10,5
0072 03C0 rjmp L9
0074 .dbline 49
0074 81E0 ldi R24,1
0076 80930000 sts _sound,R24
007A L9:
007A .dbline 50
007A ; if (minute==0)
007A 20900C00 lds R2,_minute
007E 2220 tst R2
0080 61F4 brne L11
0082 .dbline 51
0082 ; {
0082 .dbline 52
0082 ; if (sound==0)
0082 20900000 lds R2,_sound
0086 2220 tst R2
0088 21F4 brne L13
008A .dbline 53
008A ; 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 55
0092 ; else
0092 ; TIMSK&=0xbf;
0092 87B7 in R24,0x37
0094 8F7B andi R24,191
0096 87BF out 0x37,R24
0098 .dbline 56
0098 ; }
0098 06C0 xjmp L12
009A L11:
009A .dbline 58
009A .dbline 59
009A 87B7 in R24,0x37
009C 8F7B andi R24,191
009E 87BF out 0x37,R24
00A0 .dbline 60
00A0 2224 clr R2
00A2 20920000 sts _sound,R2
00A6 .dbline 61
00A6 L12:
00A6 .dbline -2
00A6 .dbline 62
00A6 ; else
00A6 ; {
00A6 ; TIMSK&=0xbf;
00A6 ; sound=0;
00A6 ; }
00A6 ; }
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 .dbend
00B2 .dbfunc e timetoasc _timetoasc fV
00B2 ; temp -> R20
00B2 ; i -> R22
.even
00B2 _timetoasc::
00B2 0E940000 xcall push_gset2
00B6 2397 sbiw R28,3
00B8 .dbline -1
00B8 .dbline 64
00B8 ; void timetoasc(void)
00B8 ; {
00B8 .dbline 67
00B8 ; unsigned char i;
00B8 ; unsigned char temp;
00B8 ; temp=hour;
00B8 40910B00 lds R20,_hour
00BC .dbline 68
00BC ; for(i=0;i<2;i++)
00BC 6627 clr R22
00BE 17C0 xjmp L19
00C0 L16:
00C0 .dbline 69
00C0 .dbline 70
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 71
00E2 1AE0 ldi R17,10
00E4 042F mov R16,R20
00E6 0E940000 xcall div8u
00EA 402F mov R20,R16
00EC .dbline 72
00EC L17:
00EC .dbline 68
00EC 6395 inc R22
00EE L19:
00EE .dbline 68
00EE 6230 cpi R22,2
00F0 38F3 brlo L16
00F2 .dbline 73
00F2 ; {
00F2 ; time[1-i]=temp%10+0x30;
00F2 ; temp=temp/10;
00F2 ; }
00F2 ; time[2]=':';
00F2 8AE3 ldi R24,58
00F4 80930400 sts _time+2,R24
00F8 .dbline 74
00F8 ; temp=minute;
00F8 40910C00 lds R20,_minute
00FC .dbline 75
00FC ; for(i=0;i<2;i++)
00FC 6627 clr R22
00FE 17C0 xjmp L24
0100 L21:
0100 .dbline 76
0100 .dbline 77
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 78
0122 1AE0 ldi R17,10
0124 042F mov R16,R20
0126 0E940000 xcall div8u
012A 402F mov R20,R16
012C .dbline 79
012C L22:
012C .dbline 75
012C 6395 inc R22
012E L24:
012E .dbline 75
012E 6230 cpi R22,2
0130 38F3 brlo L21
0132 .dbline 80
0132 ; {
0132 ; time[4-i]=temp%10+0x30;
0132 ; temp=temp/10;
0132 ; }
0132 ; time[5]=':';
0132 8AE3 ldi R24,58
0134 80930700 sts _time+5,R24
0138 .dbline 81
0138 ; temp=second;
0138 40910D00 lds R20,_second
013C .dbline 82
013C ; for(i=0;i<2;i++)
013C 6627 clr R22
013E 17C0 xjmp L29
0140 L26:
0140 .dbline 83
0140 .dbline 84
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -