📄 ai.c
字号:
#include <reg52.h>
#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <intrins.h>
//==========AD采样模块============//
//TLC1543 A/D用转换用
sbit CLOCK=P0^3 ;
sbit D_IN=P0^1 ; // from cpu to 1543
sbit D_OUT=P0^2;
sbit CS_1543=P0^0 ;
//========================新版本=======================
#pragma NOAREGS
unsigned int read1543(unsigned char byte) //从TLC1543读取采样值,形参byte是采样的通道号
{
unsigned int data ad;
unsigned char i;
unsigned char al=0,ah=0;
byte=byte<<4;
EA=0; // disable interrupt;
D_IN=1;
CLOCK=0;
CS_1543=0;
i=4;
while(i) {
i--;
D_OUT=(bit)(byte&0x80);
CLOCK=1;
CLOCK=0;
byte=byte<<1;
}
D_OUT=0; // 输入6个 0
i=6;
while(i){ // 填充6个CLOCK
i-- ;
CLOCK=1;
CLOCK=0;
}
CS_1543=1;
EA=1;
for(i=0;i<255;i++){
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
EA=0;
CS_1543=0; //等待AD转换
i=2;
while(i) //取D9,D8
{
i--;
CLOCK=1;
ah<<=1;
if(!D_IN) ah=ah|0x1;
CLOCK=0;
}
i=8;
while(i) //取D7--D0
{
i--;
CLOCK=1;
al<<=1;
if(!D_IN) al=al|0x1;
CLOCK=0;
}
CS_1543=1; // 减小功耗
CLOCK=1; // 减小功耗
D_OUT=1; // 减小功耗
EA=1;
ad=(unsigned int)ah;
ad<<=8;
ad|=al; //得到AD值
return (ad);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -