打印
[KungFu8位 MCU]

KF8F210运放校准代码示例

[复制链接]
525|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xujunyi3611|  楼主 | 2018-9-25 21:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/****************************************************************************************
*
* 文件名: main.c
* 项目名: s1006
* 版 本: v1.0
* 日 期: 2016年05月24日 11时30分18秒
* 作 者: Administrator
*
****************************************************************************************/
#include<KF8F210.h>

#define uchar unsigned char
#define uint  unsigned int
void Delay_200us()
{
        uchar i = 240;
        while(--i);
}
//;***************************************************************
//; 函  数 名:void Delay50Us()
//;功能函数:延时函数,50us
//;入口参数:无
//;返回参数:无
//;***************************************************************
void Delay50Us()
{
        char cnt ;
        cnt = 30;
        while(cnt--);
}
/*****************************************************
* 函数名称:initFun()
* 函数功能:运放校正使能
* 输入:        无
* 输出:        无
*
*
***************************************************** */
void        OP_fun()
{
        unsigned char first_back_up,i,val_AMPCALI;
        AMP2ON =1;
        Delay50Us();
        Delay50Us();
        CALIEN =1;
        Delay50Us();
        Delay50Us();
        first_back_up = AMPCTL & 0x80;
        val_AMPCALI = first_back_up;        //保存第一次的值,用于以后判断的标准

        for(i=0;i<64;i++)
        {
                AMPCALI=val_AMPCALI;
                Delay50Us();
                Delay50Us();
                Delay50Us();
                if(first_back_up !=(AMPCTL & 0x80))
                {
                        CALIEN = 0;                                                                //关闭自校准使能,运放2可以进行采样,运放2已经使能,不需要重新打开
                    return;
                }
                val_AMPCALI++;
        }
        CALIEN = 0;

}
void  initallFun()
{
        OSCCTL =0X70;
        TR0 = 0b00001011;
        TR1 = 0b10000100;
        TR2 = 0b11110000;

        P0 = 0B00100000;
        P1 = 0B00000000;
        P2 = 0B00000000;

        ANSEL = 0b01100000;
        ANSEH = 0b00001111;
}
void DelayMs (uint Num)
{
        uint        cnt;
        while(Num--)
        {
                cnt=2000;
                while(cnt--);
        }
}

//主函数
void main()
{
        initallFun();
        DelayMs(50);
        OP_fun();
        while(1);
}
//中断函数
void int_fun() __interrupt
{

}


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

本版积分规则

60

主题

376

帖子

2

粉丝