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

📄 max544.c

📁 该程序用来测试89C51与IDE硬盘的接口
💻 C
字号:
//max544  14位串行DA程序
#include <INTRINS.H>
#include <AT89X51.H>
#define uchar unsigned char
#define unint unsigned int
//#################################################
bdata unint Bcc;	//定义一个可位寻址的全局变量
sbit B0=Bcc^0;	sbit B1=Bcc^1;	sbit B2=Bcc^2;	sbit B3=Bcc^3;
sbit B4=Bcc^4;	sbit B5=Bcc^5;	sbit B6=Bcc^6;	sbit B7=Bcc^7;
sbit B8=Bcc^8;	sbit B9=Bcc^9;	sbit B10=Bcc^10;sbit B11=Bcc^11;
sbit B12=Bcc^12;sbit B13=Bcc^13;sbit B14=Bcc^14;sbit B15=Bcc^15;
//#################################################
#define CS  P1_2
#define SCK P1_0
#define SDA P1_1
//*************************************************
void Delayl(uchar T)	{uchar S;while (T--)       //延时子程序
	{for (S=200;S>0;S--){_nop_();_nop_();_nop_();} } }
//*************************************************
void Max544(unint d){ CS=1;SCK=0;Bcc=d;CS=0;//Max544 D/A转换子程序
	SDA=B13;SCK=1;_nop_();_nop_();SCK=0;//占空比必须为40%到60%
	SDA=B12;SCK=1;_nop_();_nop_();SCK=0;
	SDA=B11;SCK=1;_nop_();_nop_();SCK=0;
	SDA=B10;SCK=1;_nop_();_nop_();SCK=0;
	SDA=B9; SCK=1;_nop_();_nop_();SCK=0;
	SDA=B8; SCK=1;_nop_();_nop_();SCK=0;
	SDA=B7; SCK=1;_nop_();_nop_();SCK=0;
	SDA=B6; SCK=1;_nop_();_nop_();SCK=0;
	SDA=B5; SCK=1;_nop_();_nop_();SCK=0;
	SDA=B4; SCK=1;_nop_();_nop_();SCK=0;
	SDA=B3; SCK=1;_nop_();_nop_();SCK=0;
	SDA=B2; SCK=1;_nop_();_nop_();SCK=0;
	SDA=B1; SCK=1;_nop_();_nop_();SCK=0;
	SDA=B0; SCK=1;_nop_();_nop_();SCK=0;CS=1;}
//*************************************************  串行口初始化、发送接收子程序
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==1);  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);	//十位
	m=n%10;w=(uchar)(m+0x0030);Txd2(w);Txd2(0x0d);Txd2(0x0a);}//个位 回车
//*************************************************
main(){	unint a;Comstart();
	while(1){
		for(a=0;a<0x3fff;a++){
			Max544(a);Pc_com(a);Delayl(0x1f);}
			Pc_com(12345);Delayl(0x40);
	}
}

⌨️ 快捷键说明

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