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

📄 dac0832.c

📁 该程序用来测试89C51与IDE硬盘的接口
💻 C
字号:
//通过DAC0832产生各种波形		
#include <AT892051.H>
#include <math.H>
#define uchar unsigned char
#define uint unsigned int
//*************************************************
#define lin1 P3_2
#define lin2 P3_3
#define dat  P3_4
#define clk  P3_5
//*************************************************
sbit a0=ACC^0;		sbit a1=ACC^1;		sbit a2=ACC^2;		sbit a3=ACC^3;
sbit a4=ACC^4;		sbit a5=ACC^5;		sbit a6=ACC^6;		sbit a7=ACC^7;
//*************************************************
void delay (uchar t)	//延时子程序
{	uchar s;
	while (t--)
		{for (s=0xff;s>0;s--)
			{;}
		}
}
//*************************************************
uchar jianma(uchar a)		//按键特征码转换成16进制码
{	switch (a)
	{case 0x01:{a=0x00;}break;	
	 case 0x02:{a=0x01;}break;	
	 case 0x03:{a=0x02;}break;
	 case 0x04:{a=0x03;}break;
	 case 0x05:{a=0x04;}break;
	 case 0x06:{a=0x05;}break;
	 case 0x07:{a=0x06;}break;
	 case 0x08:{a=0x07;}break;
	 case 0x81:{a=0x08;}break;
	 case 0x82:{a=0x09;}break;
	 case 0x83:{a=0x0a;}break;
	 case 0x84:{a=0x0b;}break;
	 case 0x85:{a=0x0c;}break;
	 case 0x86:{a=0x0d;}break;
	 case 0x87:{a=0x0e;}break;
	 case 0x88:{a=0x0f;}break;
	 default:{a=0xff;}
	 }
	 return (a);
}
//*************************************************
void txd(uchar z)	//串口发送子程序
{  	TMOD=0X20;
	TL1=0xfd;TH1=0xfd;	//256-11059200/384/9600=0xfd
	SCON=0x50;PCON=0x00;	//fang shi 1
	TR1=1;		//ji shu qi 
	SBUF=z;
	while (TI==0);	//wei 0 deng dai 
	TI=0;
}
//*************************************************
uchar rxd(void)	//串口接收子程序
{  	uchar x;
	TMOD=0X20;
	TL1=0xfd;TH1=0xfd;	//256-11059200/384/9600=0xfd
	SCON=0x50;PCON=0x00;	//fang shi 1
	TR1=1;		//ji shu qi 
	while (RI==0);
	 RI=0;
	 x=SBUF;
	 return (x);
}
//*************************************************
void da1(void)			//	/|/|/|/|/|/|/|/|
{uchar a;
 while (1)
 	{for (a=0;a<255;a++)
		{P1=a;}
	}
}
//*************************************************
void da2(void)			//_-_-_-_-_-_-_-_-_-
{while (1)
 	{P1=0xff;
	 P1=0x00;
	}
}
//*************************************************
void da3(void)			//^^^^^^^^^^^^^^^^^
{uchar a;
 while (1)
 	{for (a=0;a<255;a++)
		{P1=a;}
	 for (a=255;a>0;a--)
		{P1=a;}

	}
}
//*************************************************
void ls164(uchar ls)
{ACC=ls;
 dat=a7;	clk=0;	clk=1;	ACC=ls;
 dat=a6;	clk=0;	clk=1;	ACC=ls;
 dat=a5;	clk=0;	clk=1;	ACC=ls;
 dat=a4;	clk=0;	clk=1;	ACC=ls;
 dat=a3;	clk=0;	clk=1;	ACC=ls;
 dat=a2;	clk=0;	clk=1;	ACC=ls;
 dat=a1;	clk=0;	clk=1;	ACC=ls;
 dat=a0;	clk=0;	clk=1;	
}
//*************************************************
uchar key(void)
{uchar a;
 lin1=1;	lin2=1;		ls164(0x00);
 if ((lin1&&lin2)==0)		//key is on
 	{delay(0x01);	ls164(0xff);
	 dat=0;
	 for (a=8;a>0;a--)
		{clk=0;	clk=1;
		 if (lin1==0) {return (a);     break;} 
		 if (lin2==0) {return (a|0x80);break;}
		 dat=1;
		}
	 return (0x00);
	}
 return (0x00);
}
//#################################################
main ()
{uchar a,b;		//ad di zhi
 txd(0xff);
 while (1)
	{lin1=1;	lin2=1;		ls164(0x00);
	 if ((lin1&&lin2)==0)		//key is on
	   	{a=key();	b=jianma(a);
	     while ((lin1&&lin2)==0);
		 if (b<0x10)	{txd(b);}
		 if (b==0x01)   {da2();}
		 if (b==0x02)	{da2();}
		 if (b==0x03)	{da3();}
	    }
	}
}

⌨️ 快捷键说明

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