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

📄 baud.c

📁 CMON51 monitor source for debugging 8051 IP Core.
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char **argv)
{
	double baud[]={150, 300, 600, 1200, 2400, 4800,
	               9600, 19200, 38400, 57600, 115200, 0};

	double Oscillator=22118400;
	int th1, j, k, rcap2;
	double BaudRate, BaudError;
	char buff[128];

	if(argc>1) Oscillator=atof(argv[1]);
	if (Oscillator<100.0) Oscillator*=1e6;

	printf("//For an oscillator frequency of %4.4fMHz...\n", Oscillator/1.0e6);
	printf("\n//For timer 1, these are the correct values for TH1:\n");

	for(k=1; k<3; k++)
	{
		printf("//For k=%d:\n", k);
		for(j=0; baud[j]!=0.0; j++)
		{
			th1=256.5-((k*Oscillator)/(32*12*baud[j]));
			if(th1==256) th1=0;
			if(th1>=0)
			{
				BaudRate=(k*Oscillator)/(32*12*(256-th1));
				BaudError=(fabs(baud[j]-BaudRate)*100.0)/baud[j];
				if(BaudError<10.0)
				{
					sprintf(buff, "TIMER1_K%d_%.0f", k, baud[j]);
					printf("#define %-18s %#02x ", buff, th1);
					if (BaudError>=0.1)
					    printf("/*%baud=%.0f, error=%.1f%%*/\n", BaudRate, BaudError);
					else
						printf("\n");
				}
			}
		}
	}

	printf("\n//If timer 2 is used to generate the baud rate,\n"
	         "//these are the correct values for [RCAP2H, TCAP2L]:\n");

	for(j=0; baud[j]!=0.0; j++)
	{
		rcap2=65536.5-((Oscillator)/(32*baud[j]));
		if(rcap2==65536) rcap2=0;
		if(rcap2>=0)
		{
			BaudRate=(Oscillator)/(32*(65536-rcap2));
			BaudError=(fabs(baud[j]-BaudRate)*100.0)/baud[j];
			if(BaudError<5.0)
			{
				sprintf(buff, "TIMER2_%.0f", baud[j]);
				printf("#define %-14s %#04x ", buff, rcap2);
				if (BaudError>=0.1)
				    printf("/*%baud=%.0f, error=%.1f%%*/\n", BaudRate, BaudError);
				else
					printf("\n");
			}
		}
	}
}

⌨️ 快捷键说明

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