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

📄 tlc1543.c

📁 该程序用来测试89C51与IDE硬盘的接口
💻 C
字号:
//TI公司TLC1543 
#include <INTRINS.H>
#include <AT89x51.H>
#define uchar unsigned char
#define unint unsigned int
//#################################################
#define EOC  P1_0	//定义接口引脚
#define SCK  P1_1
#define ADDR P1_2
#define SDA  P1_3
#define CS   P1_7
//#################################################
void DELAYL(uchar T)	{uchar S;while (T--)       //延时子程序
	{for (S=200;S>0;S--){_nop_();_nop_();_nop_();} } }
//*************************************************
unint Tlc1543(uchar adr)	//10时钟特定地址快速AD转换
{unint data ad;unint data i;
 uchar data al=0,ah=0;
 SCK=0;CS=0;adr<<=4;
for (i=0;i<4;i++){ 		//送入AD转换通道地址
	ADDR=(bit)(adr&0x80);SCK=1;SCK=0;
	adr<<=1;	}
for (i=0;i<6;i++) {		//填充6个SCK
	SCK=1;SCK=0;	}
	CS=1;
	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
	_nop_();_nop_();_nop_();	CS=0; //等待AD转换
	_nop_();_nop_();_nop_();
for (i=0;i<2;i++) {		//取D9,D8
	SDA=1;SCK=1;ah<<=1;
	if (SDA) ah|=0x01;	SCK=0; }	
for (i=0;i<8;i++) {		//取D7--D0
	SDA=1;SCK=1;al<<=1;
	if (SDA) al|=0x01; SCK=0; }	
	CS=1;
	ad=(unint)ah;ad<<=8;ad|=(unint)al; //得到AD值
	return (ad); }
//*************************************************  串行口初始化、发送接收子程序
void Comstart(void){	TMOD=0X20;TL1=0xfd;TH1=0xfd;	//256-11059200/384/9600=0xfd
	SCON=0x40;PCON=0x00;TR1=1;	//方式1,波特率不加倍,计数器开 
	IE=0x00;}	//中断总允许,允许串行中断	
//*************************************************
void Txd2(uchar z)	//串口发送子程序
{	SBUF=z;	while(TI==0);  TI=0;	}//为0等待
//*************************************************
void Pc_com(unint a){	unint m,n;  uchar w;
	m=a/10000;w=(uchar)(m+0x0030);Txd2(w);		//万位
	m=a%10000;n=m/1000;w=(uchar)(n+0x0030);Txd2(w);	//千位
	n=m%1000;m=n/100;w=(uchar)(m+0x0030);Txd2(w);	//百位
	m=n%100;n=m/10;w=(uchar)(n+0x0030);Txd2(w);	//十位
	n=m%10;w=(uchar)(n+0x0030);Txd2(w);Txd2(0x0d);Txd2(0x0a);}//个位 回车
//*************************************************
main(){ unint a; Comstart();
//	while(1){for (a=0;a<1;a++){	//逐个AD通道进行模数转换
//	b=TLC1543(a);Pc_com(b);
//	DELAYL(0xcf);	}	}
//*************************************************
	while(1){	//逐个AD通道进行模数转换
	a=Tlc1543(0x00);Pc_com(a);
	a=Tlc1543(0x01);Pc_com(a);
	a=Tlc1543(0x02);Pc_com(a);Txd2(0x0d);Txd2(0x0a);
	a=Tlc1543(0x0b);Pc_com(a);
	a=Tlc1543(0x0c);Pc_com(a);
	a=Tlc1543(0x0d);Pc_com(a);Txd2(0x0d);Txd2(0x0a);
	Txd2(0x0d);Txd2(0x0a);
	DELAYL(0xcf);	}
}

⌨️ 快捷键说明

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