您的位置:首页技术文栏单片机C51
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

单片机串行AD程序与原理图

[日期:2008-07-12 ] [来源:东哥单片机学习网 www.picavr.com 整理 作者:佚名] [字体: (投递新闻)
 
以下是serialADC.c的内容
=============================================
 
#include "SerialADC.h"
/* 外部中断0服务子程序 */
void int0svr(void) interrupt 0 using 1
{
 uchar count,tmp,i;
 
 EX0 = 0;   // 关闭外部中断0
 tmp = 0;
 CS = 1;    // /CS置高,片选无效
 IOCLK = 0;   // I/O CLK置低
 CS = 0;    // 片选有效
 _nop_();   // 执行一步空指令起到延时至少1.4us的作用
 
 for (count=0;count<8;count++)
 {
  IOCLK = 1;  // I/O CLOCK置高  
  if (DATAOUT)
   tmp++; 
  tmp = tmp<<1;   // 左移一位
  IOCLK = 0;  // I/O CLOCK置低
 }
 CS = 1;    // /CS置高,片选无效 
 DataResult = tmp;
 for(i=0;i<3;i++) // 适当延时超过17us
     _nop_(); 
 EX0 = 1;  // 打开外部中断0
}
void main()
 EA = 1;
 EX0 = 1;   // 打开外部中断0
 
 /* 无限循环,等待外部中断0启动模数转换 */
 while(1);
}
======================================
以下是SerialADC.h 的内容
======================================
 
#ifndef _SERIALADC_H     // 防止SerialADC.h被重复引用
#define _SERIALADC_H
#include <reg52.h>        // 引用标准库的头文件
#include <intrins.h>
#define uchar unsigned char
uchar DataResult;       // 存放转换后数据
sbit IOCLK = P1^0;     // 输入输出时钟I/O CLK
sbit DATAOUT = P1^1;    // 数据输出DATA OUT
sbit CS = P1^2;      // 片选信号
#endif
阅读:
录入:JETTA

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
赞助商广告