📄 adc0832.s
字号:
.module adc0832.c
.area text(rom, con, rel)
.dbfile F:\学习\AVR单片机\AVR实验\adc0832_avr\adc0832.c
.dbfunc e read_adc _read_adc fc
; data1 -> R16
; i -> R18
.even
_read_adc::
.dbline -1
.dbline 7
; //adc0832相关程序
; #include "adc0832.h"
;
;
;
; uchar read_adc(void)
; {
.dbline 9
; uchar i,data1;
; Clr_adc_cs;//bADcs = 0;
cbi 0x18,6
.dbline 10
; Clr_adc_clk;//bADcl=0;
cbi 0x18,5
.dbline 12
;
; Set_adc_data;//bADda=1; //PB.4
sbi 0x18,4
.dbline 13
; Set_adc_clk;//bADcl=1; //PB.5
sbi 0x18,5
.dbline 14
; Clr_adc_clk;//bADcl=0;
cbi 0x18,5
.dbline 16
;
; Set_adc_data;//bADda=1;
sbi 0x18,4
.dbline 17
; Set_adc_clk;// bADcl=1;
sbi 0x18,5
.dbline 18
; Clr_adc_clk;//bADcl=0;
cbi 0x18,5
.dbline 19
; Clr_adc_data;//bADda=0;
cbi 0x18,4
.dbline 21
;
; Set_adc_clk;//bADcl=1;
sbi 0x18,5
.dbline 22
; Clr_adc_clk;//bADcl=0;
cbi 0x18,5
.dbline 23
; Set_adc_data;//bADda=1;
sbi 0x18,4
.dbline 25
;
; Set_adc_clk;//bADcl=1;
sbi 0x18,5
.dbline 26
; Clr_adc_clk;//bADcl=0;
cbi 0x18,5
.dbline 27
; adc_data_in; //DDRB清零,单片机输入
cbi 0x17,4
.dbline 28
; for(i=8;i>0;i--)
ldi R18,8
rjmp L5
L2:
.dbline 29
; {
.dbline 30
; data1<<=1;
lsl R16
.dbline 31
; Clr_adc_clk;//bADcl=0;
cbi 0x18,5
.dbline 32
; asm("nop"); //延时很关键1us
nop
.dbline 33
; Set_adc_clk;//bADcl=1;
sbi 0x18,5
.dbline 34
; asm("nop");
nop
.dbline 35
; if(adc_read_data) data1|=0x01;
sbis 0x16,4
rjmp L6
X0:
.dbline 35
ori R16,1
L6:
.dbline 36
; }
L3:
.dbline 28
dec R18
L5:
.dbline 28
ldi R24,0
cp R24,R18
brlo L2
X1:
.dbline 37
; Set_adc_cs;// bADcs=1;
sbi 0x18,6
.dbline 38
; adc_data_out;
sbi 0x17,4
.dbline 40
;
; return data1;
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r data1 16 c
.dbsym r i 18 c
.dbend
.dbfunc e returnvol _returnvol fi
; data2 -> R10
.even
_returnvol::
rcall push_xgsetF00C
.dbline -1
.dbline 45
;
; }
;
; uint returnvol(void)
; {
.dbline 47
; uchar data2;
; data2=((ulong)read_adc()*493)/256;
rcall _read_adc
mov R2,R16
clr R3
clr R4
clr R5
ldi R20,237
ldi R21,1
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
rcall empy32u
ldi R24,8
ldi R25,0
st -y,R24
rcall lsr32
mov R10,R16
.dbline 49
;
; return data2;
clr R17
.dbline -2
L8:
.dbline 0 ; func end
rjmp pop_xgsetF00C
.dbsym r data2 10 c
.dbend
;
; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -