MAXSIZAE

MAXSIZAE

0个粉丝

10

问答

0

专栏

9

资料

MAXSIZAE  发布于  2008-07-15 18:45:12
采纳率 0%
10个问答
3590

单片机处理2543的代码

[code]#include "c51.h"
#define uchar unsigned char
#define uint  unsigned int
sbit EOC = P0^0;
sbit D_CLOCK = P0^1;
sbit D_IN = P0^2;
sbit D_OUT = P0^3;
sbit D_CS = P0^4;
//TI TLC2543 12位AD驱动程序,51晶振是11.0592MHz的。
/*------------------------------------------------------------------------------
调用方式:uint Read2543(uchar port)
函数说明:port是采样的通道号  0-----10
--------------------------------------------------------------------------------
-*/
//当前返回的测量值是上一次输入的结果。
uint Read2543(uchar port) //从TLC1543读取采样值,形参port是采样的通道号
{
        uchar high_4,low_8;  //返回的测量值的高4位、低8位
        uchar mTemp;
        D_CLOCK=0;
        D_CS=0;
        high_4=0;
        low_8=0;
        //把通道号(4位)打入2543    **代码虽然麻烦,但编译后的执行速度很快**
        D_IN=(bit)(port&0x08);
        D_CLOCK=1;
        mTemp=(uchar)D_OUT;
        high_4|=mTemp<<3;
        D_CLOCK=0;
        D_IN=(bit)(port&0x04);
        D_CLOCK=1;
        mTemp=(uchar)D_OUT;
        high_4|=mTemp<<2;
        D_CLOCK=0;
        D_IN=(bit)(port&0x02);
        D_CLOCK=1;
        mTemp=(uchar)D_OUT;
        high_4|=mTemp<<1;
        D_CLOCK=0;
        D_IN=(bit)(port&0x01);
        D_CLOCK=1;
        mTemp=(uchar)D_OUT;
        high_4|=mTemp;
        D_CLOCK=0;

        //参数设定开始
        //注意:参数的设定只对下一周期的测量有效,对本次取样没有作用
        D_IN=0;
        D_CLOCK=1;
        mTemp=(uchar)D_OUT;
        low_8|=mTemp<<7;
        D_CLOCK=0;   //选择12位的数据长度
        D_IN=0;
        D_CLOCK=1;
        mTemp=(uchar)D_OUT;
        low_8|=mTemp<<6;
        D_CLOCK=0;
        D_IN=0;
        D_CLOCK=1;
        mTemp=(uchar)D_OUT;
        low_8|=mTemp<<5;
        D_CLOCK=0;  //高位在前输出
        D_IN=0;
        D_CLOCK=1;
        mTemp=(uchar)D_OUT;
        low_8|=mTemp<<4;
        D_CLOCK=0;  //单极性输出
        //参数设定结束
        D_CLOCK=1;   //填充4个任意位
         mTemp=(uchar)D_OUT;
        low_8|=mTemp<<3;
        D_CLOCK=0;
        D_CLOCK=1;
        mTemp=(uchar)D_OUT;
        low_8|=mTemp<<2;
        D_CLOCK=0;
        D_CLOCK=1;
        mTemp=(uchar)D_OUT;
        low_8|=mTemp<<1;
        D_CLOCK=0;
        D_CLOCK=1;
        mTemp=(uchar)D_OUT;
        low_8|=mTemp;
        D_CLOCK=0;
        D_CS=1;
        return (uint)(high_4*256+low_8);
}[/code]
我来回答
回答0个
时间排序
认可量排序
易百纳技术社区暂无数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区