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

📄 phex.c

📁 实现vxworks下的1553b通讯功能
💻 C
字号:
#include <stdlib.h>
#include <stdio.h>
#include <sysLib.h>
#define EXC_REGISTER_SETBANK	0x02

int phex(void)
{
	int device_num, module, IOport;
	int i, ilong, zerocnt, ind, bank;
	unsigned short int *valptr, value;
	char buf[8], buf1[80]={0};

	printf ("EXCALIBUR Phex - Print Hex Values Utility\n");

	printf("Device number (in hex, e.g. d8): ");
	scanf("%x",&device_num); 	    
	printf("IOport value (in hex, e.g. 280): ");
	scanf("%x", &IOport);	    
 
	printf("Channel number: \n");
	scanf("%d",&module); 
	printf("Channel %d\n", module);
	bank = module * 2;
	sysOutByte(IOport + EXC_REGISTER_SETBANK, bank++);
	valptr = (unsigned short int *)(device_num << 12);

	ind = buf[7] = zerocnt = 0;
	for (ilong=0; ilong < 0x10000; ilong+=2)
	{
		if (ilong == 0x8000) /* end of first bank */
		{
			sysOutByte(IOport + EXC_REGISTER_SETBANK, bank);
			valptr = (unsigned short int *)(device_num << 12);
		}

		value = *valptr++;
	     	if (value == 0)
 	 		zerocnt++;
		sprintf(buf, "%04x  ", value); 
		for (i=0; i< 6; i++)
			buf1[ind+i] = buf[i];
		buf1[ind+i] = 0;
		ind += 6;
		if ((ilong % 16) == 14)
		{
 			if (zerocnt < 8)
			{
				fdprintf(1,"%4x   ",(ilong - 14)/2);
 				fdprintf(1,"%s\n",&buf1[0]);
			}
	 		ind = 0;
			zerocnt = 0;
		}
	}
	printf("\n\n");
	return 0;
}

⌨️ 快捷键说明

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