#include <iostream>
#include <fstream>
#include <iomanip> // std::setprecision
#include <math.h>
//#include <exception> //importar librería de exception
//#include <stdexcept> //importar librería de excepciones específicas como bad_alloc
//#include <new>
using namespace std;
double Division(int a, int b) {
if( b == 0 ) {
throw("Inf");
}
return (a/b);
}
int main(void){
int I_Ciclo_0 = 8; //Prescaler
int I_Ciclo_1 = 255; //TMR0
unsigned short int USI_Ciclo_de_maquina = 4.0;
unsigned int UI_Frecuencia_cristal = 4000000.0;
float F_Tiempo_ms = 0.0;
char C_Nombre_archivo[] = "Borrar_CPP.txt";
// Crea un fichero de salida
ofstream C_Fichero_salida(C_Nombre_archivo);
C_Fichero_salida << "PreS" << "\t" << "TMP0" << "\t" << "Semi T" << "\t" << "Periodo" << "\t" << "Frecuencia" << endl;
//Temporización_en_ms = (Ciclo_de_maquina/Frecuencia_cristal) * Prescaler * (256-TMR0)
// Prescaler = 2 a 256
//Ciclo_0 1 2 3 4 5 6 7 8
//Resultado 2 4 8 16 32 64 128 256
//2^Ciclo_0 pow(2,Ciclo_0)
//Ciclo_0 Prescaler
//Ciclo_1 TMR0
//Temporización_en_ms = (US_Ciclo_de_maquina/UI_Frecuencia_cristal) * pow(2,Ciclo_0) * (256-Ciclo_1)
cout.precision(10);
for(int Ciclo_0=1; Ciclo_0<=I_Ciclo_0; ++Ciclo_0){
for(int Ciclo_1=1; Ciclo_1<=I_Ciclo_1; ++Ciclo_1){
try {
F_Tiempo_ms
= (static_cast
<float
>(USI_Ciclo_de_maquina
)/(UI_Frecuencia_cristal
)) * pow(2,Ciclo_0
) * (256-Ciclo_1
);; //create a temporary floating-point copy of its operand in parentheses 'USI_Ciclo_de_maquina'
C_Fichero_salida
<< pow(2,Ciclo_0
) << "\t" << Ciclo_1
<< "\t" << F_Tiempo_ms
<< "\t" << F_Tiempo_ms
*2.0 << "\t" << 1.0/(F_Tiempo_ms
*2.0) << endl
; }catch (const char* msg) {
C_Fichero_salida
<< fixed
<< pow(2,Ciclo_0
) << "\t" << Ciclo_1
<< "\t" << "Inf" << "\t" << F_Tiempo_ms
*2.0 << "\t" << 1.0/(F_Tiempo_ms
*2.0) << endl
; }
}
}
C_Fichero_salida.close(); // Cierra el fichero.
//char cadena[128];
//// Abre un fichero de entrada
//ifstream fe("nombre.txt");
//// Leeremos mediante getline, si lo hiciéramos
//// mediante el operador << sólo leeríamos
//// parte de la cadena:
//fe.getline(cadena, 128);
cout << endl << "[ OK ]\t" << C_Nombre_archivo << endl;
return 0;
}