📄 queryad.s
字号:
.module QueryAD.C
.area text(rom, con, rel)
.dbfile E:\ICCAVR_H\CmmICC.H
.dbfunc e delay50us _delay50us fV
; j -> R20
; t -> R16,R17
.even
_delay50us::
xcall push_gset1
.dbline -1
.dbline 117
;
; #include <iom16v.h>
; #include "E:\ICCAVR_H\CmmICC.H"
;
; #define H_VAL_DISP_DDR DDRD
; #define L_VAL_DISP_DDR DDRB
; #define H_VAL_DISP_PORT PORTD
; #define L_VAL_DISP_PORT PORTB
;
; const uint8 ADEnStatus[8] = {0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
;
; uint8 AdcMux; //ADC通道
; uint16 AdcVal; //ADC转换值
;
; void adc_init()
; {
; /*--------
; 设置对应的IO口为输入高阻态
; --------*/
; DDRA &= ADEnStatus[AdcMux];
; PORTA &= ADEnStatus[AdcMux];
;
; ADCSR = 0x00; //disable adc
; ADMUX = (1<<REFS0)|(AdcMux&0x0F); //set AVcc as Vref, set adc input channel
; ACSR = (1<<ACD); //close analog comparator
; //ADCSRA=(1<<ADEN)|(1<<ADIE)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1);//64分频
; }
;
; void main(void)
; {
; H_VAL_DISP_DDR = 0xFF;
; L_VAL_DISP_DDR = 0xFF;
; AdcMux = 0; //使用ADC通道0
; adc_init();
; while(1)
; {
; ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1);
; while(!ADSC);
; H_VAL_DISP_PORT = (ADC&0x300)>>8; //ADC的高2位Val
; L_VAL_DISP_PORT = ADC&0xFF; //ADC的低8位Val
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 119
; }
; }
xjmp L5
L2:
.dbline 120
; }
clr R20
xjmp L9
L6:
.dbline 121
L7:
.dbline 120
inc R20
L9:
.dbline 120
cpi R20,70
brlo L6
L3:
.dbline 119
subi R16,1
sbci R17,0
L5:
.dbline 119
clr R2
clr R3
cp R2,R16
cpc R3,R17
brlt L2
.dbline -2
.dbline 122
; }
; }
L1:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r j 20 c
.dbsym r t 16 I
.dbend
.dbfunc e delay50ms _delay50ms fV
; i -> R20,R21
; t -> R16,R17
.even
_delay50ms::
xcall push_gset1
.dbline -1
.dbline 132
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 134
; }
; }
xjmp L14
L11:
.dbline 135
; }
clr R20
clr R21
xjmp L18
L15:
.dbline 136
L16:
.dbline 135
subi R20,255 ; offset = 1
sbci R21,255
L18:
.dbline 135
cpi R20,162
ldi R30,205
cpc R21,R30
brlo L15
L12:
.dbline 134
subi R16,1
sbci R17,0
L14:
.dbline 134
clr R2
clr R3
cp R2,R16
cpc R3,R17
brlt L11
.dbline -2
.dbline 137
; }
; }
L10:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r t 16 I
.dbend
.dbfunc e speaData _speaData fV
; y -> y+4
; j -> y+0
; i -> R10
; C -> R12
; D -> y+16
.even
_speaData::
xcall push_arg4
xcall push_gset4
sbiw R28,8
ldd R12,y+20
.dbline -1
.dbline 148
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 151
; }
; }
; }
clr R10
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
std z+0,R20
std z+1,R21
std z+2,R22
std z+3,R23
xjmp L23
L20:
.dbline 152
.dbline 153
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
movw R30,R28
ldd R6,z+16
ldd R7,z+17
ldd R8,z+18
ldd R9,z+19
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R6
movw R18,R8
xcall div32u
movw R30,R28
std z+4,R16
std z+5,R17
std z+6,R18
std z+7,R19
.dbline 154
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+4
ldd R3,z+5
ldd R4,z+6
ldd R5,z+7
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall mod32u
ldi R24,<_dataElem
ldi R25,>_dataElem
mov R30,R10
clr R31
add R30,R24
adc R31,R25
std z+0,R16
.dbline 155
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32u
movw R30,R28
std z+0,R16
std z+1,R17
std z+2,R18
std z+3,R19
.dbline 156
L21:
.dbline 151
inc R10
L23:
.dbline 151
cp R10,R12
brsh X0
xjmp L20
X0:
.dbline -2
.dbline 157
; }
; }
; }
; }
; }
; }
L19:
adiw R28,8
xcall pop_gset4
adiw R28,4
.dbline 0 ; func end
ret
.dbsym l y 4 l
.dbsym l j 0 l
.dbsym r i 10 c
.dbsym r C 12 c
.dbsym l D 16 l
.dbend
.dbfunc e changeDToH _changeDToH fc
; hex -> R20
; t -> y+0
; dec -> R20
.even
_changeDToH::
xcall push_gset1
mov R20,R16
sbiw R28,2
.dbline -1
.dbline 167
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 170
; }
; }
; }
ldi R17,10
mov R16,R20
xcall div8u
std y+1,R16
.dbline 171
; }
ldi R17,10
mov R16,R20
xcall mod8u
std y+0,R16
.dbline 172
; }
ldd R2,y+1
ldi R24,16
mul R24,R2
mov R20,R0
add R20,R16
.dbline 173
; }
mov R16,R20
.dbline -2
L24:
adiw R28,2
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r hex 20 c
.dbsym l t 0 A[2:2]c
.dbsym r dec 20 c
.dbend
.dbfunc e converseDToH _converseDToH fc
; hex -> R20
; t -> y+0
; dec -> R20
.even
_converseDToH::
xcall push_gset1
mov R20,R16
sbiw R28,2
.dbline -1
.dbline 184
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 187
; }
; }
; }
mov R24,R20
swap R24
andi R24,#0x0F
std y+1,R24
.dbline 188
; }
ldi R17,16
mov R16,R20
xcall mod8u
std y+0,R16
.dbline 189
; }
ldd R2,y+1
ldi R24,16
mul R24,R2
mov R20,R0
add R20,R16
.dbline 190
; }
mov R16,R20
.dbline -2
L27:
adiw R28,2
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r hex 20 c
.dbsym l t 0 A[2:2]c
.dbsym r dec 20 c
.dbend
.dbfunc e changeHToD _changeHToD fc
; dec -> R20
; t -> y+0
; hex -> R20
.even
_changeHToD::
xcall push_gset1
mov R20,R16
sbiw R28,2
.dbline -1
.dbline 201
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 204
; }
; }
; }
mov R24,R20
swap R24
andi R24,#0x0F
std y+1,R24
.dbline 205
; }
ldi R17,16
mov R16,R20
xcall mod8u
std y+0,R16
.dbline 206
; }
ldd R2,y+1
ldi R24,10
mul R24,R2
mov R20,R0
add R20,R16
.dbline 207
; }
mov R16,R20
.dbline -2
L30:
adiw R28,2
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r dec 20 c
.dbsym l t 0 A[2:2]c
.dbsym r hex 20 c
.dbend
.dbfunc e converseHToD _converseHToD fc
; dec -> R20
; t -> y+0
; hex -> R20
.even
_converseHToD::
xcall push_gset1
mov R20,R16
sbiw R28,2
.dbline -1
.dbline 218
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 221
; }
; }
; }
ldi R17,10
mov R16,R20
xcall div8u
std y+1,R16
.dbline 222
; }
ldi R17,10
mov R16,R20
xcall mod8u
std y+0,R16
.dbline 223
; }
ldd R2,y+1
ldi R24,16
mul R24,R2
mov R20,R0
add R20,R16
.dbline 224
; }
mov R16,R20
.dbline -2
L33:
adiw R28,2
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r dec 20 c
.dbsym l t 0 A[2:2]c
.dbsym r hex 20 c
.dbend
.area lit(rom, con, rel)
_ADEnStatus::
.byte 254,253
.byte 251,247
.byte 239,223
.byte 191,127
.dbfile E:\ProductPro\M16SD\ICCAVR\AD\QueryAD\QueryAD.C
.dbsym e ADEnStatus _ADEnStatus A[8:8]kc
.area text(rom, con, rel)
.dbfile E:\ProductPro\M16SD\ICCAVR\AD\QueryAD\QueryAD.C
.dbfunc e adc_init _adc_init fV
.even
_adc_init::
.dbline -1
.dbline 16
.dbline 20
ldi R24,<_ADEnStatus
ldi R25,>_ADEnStatus
lds R30,_AdcMux
clr R31
add R30,R24
adc R31,R25
lpm R30,Z
in R2,0x1a
and R2,R30
out 0x1a,R2
.dbline 21
lds R30,_AdcMux
clr R31
add R30,R24
adc R31,R25
lpm R30,Z
in R2,0x1b
and R2,R30
out 0x1b,R2
.dbline 23
clr R2
out 0x6,R2
.dbline 24
lds R24,_AdcMux
andi R24,15
ori R24,64
out 0x7,R24
.dbline 25
ldi R24,128
out 0x8,R24
.dbline -2
.dbline 27
L36:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 30
.dbline 31
ldi R24,255
out 0x11,R24
.dbline 32
out 0x17,R24
.dbline 33
clr R2
sts _AdcMux,R2
.dbline 34
xcall _adc_init
xjmp L39
L38:
.dbline 36
.dbline 37
ldi R24,198
out 0x6,R24
L41:
.dbline 38
L42:
.dbline 38
.dbline 39
in R24,0x4
in R25,0x5
andi R24,0
andi R25,3
mov R24,R25
clr R25
out 0x12,R24
.dbline 40
in R24,0x4
in R25,0x5
andi R25,0
out 0x18,R24
.dbline 41
L39:
.dbline 35
xjmp L38
X1:
.dbline -2
.dbline 42
L37:
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile E:\ProductPro\M16SD\ICCAVR\AD\QueryAD\QueryAD.C
_AdcVal::
.blkb 2
.dbsym e AdcVal _AdcVal i
_AdcMux::
.blkb 1
.dbsym e AdcMux _AdcMux c
_dataElem::
.blkb 6
.dbfile E:\ICCAVR_H\CmmICC.H
.dbsym e dataElem _dataElem A[6:6]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -