⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 da.c

📁 一个串口终端解释程序。用于单片机调试串口的超级终端应用。
💻 C
字号:
/*-----------------------------------------------------------------------*
* Copyright (c) 2005,北京四方同创保护与控制设备有限公司稳控事业部
* All rights reserved.
*
* 文件名称:DA.c
* 摘    要:与D/A芯片AD420相关的功能函数
*           采用CSS-200/1规约V1.02版
* 当前版本:2.00
* 作    者:胡炯
* 完成日期:2005.7
*-----------------------------------------------------------------------*/

#include "56807.h"
#include "CSFU107.h"

void ControlDa(void);       //控制DA输出
void DaOutput(unsigned int DaOutputValue);      //输出DA数据
void Delay(void);           //延时功能函数

/*****控制DA输出*****/
void ControlDa(void)
{
    if (!DaOutputFlag)  //当前未在进行DA输出
    {
        DaMode = RunStat & 0x0001;  //更新装置运行状态设置
        if (InitDaFlag) //初始化DA输出8mA
        {
            InitDaFlag = 0;
            OutputDaValue = 16384;
            DaOutputFlag = TRUE;
            DaOutputStep = 1;
            DaOutput(OutputDaValue);
        }
        else if (DaOutputJudgeFlag)
        {
            DaOutputJudgeFlag = FALSE;

            if (E.ErrFlag || U.ErrFlag)
            {
                DaValue = 16384;
            }

            if (OutputDaValue != DaValue)
            {
                OutputDaValue = DaValue;
                DaOutputFlag = TRUE;
                DaOutputStep = 1;
                DaOutput(OutputDaValue);
            }
        }
    }
    else    //正在进行DA输出
    {
        DaOutput(OutputDaValue);

        if (DaOutputStep == 0)
        {
            DaOutputFlag = FALSE;
        }
    }
}
/*****end of 控制DA输出*****/


/*****输出DA数据*****/
void DaOutput(unsigned int DaOutputValue)
{
    switch (DaOutputStep)
    {
        case 0:
            break;
        case 1:
            SET_CLK_LOW;
            SET_LATCH_LOW;
            SET_CLEAR_LOW;
            Delay();
            DaOutputStep ++;
            break;
        case 2:
        case 3:
        case 4:
        case 5:
        case 6:
        case 7:
        case 8:
        case 9:
        case 10:
        case 11:
        case 12:
        case 13:
        case 14:
        case 15:
        case 16:
        case 17:
            if (DaOutputValue & MaskBit[17-DaOutputStep])
            {
                SET_DATAIN_HIGH;
            }
            else
            {
                SET_DATAIN_LOW;
            }
            Delay();
            SET_CLK_HIGH;
            Delay();
            SET_CLK_LOW;
            Delay();
            DaOutputStep ++;
            break;
        case 18:
            SET_LATCH_HIGH;
            Delay();
            SET_LATCH_LOW;
            DaOutputStep = 0;
            break;
        default:
            DaOutputStep = 0;
            break;
    }
}
/*****end of 输出DA数据*****/


/*****延时功能函数*****/
void Delay(void)
{
    unsigned int i;
    for (i=0; i<750; i++)
    {
        asm(nop);
    }
}
/*****end of 延时功能函数*****/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -