打印

单片机采样处理恒流的问题

[复制链接]
1962|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
szjgjg|  楼主 | 2008-8-12 16:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
高手哇,现身吧!
我用PIC处理横流的问题脉宽不调整,帮忙看看程序吧:
org    0x1ff
    movlw    0x1e
org 0x00
    movwf    OSCCAL            ;时钟校准同时GP2设为数字IO
main                        ;主程序由此开始
    MOVLW    0x00            ;初始化IO
    MOVWF    GPIO
    movlw    0xcf            ;设置禁止弱上拉,禁止引脚电平变化唤醒,预分频器指向WDT,1:128倍分频,看门狗周期2.3秒
    OPTION                    ;GP2设为数字IO
    movlw    0xc5            ;配置ADCON0为GP0模拟输入,GP1为数字IO,模拟输入通道为GP0,使能AD转换
    movwf    ADCON0
    movlw   0x0b            ;设置I/O方向,GP0、GP3输入,GP1、GP2输出
    TRIS    GPIO
    clrf    buffer_old        ;把模数转换结果寄存器清零
    clrf    buffer_new
    movlw    0x03            ;比较次数计数器送初值
    movwf    comp_count
    movlw    0xff            ;起始充电时间循环次数寄存器送初值60次
    movwf    tim_5min        
    clrf    low_level        ;相关变量送初值    
    clrf    var_4
    movlw    0xff            ;电池数量计算初值
    movwf    bat_no_
    movlw    0x08            ;起始充电时连续检测到8次(约16秒)电压无变化
    movwf    var_equ_tim
;-------------------电池检测阶段,无电池或电池电压过低则在此等候,电池完好充电开始------------------------------
movlw    0x55
movwf    low_level
goto    circle
org  0x70
circle
    bsf        ADCON0,CHS0
    MOVLW    0X04
    MOVWF    GPIO
    call    samp_flit
    ;bsf        ADCON0,1        ;启动AD转换
    ;call    ad_simp_dela
    ;btfsc    ADCON0,1        ;测试转换是否完成,完成则取值比较,否则继续等待
    ;goto    $-1    
    movlw    0x19
    subwf    buffer_new,0
    btfsc    STATUS,Z
    goto    _low
    btfss    STATUS,C
    goto    $+2
    goto    $+3
    incf    low_level,1
    GOTO    _low
    decf    low_level,1
    GOTO    _low
    clrwdt
_low
    MOVLW    0X00
    MOVWF    GPIO
    movf    low_level,0
    movwf    var_2
    decfsz    var_2,1
    goto    $-1
    clrwdt
    ;decfsz    var_1,1
    GOTO    circle
    return
org        0x8f
;------------------电池电压采样,数字滤波程序段-----------------------------------------------------
samp_flit
    ;BCF        ADCON0,CHS0
    movlw    0x4
    movwf    ad_count
ad_sigle
    bsf        ADCON0,1        ;启动AD转换
    call    ad_simp_dela
    btfsc    ADCON0,1        ;测试转换是否完成,完成则取值比较,否则继续等待
    goto    $-1
    movf    ADRES,0            ;取本次转换结果
    addwf    ad_temp_l,1
    btfsc    STATUS,C
    incf    ad_temp_h
    decfsz    ad_count,1
    goto    ad_sigle
    bcf        STATUS,C
    movlw    0x03
    movwf    div_count
div_sigle
    btfss    ad_temp_h,0
    goto    $+3
    bsf        STATUS,C
    GOTO    $+2
    bcf        STATUS,C
    rrf        ad_temp_l,1
    rrf        ad_temp_h,1
    decfsz    div_count,1
    goto    div_sigle
    movf    ad_temp_l,0
    movwf    buffer_new
    clrwdt
    return
    end
沙发
szjgjg|  楼主 | 2008-8-12 16:21 | 只看该作者

re

采样电压和数字滤波一段程序没有问题的,已经调通了

使用特权

评论回复
板凳
兰天白云| | 2008-8-12 21:16 | 只看该作者

用什么单片机?电路图来个

使用特权

评论回复
地板
szjgjg|  楼主 | 2008-8-13 09:48 | 只看该作者

re

单片机采用10F222/220,图上没有划出采样的滤波电容,实际电路已经加了。

使用特权

评论回复
5
兰天白云| | 2008-8-14 13:10 | 只看该作者

你用PWM控制充电电流?
在程序里没看到PWM调整

使用特权

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

本版积分规则

14

主题

34

帖子

0

粉丝