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

📄 program.c

📁 这是一个功率计参数表格的程序
💻 C
字号:
#include <Program.h>

uint data attenuation = 3000;   // 衰减量,表示50dB
uint data frequency = 100;   //  频率值,表示1000MHz
uint data num;

//存放22个定标电压值,分别对应于0mw, 5mw, 10mw,..........100mw
uint code Volt0[22] = {0,98,317,493,631,747,849,944,1031,1111,1187,1256,1325,1381,1429,1479,1527,1570,1629,1653,1692,1741};
uint code Volt1[22] = {0,97,316,491,629,745,846,941,1028,1108,1184,1253,1322,1379,1426,1476,1524,1567,1624,1651,1690,1740};
uint code Volt2[22] = {0,97,318,494,632,748,849,942,1028,1106,1180,1246,1307,1363,1416,1464,1509,1549,1590,1625,1661,1690};
uint code Volt3[22] = {0,97,315,490,626,742,843,937,1023,1102,1176,1244,1315,1367,1415,1464,1510,1551,1598,1630,1667,1712};
uint code Volt4[22] = {0,95,311,483,617,731,832,923,1008,1085,1158,1223,1294,1343,1390,1438,1483,1522,1564,1596,1631,1675};
uint code Volt5[22] = {0,95,310,483,618,732,833,925,1009,1087,1161,1227,1299,1348,1396,1443,1488,1529,1572,1604,1640,1684};
uint code Volt6[22] = {0,94,309,481,615,729,830,921,1005,1082,1156,1222,1294,1343,1391,1439,1484,1524,1567,1600,1635,1680};
uint code Volt7[22] = {0,94,308,479,612,725,825,916,999,1076,1150,1215,1289,1336,1384,1432,1477,1518,1560,1594,1629,1674};
uint code Volt8[22] = {0,93,303,471,603,715,814,904,986,1062,1135,1200,1274,1325,1368,1416,1462,1502,1543,1578,1613,1659};

void main()
{
	uchar i, adhigh, adlow;
//	AUXR = AUXR|0x02;
	Dlms(3000);
	P2 = 0;
	Dlms(2000);
	Write24LC16P(0xa0, 0xfc, (uchar)(frequency/256));
	Write24LC16P(0xa0, 0xfd, (uchar)(frequency%256));
	Write24LC16P(0xa0, 0xfe, (uchar)(attenuation/256));
	Write24LC16P(0xa0, 0xff, (uchar)(attenuation%256));
	for(i = 0; i < 22; i++)
	{
		adhigh = (uchar)(Volt0[i] /256);
		adlow = (uchar)(Volt0[i]%256);
		Write24LC16P(0xa0, i*2, adhigh);
		Write24LC16P(0xa0, (i*2 + 1), adlow);
	}
	for(i = 0; i < 22; i++)
	{
		adhigh = (uchar)(Volt1[i] /256);
		adlow = (uchar)(Volt1[i]%256);
		Write24LC16P(0xa0, (44 + i*2), adhigh);
		Write24LC16P(0xa0, (44 + i*2 + 1), adlow);
	}
	for(i = 0; i < 22; i++)
	{
		adhigh = (uchar)(Volt2[i] /256);
		adlow = (uchar)(Volt2[i]%256);
		Write24LC16P(0xa0, (88 + i*2), adhigh);
		Write24LC16P(0xa0, (88 + i*2 + 1), adlow);
	}
	for(i = 0; i < 22; i++)
	{
		adhigh = (uchar)(Volt3[i] /256);
		adlow = (uchar)(Volt3[i]%256);
		Write24LC16P(0xa0, (132 + i*2), adhigh);
		Write24LC16P(0xa0, (132 + i*2 + 1), adlow);
	}
	for(i = 0; i < 22; i++)
	{
		adhigh = (uchar)(Volt4[i] /256);
		adlow = (uchar)(Volt4[i]%256);
		Write24LC16P(0xa0, (176 + i*2), adhigh);
		Write24LC16P(0xa0, (176 + i*2 + 1), adlow);
	}
	for(i = 0; i < 22; i++)
	{
		adhigh = (uchar)(Volt5[i] /256);
		adlow = (uchar)(Volt5[i]%256);
		Write24LC16P(0xa2, i*2, adhigh);
		Write24LC16P(0xa2, (i*2 + 1), adlow);
	}
	for(i = 0; i < 22; i++)
	{
		adhigh = (uchar)(Volt6[i] /256);
		adlow = (uchar)(Volt6[i]%256);
		Write24LC16P(0xa2, (44 + i*2), adhigh);
		Write24LC16P(0xa2, (44 + i*2 + 1), adlow);
	}
	for(i = 0; i < 22; i++)
	{
		adhigh = (uchar)(Volt7[i] /256);
		adlow = (uchar)(Volt7[i]%256);
		Write24LC16P(0xa2, (88 + i*2), adhigh);
		Write24LC16P(0xa2, (88 + i*2 + 1), adlow);
	}
	for(i = 0; i < 22; i++)
	{
		adhigh = (uchar)(Volt8[i] /256);
		adlow = (uchar)(Volt8[i]%256);
		Write24LC16P(0xa2, (132 + i*2), adhigh);
		Write24LC16P(0xa2, (132 + i*2 + 1), adlow);
	}
	P2 = 0xff;
       while(1)  ;
}

//****************************************************************************
//探头上24LC16 的读写操作
void write_8bitP(uchar ch)      //注意延时????!!!!
{
	uchar i=8;
	SCL=0;
	Dlus(5);
	while (i--)
	{
		SDA_P=(bit)(ch&0x80);
		Dlus(5);
		ch<<=1;
		SCL=1;
		Dlus(5);
		SCL=0;
		Dlus(1);
	}
	Dlms(5);
}

void ACKP(void)   //等待ACK 位
{
	SDA_P=1;
	SCL=0;
	Dlus(5);
	SCL=1;
	while(SDA_P) {;} //ACK
	SCL=0;
	Dlus(1);
}

void Write24LC16P(uchar ctr_byte, word_addr, ddata)  // ctr_bytr: 1010xxx0
{
	SCL=1;
	Dlus(5);
	SDA_P=0;
	Dlus(5);
	SCL=0; //START
	write_8bitP(ctr_byte); //control byte
	ACKP();
	write_8bitP(word_addr);  //word address
	ACKP();
	write_8bitP(ddata);
	ACKP();
	SDA_P =0;
	Dlus(5);
	SCL=1;
	Dlus(5);
	SDA_P =1; //STOP
	Dlms(15);
}

/*
uchar Read24LC16P(uchar ctr_byte, word_addr)  // ctr_bytr: 1010xxx0
{
	uchar ddata=0;
	uchar i=8;
	SCL=1; //
	Dlus(5);//
	SDA_P=0;
	Dlus(5);
	SCL=0; //START
	write_8bitP(ctr_byte); //control byte
	ACKP();
	write_8bitP(word_addr);  //word address
	ACKP();
	//以上是一个“哑”写操作,相当于设置当前地址

	SCL=1;
	Dlus(5);
	SDA_P=0;
	Dlus(5);
	SCL=0; //START
	write_8bitP(ctr_byte|0x01); //control byte
	ACKP();
	while (i--)
	{
		SDA_P=1;
		ddata<<=1;
		SCL=0;
		Dlus(5);
		SCL=1;
		Dlus(1);  //
		if (SDA_P) ddata|=0x01;
	}

	SCL=0;
	Dlus(5);
	SCL=1;
	Dlus(5);
	SDA_P=0;
	Dlus(5);
	SCL=1;
	Dlus(5);
	SDA_P=1; //STOP
	Dlus(5);
	return ddata;
}
*/
/*
//*****************************************************************************
//探头上24LC64的读写操作

void Write24LC64P(uint address,uchar ddata)
{
	SCL=1;
	Dlus(5);
	SDA_P=0;
	Dlus(5);
	SCL=0; //START
	write_8bitP(0xa0); //写从地址
	ACKP();
	write_8bitP((uchar)(address>>8));
	ACKP();
	write_8bitP((uchar)(address&0x00FF));
	ACKP();
	write_8bitP(ddata);
	ACKP();
	SDA_P=0;
	Dlus(5);
	SCL=1;
	Dlus(5);
	SDA_P=1; //STOP
	Dlms(5);
}

uchar Read24LC64P(uint address)
{
	uchar ddata=0;
	uchar i=8;
	SCL=1;
	Dlus(5);
	SDA_P=0;
	Dlus(5);
	SCL=0; //START
	write_8bitP(0xa0); //写从地址
	ACKP();
	write_8bitP((uchar)(address>>8));
	ACKP();
	write_8bitP((uchar)(address&0x00FF));
	ACKP();
	//以上是一个“哑”写操作,相当于设置当前地址

	SCL=1;
	Dlus(5);
	SDA_P=0;
	Dlus(5);
	SCL=0; //START
	write_8bitP(0xa1); //写从地址,置为读模式
	ACKP();
	while (i--)
	{
		SDA_P=1;
		ddata<<=1;
		SCL=0;
		Dlus(5);
		SCL=1;
		Dlus(1);   //
		if (SDA_P) ddata|=0x01;
	}

	SCL=0;
	Dlus(5);
	SCL=1;
	Dlus(5);
	SDA_P=0;
	Dlus(5);
	SCL=1;
	Dlus(5);
	SDA_P=1; //STOP
	Dlus(5);
	return ddata;
}
*/
//*****************************************************************************

void Dlms(uint n)                //MCU模式时延时n ms子程序
{
      uchar j;
      while((n--) > 0)
      {
              for(j = 0;j < 125;j++)
              {;}
      }
}

void Dlus(uint n)                //MCU模式时延时n*8us子程序
{
      while((n--) > 0)
      {
              {;}
      }
}

⌨️ 快捷键说明

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