打印
[AVR单片机]

AD7708问题求助

[复制链接]
2885|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
天神下凡|  楼主 | 2010-11-3 13:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
LEDS| | 2010-11-3 17:55 | 只看该作者
我的可用的汇编子程序,参考一下吧.

.equ        mr                =$01        ;模式寄存器
.equ        adccr                =$02        ;AD转换控制寄存器
.equ        fr                =$03        ;滤波寄存器
.equ        iocon                =$07        ;IO控制寄存器

ad7708_init:
        ldi        r16,                adccr        ;控制寄存器
                                        ;bit7 CH3
                                        ;bit6 CH2
                                        ;bit5 CH1
                                        ;bit4 CH0
                                        ;bit3 U/B=1为单极性,U/B=0为双极性
                                        ;bit2-0 RN2-0 ADC输入范围(VREF = 2.5 V)
                                        ;0 0 0 ±20 mV
                                        ;0 0 1 ±40 mV
                                        ;0 1 0 ±80 mV
                                        ;0 1 1 ±160 mV
                                        ;1 0 0 ±320 mV
                                        ;1 0 1 ±640 mV
                                        ;1 1 0 ±1.28 V
                                        ;1 1 1 ±2.56 V
        call        wri_ad7708
        ldi        r16,                $0f        ;
        call        wri_ad7708
       
        ldi        r16,                MR        ;模式寄存器
        call        wri_ad7708                ;bit7 chop=0工作在斩波方式
                                        ;bit6 negbuf=1AINCOM缓冲输入,此位只在单端方式有意义
                                        ;bit5 refsel=0,VREF=REFIN1(+)-REFIN1(-);bit5 =1,VREF=REFIN2(+)-REFIN2(-)
                                        ;bit4 chcon=0,配置成8通道(8 个单端或4 对差分),此时可以选择两种参考电压之一
                                        ;     chcon=1,配置成10 通道,此时参考电压只能选择REFIN1(+)-REFIN1(-)
                                        ;bit3 oscpd=1,若ADC 进入备用模式时将使振荡器停振,这样可以减少功耗
                                        ;bit2-0 MD2-MD0模式选择位,8 种工作模式:掉电,空闲,单次转换,连续转换,零点校正,满幅校正
        ldi        r16,                $13                ;
        call        wri_ad7708

        ret

wri_ad7708:        ;
        ldi        r17,                7
        cbi        ad_port,        ad_clk
wri_ad7708a:
        lsl        r16
        brcc        wri_ad7708b
        sbi        ad_port,        ad_di
        jmp        wri_ad7708c
wri_ad7708b:
        cbi        ad_port,        ad_di
wri_ad7708c:
        sbi        ad_port,        ad_clk
        cbi        ad_port,        ad_clk
        dec        r17
        brne        wri_ad7708a
        lsl        r16
        brcc        wri_ad7708d
        sbi        ad_port,        ad_di
        jmp        wri_ad7708e
wri_ad7708d:
        cbi        ad_port,        ad_di
wri_ad7708e:
        sbi        ad_port,        ad_clk
        sbi        ad_port,        ad_di
        ret

rd_ad7708:
        ldi        r16,                $44        ;读数据寄存器
        call        wri_ad7708
       
        ldi        r17,                8
rd_ad7708a:
        cbi        ad_port,        ad_clk
        sbi        ad_port,        ad_clk
        sbic        ad_pin,                ad_do
        jmp        rd_ad7708b
        clc
        jmp        rd_ad7708c
rd_ad7708b:
        sec
rd_ad7708c:
        rol        r16
        dec        r17
        brne        rd_ad7708a
        sts        ads_hi,                r16
       
        ldi        r17,                8
rd_ad7708d:
        cbi        ad_port,        ad_clk
        sbi        ad_port,        ad_clk
        sbic        ad_pin,                ad_do
        jmp        rd_ad7708e
        clc
        jmp        rd_ad7708f
rd_ad7708e:
        sec
rd_ad7708f:
        rol        r16
        dec        r17
        brne        rd_ad7708d
        sts        ads_lo,                r16
               
        ret

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

1302

帖子

0

粉丝