Calibrador de respirador

Solo disponible en BuenasTareas
  • Páginas : 3 (647 palabras )
  • Descarga(s) : 0
  • Publicado : 27 de febrero de 2011
Leer documento completo
Vista previa del texto
#include //Micro
#fuses HS,NOPROTECT,NOWDT //High Speed Xtal, sin proteccion de programa ni WD
#use delay(clock=20000000) //Cristal de 20 MHz
#include "lcd2.c" //similar a la biblioteca delPICC(lcd.c) pero
//adaptada para usar puerto D para datos y
//parte del puerto E para control del LCD.

//valores iniciales de t y v
#define tnormal 45
#definevnormal 15
//columas del LCD a partir de donde se escriben los valores
#define x1 13
#define x2 10
//arreglo en memoria de datos de los valores de salida
#rom 0x2100={0,0,1,1,1,3,4,4,6,7,7,9,9,9,10,10,12,13,13,18,19,22,23,29,
38,48,57,69,78,88,98,108,114,127,143,155,169,176,183,191,
200,207,217,227,234,242,248,254,255,255,255,255,253,252,249,236,224,214,202,196,191,183,177,171,164,158,152,147,139,
133,127,120,109,106,100,95,89,85,79,73,69,63,59,54,51,50,47,
44,41,38,35,34,31,28,25,22,18,16,15,13,12,10,7,5,4,1,0,0,0,0
}
//variables fundamentales
int16 t,v; //t: intervalo(ms) entrecada fijacion de la salida
//v: representa una fraccion del nivel de salida a plena escala
//variables intermedias
int i,RB,value,cont;
int32 vx;
float z,g;
//banderas
booleanflag,flag1;
/*
flag: se utiliza por la rutina de atencion a la interrupcion externa,
es seteada cada vez que [v] o [t] alcanzan un valor extremo
flag1: es seteada por el timer0 para que elprograma calcule el próximo,
valor de salida
*/

//el timer0 está configuardo para desbordarse cada 1 ms
#int_time2r0
void t0()
{
//nota: incrementando/decrementando t de 1 ms en1 ms hace alineal el cambio
//por lo que no se puede controlar un ciclo por minuto alto; los intervalos
//varian mucho más rápido cuando se acercan a 50
if(cont==t)
{output_c(vx); //salida del dato al conversor D/A
flag1=true;
cont=0;
}
set_timer0(100); // valor calculado según:
// set = 2^n - (t/(prescalar*4/Xtal))...
tracking img