?? ad.s
字號:
.module ad.c
.area code(ram, con, rel)
.area lit(rom, con, rel)
_table::
.word 63
.word 6
.word 91
.word 79
.word 102
.word 109
.word 125
.word 7
.word 127
.word 111
.word 119
.word 124
.word 57
.word 94
.word 121
.word 113
.dbfile I:\AVR視頻教程\視頻教程\lesson8\ad/xianshi.c
.dbsym e table _table A[32:16]I
.area text(rom, con, rel)
.dbfile I:\AVR視頻教程\視頻教程\lesson8\ad/xianshi.c
.dbfunc e delay _delay fV
; i -> R20,R21
; j -> R22,R23
; ms -> R16,R17
.even
_delay::
rcall push_gset2
.dbline -1
.dbline 6
; #include <iom16v.h>
; #include <macros.h>
; #define uchar unsigned char
; #define uint unsigned int
; #include "xianshi.c"
; uint mega16_ad()
.dbline 8
; {
; uint addata;
clr R20
clr R21
rjmp L5
L2:
.dbline 9
; DDRA&=~BIT(PA0);
.dbline 10
clr R22
clr R23
rjmp L9
L6:
.dbline 10
L7:
.dbline 10
subi R22,255 ; offset = 1
sbci R23,255
L9:
.dbline 10
cpi R22,117
ldi R30,4
cpc R23,R30
brlo L6
.dbline 11
L3:
.dbline 8
subi R20,255 ; offset = 1
sbci R21,255
L5:
.dbline 8
cp R20,R16
cpc R21,R17
brlo L2
.dbline -2
.dbline 12
; PORTA&=~BIT(PA0);
; ADMUX=0;
; ADCSR=0X80;
L1:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r j 22 i
.dbsym r ms 16 i
.dbend
.dbfunc e show _show fV
; k -> R20
; j -> R22
.even
_show::
rcall push_gset2
mov R20,R18
mov R22,R16
.dbline -1
.dbline 14
; ADCSR|=BIT(ADSC);
; while(!(ADCSR&(BIT(ADIF))));
.dbline 15
; addata=ADCL;
sbi 0x1a,3
.dbline 16
; addata=addata+ADCH*256;
sbi 0x1a,4
.dbline 17
; return addata;
ldi R24,255
out 0x17,R24
.dbline 18
; }
sbi 0x1b,3
.dbline 19
;
ldi R24,<_table
ldi R25,>_table
mov R16,R22
clr R17
lsl R16
rol R17
add R16,R24
adc R17,R25
rcall lpm16
out 0x18,R16
.dbline 20
; void main()
cbi 0x1b,3
.dbline 22
; {
; uint ada,i,ad[4];
ldi R24,255
out 0x18,R24
.dbline 23
; while(1)
ldi R16,1
mov R17,R20
rcall lsl8
mov R2,R16
com R2
in R3,0x18
and R3,R2
out 0x18,R3
.dbline 24
; {
sbi 0x1b,4
.dbline 25
; ada=mega16_ad();//999 0999
cbi 0x1b,4
.dbline 26
; for(i=0;i<4;i++)
ldi R16,1
ldi R17,0
rcall _delay
.dbline -2
.dbline 27
; {
L10:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r k 20 c
.dbsym r j 22 c
.dbend
.dbfile I:\AVR視頻教程\視頻教程\lesson8\ad\ad.c
.dbfunc e mega16_ad _mega16_ad fi
; addata -> R16,R17
.even
_mega16_ad::
.dbline -1
.dbline 7
.dbline 9
cbi 0x1a,0
.dbline 10
cbi 0x1b,0
.dbline 11
clr R2
out 0x7,R2
.dbline 12
ldi R24,128
out 0x6,R24
.dbline 13
sbi 0x6,6
L12:
.dbline 14
L13:
.dbline 14
sbis 0x6,4
rjmp L12
.dbline 15
in R16,0x4
clr R17
.dbline 16
in R2,0x5
clr R3
mov R3,R2
clr R2
add R16,R2
adc R17,R3
.dbline 17
.dbline -2
L11:
.dbline 0 ; func end
ret
.dbsym r addata 16 i
.dbend
.dbfunc e main _main fV
; ad -> y+0
; ada -> R20,R21
; i -> R22,R23
.even
_main::
sbiw R28,8
.dbline -1
.dbline 21
rjmp L17
L16:
.dbline 24
.dbline 25
rcall _mega16_ad
mov R20,R16
mov R21,R17
.dbline 26
clr R22
clr R23
rjmp L22
L19:
.dbline 27
.dbline 28
ldi R30,3
ldi R31,0
sub R30,R22
sbc R31,R23
lsl R30
rol R31
mov R24,R28
mov R25,R29
add R30,R24
adc R31,R25
ldi R18,10
ldi R19,0
mov R16,R20
mov R17,R21
rcall mod16u
std z+0,R16
std z+1,R17
.dbline 29
ldi R18,10
ldi R19,0
mov R16,R20
mov R17,R21
rcall div16u
mov R20,R16
mov R21,R17
.dbline 30
L20:
.dbline 26
subi R22,255 ; offset = 1
sbci R23,255
L22:
.dbline 26
cpi R22,4
ldi R30,0
cpc R23,R30
brlo L19
.dbline 32
; ad[3-i]=ada%10;
; ada=ada/10;
; }
;
; for(i=0;i<4;i++)
clr R22
clr R23
rjmp L26
L23:
.dbline 33
.dbline 34
mov R18,R22
mov R24,R28
mov R25,R29
mov R30,R22
mov R31,R23
lsl R30
rol R31
add R30,R24
adc R31,R25
ldd R16,z+0
rcall _show
.dbline 35
ldi R16,2
ldi R17,0
rcall _delay
.dbline 35
sbi 0x1a,3
.dbline 36
sbi 0x1a,4
.dbline 37
ldi R24,255
out 0x17,R24
.dbline 38
L24:
.dbline 32
subi R22,255 ; offset = 1
sbci R23,255
L26:
.dbline 32
cpi R22,4
ldi R30,0
cpc R23,R30
brlo L23
.dbline 39
L17:
.dbline 23
rjmp L16
X0:
.dbline -2
.dbline 40
; {
; show(ad[i],i);
; delay(2); DDRA|=BIT(3);
; DDRA|=BIT(4);
; DDRB=0XFF;
; }
; }
; }
L15:
adiw R28,8
.dbline 0 ; func end
ret
.dbsym l ad 0 A[8:4]i
.dbsym r ada 20 i
.dbsym r i 22 i
.dbend
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -