?? time.s
字號:
.module time.c
.area data(ram, con, rel)
_sound::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\ICC-AVR\Pc_At\time.c
.dbsym s sound _sound c
.area text(rom, con, rel)
.dbfile D:\ICC-AVR\Pc_At\time.c
.dbfunc s timer0_init _timer0_init fI
.even
_timer0_init::
.dbline -1
.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)
; {
.dbline 11
; TCCR0 = 0x00; //stop
clr R2
out 0x33,R2
.dbline 12
; ASSR = 0x08; //set async mode
ldi R24,8
out 0x30,R24
.dbline 13
; TCNT0 = 0x00; //set count
out 0x32,R2
.dbline 14
; TCCR0 = 0x05; //start timer
ldi R24,5
out 0x33,R24
.dbline -2
.dbline 15
; }
L1:
.dbline 0 ; func end
ret
.area vector(rom, abs)
.org 64
jmp _timer0_ovf_isr
.area text(rom, con, rel)
.dbfile D:\ICC-AVR\Pc_At\time.c
.dbfunc s timer0_ovf_isr _timer0_ovf_isr fI
.even
_timer0_ovf_isr::
st -y,R2
st -y,R24
st -y,R25
in R2,0x3f
st -y,R2
.dbline -1
.dbline 18
; #pragma interrupt_handler timer0_ovf_isr:17
; void timer0_ovf_isr(void)
; {
.dbline 19
; TCNT0 = 0x00; //reload counter value
clr R2
out 0x32,R2
.dbline 20
; keytime++;
lds R24,_keytime
subi R24,255 ; addi 1
sts _keytime,R24
.dbline 21
; if(second>=59)
lds R24,_second
cpi R24,59
brlo L3
.dbline 22
; {
.dbline 23
; second=0;
sts _second,R2
.dbline 24
; if(minute>=59)
lds R24,_minute
cpi R24,59
brlo L5
.dbline 25
; {
.dbline 26
; minute=0;
sts _minute,R2
.dbline 27
; if(hour>=23)
lds R24,_hour
cpi R24,23
brlo L7
.dbline 28
; {
.dbline 29
; hour=0;
sts _hour,R2
.dbline 30
; }
xjmp L4
L7:
.dbline 32
; else
; {
.dbline 33
; hour++;
lds R24,_hour
subi R24,255 ; addi 1
sts _hour,R24
.dbline 34
; }
.dbline 35
; }
xjmp L4
L5:
.dbline 37
; else
; {
.dbline 38
; minute++;
lds R24,_minute
subi R24,255 ; addi 1
sts _minute,R24
.dbline 39
; }
.dbline 40
; }
xjmp L4
L3:
.dbline 42
; else
; {
.dbline 43
; second++;
lds R24,_second
subi R24,255 ; addi 1
sts _second,R24
.dbline 44
; }
L4:
.dbline 45
; if((PIND&0b00100000)==0) sound=1;
sbic 0x10,5
rjmp L9
.dbline 45
ldi R24,1
sts _sound,R24
L9:
.dbline 46
; if (minute==0)
lds R2,_minute
tst R2
brne L11
.dbline 47
; {
.dbline 48
; if (sound==0)
lds R2,_sound
tst R2
brne L13
.dbline 49
; TIMSK|=0x40;
in R24,0x37
ori R24,64
out 0x37,R24
xjmp L12
L13:
.dbline 51
; else
; TIMSK&=0xbf;
in R24,0x37
andi R24,191
out 0x37,R24
.dbline 52
; }
xjmp L12
L11:
.dbline 54
.dbline 55
in R24,0x37
andi R24,191
out 0x37,R24
.dbline 56
clr R2
sts _sound,R2
.dbline 57
L12:
.dbline -2
.dbline 58
; else
; {
; TIMSK&=0xbf;
; sound=0;
; }
; }
L2:
ld R2,y+
out 0x3f,R2
ld R25,y+
ld R24,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbfunc s timetoasc _timetoasc fI
; temp -> R20
; i -> R22
.even
_timetoasc::
xcall push_gset2
sbiw R28,4
.dbline -1
.dbline 60
; void timetoasc(void)
; {
.dbline 63
; unsigned char i;
; unsigned char temp;
; temp=hour;
lds R20,_hour
.dbline 64
; for(i=0;i<2;i++)
clr R22
xjmp L19
L16:
.dbline 65
.dbline 66
mov R2,R22
clr R3
ldi R30,1
ldi R31,0
sub R30,R2
sbc R31,R3
ldi R24,<_time
ldi R25,>_time
add R30,R24
adc R31,R25
ldi R17,10
mov R16,R20
xcall mod8u
mov R24,R16
subi R24,208 ; addi 48
std z+0,R24
.dbline 67
ldi R17,10
mov R16,R20
xcall div8u
mov R20,R16
.dbline 68
L17:
.dbline 64
inc R22
L19:
.dbline 64
cpi R22,2
brlo L16
.dbline 69
; {
; time[1-i]=temp%10+0x30;
; temp=temp/10;
; }
; time[2]=':';
ldi R24,58
sts _time+2,R24
.dbline 70
; temp=minute;
lds R20,_minute
.dbline 71
; for(i=0;i<2;i++)
clr R22
xjmp L24
L21:
.dbline 72
.dbline 73
mov R2,R22
clr R3
ldi R30,4
ldi R31,0
sub R30,R2
sbc R31,R3
ldi R24,<_time
ldi R25,>_time
add R30,R24
adc R31,R25
ldi R17,10
mov R16,R20
xcall mod8u
mov R24,R16
subi R24,208 ; addi 48
std z+0,R24
.dbline 74
ldi R17,10
mov R16,R20
xcall div8u
mov R20,R16
.dbline 75
L22:
.dbline 71
inc R22
L24:
.dbline 71
cpi R22,2
brlo L21
.dbline 76
; {
; time[4-i]=temp%10+0x30;
; temp=temp/10;
; }
; time[5]=':';
ldi R24,58
sts _time+5,R24
.dbline 77
; temp=second;
lds R20,_second
.dbline 78
; for(i=0;i<2;i++)
clr R22
xjmp L29
L26:
.dbline 79
.dbline 80
mov R2,R22
clr R3
ldi R30,7
ldi R31,0
sub R30,R2
sbc R31,R3
ldi R24,<_time
ldi R25,>_time
add R30,R24
adc R31,R25
ldi R17,10
mov R16,R20
xcall mod8u
mov R24,R16
subi R24,208 ; addi 48
std z+0,R24
.dbline 81
ldi R17,10
mov R16,R20
xcall div8u
mov R20,R16
.dbline 82
L27:
.dbline 78
inc R22
L29:
.dbline 78
cpi R22,2
brlo L26
.dbline 83
; {
; time[7-i]=temp%10+0x30;
; temp=temp/10;
; }
; time[8]=0;
clr R2
sts _time+8,R2
.dbline 84
; cls(0,3,1,8);
ldi R24,8
ldi R25,0
std y+2,R24
std y+3,R25
ldi R24,1
std y+0,R24
std y+1,R25
ldi R18,3
ldi R19,0
clr R16
clr R17
xcall _cls
.dbline 85
; asc_tran(4,52,time);
ldi R24,<_time
ldi R25,>_time
std y+0,R24
std y+1,R25
ldi R18,52
ldi R19,0
ldi R16,4
ldi R17,0
xcall _asc_tran
.dbline -2
.dbline 86
; }
L15:
adiw R28,4
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r temp 20 c
.dbsym r i 22 c
.dbfunc s timer2_init _timer2_init fI
.even
_timer2_init::
.dbline -1
.dbline 88
; void timer2_init(void)
; {
.dbline 89
; TCCR2 = 0x00;
clr R2
out 0x25,R2
.dbline 90
; TCNT2 = 0xe1;
ldi R24,225
out 0x24,R24
.dbline 91
; TCCR2 = 0x03;
ldi R24,3
out 0x25,R24
.dbline -2
.dbline 92
; }
L31:
.dbline 0 ; func end
ret
.area vector(rom, abs)
.org 40
jmp _timer2_ovf_isr
.area text(rom, con, rel)
.dbfile D:\ICC-AVR\Pc_At\time.c
.area bss(ram, con, rel)
.dbfile D:\ICC-AVR\Pc_At\time.c
L33:
.blkb 2
.area text(rom, con, rel)
.dbfile D:\ICC-AVR\Pc_At\time.c
.dbfunc s timer2_ovf_isr _timer2_ovf_isr fI
.dbsym s i L33 i
.even
_timer2_ovf_isr::
st -y,R2
st -y,R3
st -y,R24
st -y,R25
st -y,R30
in R2,0x3f
st -y,R2
.dbline -1
.dbline 95
; #pragma interrupt_handler timer2_ovf_isr:11
; void timer2_ovf_isr(void)
; {
.dbline 97
; static unsigned int i;
; TCNT2 = 0xe1; //reload counter value
ldi R24,225
out 0x24,R24
.dbline 98
; i++;
lds R25,L33+1
lds R24,L33
adiw R24,1
sts L33+1,R25
sts L33,R24
.dbline 99
; if(i<800)
cpi R24,32
ldi R30,3
cpc R25,R30
brsh L34
.dbline 100
; {
.dbline 101
; PORTB^=0x80;
ldi R24,128
in R2,0x18
eor R2,R24
out 0x18,R2
.dbline 102
; }
L34:
.dbline 103
ldi R24,1600
ldi R25,6
lds R3,L33+1
lds R2,L33
cp R24,R2
cpc R25,R3
brsh L36
.dbline 104
clr R2
clr R3
sts L33+1,R3
sts L33,R2
L36:
.dbline -2
.dbline 105
; if(i>1600)
; i=0;
; }
L32:
ld R2,y+
out 0x3f,R2
ld R30,y+
ld R25,y+
ld R24,y+
ld R3,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbfunc s timecal _timecal fI
.area func_lit(rom, con, rel)
L92:
.word `L63
.word `L66
.word `L73
.word `L77
.word `L79
.word `L83
.area text(rom, con, rel)
.dbfile D:\ICC-AVR\Pc_At\time.c
; step -> R10
; temp -> R20
.even
_timecal::
xcall push_gset5
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -