?? main.s
字號:
ldd R5,z+8
st -y,R5
st -y,R4
st -y,R3
st -y,R2
xcall empy32f
movw R30,R28
std z+1,R16
std z+2,R17
std z+3,R18
std z+4,R19
.dbline 126
movw R30,R28
ldd R2,z+1
ldd R3,z+2
ldd R4,z+3
ldd R5,z+4
st -y,R5
st -y,R4
st -y,R3
st -y,R2
ldi R16,<L25
ldi R17,>L25
xcall lpm32
st -y,R19
st -y,R18
st -y,R17
st -y,R16
xcall cmp32f
brlt L23
movw R30,R28
ldd R2,z+1
ldd R3,z+2
ldd R4,z+3
ldd R5,z+4
st -y,R5
st -y,R4
st -y,R3
st -y,R2
ldi R16,<L25
ldi R17,>L25
xcall lpm32
st -y,R19
st -y,R18
st -y,R17
st -y,R16
xcall sub32f
xcall fp2int
movw R24,R16
subi R24,0 ; offset = 32768
sbci R25,128
movw R10,R24
xjmp L24
L23:
movw R30,R28
ldd R16,z+1
ldd R17,z+2
ldd R18,z+3
ldd R19,z+4
xcall fp2int
movw R10,R16
L24:
sts _DisVal+1,R11
sts _DisVal,R10
.dbline 128
;
; disx[3]=(DisVal/1000)%10;disx[2]=(DisVal/100)%10;
ldi R18,1000
ldi R19,3
movw R16,R10
xcall div16u
ldi R18,10
ldi R19,0
xcall mod16u
sts _disx+6+1,R17
sts _disx+6,R16
.dbline 128
ldi R18,100
ldi R19,0
lds R16,_DisVal
lds R17,_DisVal+1
xcall div16u
ldi R18,10
ldi R19,0
xcall mod16u
sts _disx+4+1,R17
sts _disx+4,R16
.dbline 129
; disx[1]=(DisVal%100)/10;disx[0]=DisVal%10;
ldi R18,100
ldi R19,0
lds R16,_DisVal
lds R17,_DisVal+1
xcall mod16u
ldi R18,10
ldi R19,0
xcall div16u
sts _disx+2+1,R17
sts _disx+2,R16
.dbline 129
ldi R18,10
ldi R19,0
lds R16,_DisVal
lds R17,_DisVal+1
xcall mod16u
sts _disx+1,R17
sts _disx,R16
.dbline 130
; DisplayOneChar(4,1,disx[3]+0x30);//顯示數據
lds R24,_disx+6
lds R25,_disx+6+1
adiw R24,48
std y+0,R24
ldi R18,1
ldi R16,4
xcall _DisplayOneChar
.dbline 131
; DisplayOneChar(5,1,disx[2]+0x30);
lds R24,_disx+4
lds R25,_disx+4+1
adiw R24,48
std y+0,R24
ldi R18,1
ldi R16,5
xcall _DisplayOneChar
.dbline 132
; DisplayOneChar(6,1,disx[1]+0x30);
lds R24,_disx+2
lds R25,_disx+2+1
adiw R24,48
std y+0,R24
ldi R18,1
ldi R16,6
xcall _DisplayOneChar
.dbline 133
; DisplayOneChar(7,1,disx[0]+0x30);
lds R24,_disx
lds R25,_disx+1
adiw R24,48
std y+0,R24
ldi R18,1
ldi R16,7
xcall _DisplayOneChar
.dbline 134
; DisFlag=0;WorkTime=0;DisTime=0;EndFlag=0;
clr R2
sts _DisFlag,R2
.dbline 134
clr R3
sts _WorkTime+1,R3
sts _WorkTime,R2
.dbline 134
sts _DisTime+1,R3
sts _DisTime,R2
.dbline 134
sts _EndFlag,R2
.dbline 135
; Start=0;cnt=0;
sts _Start,R2
.dbline 135
sts _cnt+1,R3
sts _cnt,R2
.dbline 136
; }
xjmp L20
L19:
.dbline 138
; else //否則進行取樣
; {
L32:
.dbline 139
; do{temp=PIND&0x04;WDR();JS=1;//等待下降沿后下一次測試
.dbline 139
in R24,0x10
andi R24,4
mov R10,R24
.dbline 139
wdr
.dbline 139
ldi R24,1
sts _JS,R24
.dbline 140
; if(Counter>1500){Counter=0;JS=0;DisFlag=1;cx=0;goto END;}
ldi R24,1500
ldi R25,5
lds R2,_Counter
lds R3,_Counter+1
cp R24,R2
cpc R25,R3
brsh L35
.dbline 140
.dbline 140
clr R2
clr R3
sts _Counter+1,R3
sts _Counter,R2
.dbline 140
sts _JS,R2
.dbline 140
ldi R24,1
sts _DisFlag,R24
.dbline 140
sts _cx+1,R3
sts _cx,R2
.dbline 140
xjmp L37
L35:
.dbline 141
; }
L33:
.dbline 142
; while(temp==0x04);
mov R24,R10
cpi R24,4
breq L32
.dbline 143
; BeginFlag=1;Start=1;GICR=0x40;//重開INT0
ldi R24,1
sts _BeginFlag,R24
.dbline 143
sts _Start,R24
.dbline 143
ldi R24,64
out 0x3b,R24
L37:
.dbline 144
; END:;
.dbline 145
; }
L20:
.dbline 146
L17:
.dbline 120
xjmp L16
X0:
.dbline -2
L15:
adiw R28,13
.dbline 0 ; func end
ret
.dbsym l time 9 D
.dbsym l count 5 D
.dbsym l x 1 D
.dbsym r temp 10 c
.dbend
.area vector(rom, abs)
.org 16
jmp _timer2_ovf_isr
.area text(rom, con, rel)
.dbfile d:\MYDOCU~1\ac19-1\main.c
.dbfunc e timer2_ovf_isr _timer2_ovf_isr fV
.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 151
; }
; }
;
; #pragma interrupt_handler timer2_ovf_isr:5
; void timer2_ovf_isr(void)
; {
.dbline 152
; TCNT2 = 0x83; //reload counter value
ldi R24,131
out 0x24,R24
.dbline 153
; SEI();
sei
.dbline 154
; if(BeginFlag==1)
lds R24,_BeginFlag
cpi R24,1
brne L39
.dbline 155
; {
.dbline 156
; DisTime++;
lds R24,_DisTime
lds R25,_DisTime+1
adiw R24,1
sts _DisTime+1,R25
sts _DisTime,R24
.dbline 157
; if(DisTime>1300){DisFlag=1;DisTime=0;BeginFlag=0;} //開顯示
ldi R24,1300
ldi R25,5
lds R2,_DisTime
lds R3,_DisTime+1
cp R24,R2
cpc R25,R3
brsh L41
.dbline 157
.dbline 157
ldi R24,1
sts _DisFlag,R24
.dbline 157
clr R2
clr R3
sts _DisTime+1,R3
sts _DisTime,R2
.dbline 157
sts _BeginFlag,R2
.dbline 157
L41:
.dbline 158
; }
L39:
.dbline 159
; if(Start==1){WorkTime++;}
lds R24,_Start
cpi R24,1
brne L43
.dbline 159
.dbline 159
lds R24,_WorkTime
lds R25,_WorkTime+1
adiw R24,1
sts _WorkTime+1,R25
sts _WorkTime,R24
.dbline 159
L43:
.dbline 160
; if(WorkTime==1000){EndFlag=1;}
lds R24,_WorkTime
lds R25,_WorkTime+1
cpi R24,232
ldi R30,3
cpc R25,R30
brne L45
.dbline 160
.dbline 160
ldi R24,1
sts _EndFlag,R24
.dbline 160
L45:
.dbline 161
lds R24,_JS
cpi R24,1
brne L47
.dbline 161
lds R24,_Counter
lds R25,_Counter+1
adiw R24,1
sts _Counter+1,R25
sts _Counter,R24
L47:
.dbline -2
L38:
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
.dbend
.area vector(rom, abs)
.org 4
jmp _int0_isr
.area text(rom, con, rel)
.dbfile d:\MYDOCU~1\ac19-1\main.c
.dbfunc e int0_isr _int0_isr fV
; y -> R16
.even
_int0_isr::
st -y,R2
st -y,R3
st -y,R16
st -y,R24
st -y,R25
in R2,0x3f
st -y,R2
.dbline -1
.dbline 167
; if(JS==1)Counter++;
;
; }
;
; #pragma interrupt_handler int0_isr:2
; void int0_isr(void)
; {
.dbline 169
; uchar y;
; SEI();
sei
.dbline 171
; //external interupt on INT0
; y=PIND&0x04;
in R16,0x10
andi R16,4
.dbline 172
; JS=0;Counter=0;
clr R2
sts _JS,R2
.dbline 172
clr R3
sts _Counter+1,R3
sts _Counter,R2
.dbline 173
; if((Start==1)&&(y==0x00))cnt++;
lds R24,_Start
cpi R24,1
brne L50
tst R16
brne L50
.dbline 173
lds R24,_cnt
lds R25,_cnt+1
adiw R24,1
sts _cnt+1,R25
sts _cnt,R24
L50:
.dbline 175
; //**********************
; if((Start==1)&&(y==0x04))
lds R24,_Start
cpi R24,1
brne L52
cpi R16,4
brne L52
.dbline 176
; {
.dbline 177
; cnt++;
lds R24,_cnt
lds R25,_cnt+1
adiw R24,1
sts _cnt+1,R25
sts _cnt,R24
.dbline 178
; if(EndFlag==1){tx=WorkTime;cx=cnt;EndFlag=0;
lds R24,_EndFlag
cpi R24,1
brne L54
.dbline 178
.dbline 178
lds R2,_WorkTime
lds R3,_WorkTime+1
sts _tx+1,R3
sts _tx,R2
.dbline 178
lds R2,_cnt
lds R3,_cnt+1
sts _cx+1,R3
sts _cx,R2
.dbline 178
clr R2
sts _EndFlag,R2
.dbline 179
; Start=0;GICR=0x00;}//關閉INT0中斷
sts _Start,R2
.dbline 179
out 0x3b,R2
.dbline 179
L54:
.dbline 180
L52:
.dbline -2
L49:
ld R2,y+
out 0x3f,R2
ld R25,y+
ld R24,y+
ld R16,y+
ld R3,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbsym r y 16 c
.dbend
.area bss(ram, con, rel)
.dbfile d:\MYDOCU~1\ac19-1\main.c
_EndFlag::
.blkb 1
.dbsym e EndFlag _EndFlag c
_disx::
.blkb 8
.dbsym e disx _disx A[8:4]i
_cx::
.blkb 2
.dbsym e cx _cx i
_tx::
.blkb 2
.dbsym e tx _tx i
_IntFlag::
.blkb 1
.dbsym e IntFlag _IntFlag c
_Flag::
.blkb 1
.dbsym e Flag _Flag c
_cnt::
.blkb 2
.dbsym e cnt _cnt i
_DisVal::
.blkb 2
.dbsym e DisVal _DisVal i
_Counter::
.blkb 2
.dbsym e Counter _Counter i
_DisTime::
.blkb 2
.dbsym e DisTime _DisTime i
_WorkTime::
.blkb 2
.dbsym e WorkTime _WorkTime i
_WorkFlag::
.blkb 1
.dbsym e WorkFlag _WorkFlag c
.area lit(rom, con, rel)
L25:
.word 0x0,0x4700
L22:
.word 0x6000,0x46ea
L21:
.word 0x0,0x4000
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -