Configuración y gestión de interrupciones en Informática y Telecomunicaciones
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 82,26 KB
Es la rutina de atención a la interrupción del temporizador T0, que está configurado en el modo 2, 8 bits con auto-recarga. Cuando se vectoriza la interrupción se incrementa la variable cont; al alcanzar el valor 100, se inicializa a cero y se sigue incrementando en sucesivas vectorizaciones. Antes de retornar de la ISR se actualiza el bit 6 del puerto P1 (salida) a 1, si el valor de cont es menor que duty, ya 0 en el resto de casos
Es la rutina de atención a la interrupción de la UART, que comprueba si se finalizado una recepción, y si es así, se borra RI, se comprueba que el valor recibido sea igual o menor que 100 y se copia en la variable duty.
El temporizador T0 se ha configurado en Modo 2, 8 bits con auto-recarga 32 {TMOD |= 0x02; y gestión por interrupción: 12 void ISR_T0(void) interrupt 1 El periodo que temporiza viene definido por el valor de TH0, que se copia en TL0 cuando se sobrepasa el registro contador, y la frecuencia del oscilador (2MHz): 3 #define PRECAR_T0 239 33 TH0 = TL0 = PRECAR_T0; T = (12 / 2 MHZ) * (256 – 239) = 6 μs * 17 = 102 μs
La rutina de atención a la interrupción del temporizador T0 incrementa la variable en cada vectorización, y se comprueba si ha llegado al valor 100, en cuyo caso se inicializa a 0. Por tanto, entre 2 inicializaciones a 0 consecutivas se ha vectorizado 100 veces la interrupción, como entre 2 interrupciones seguidas transcurren 102 μs, el tiempo entre 2 inicializaciones de cont es: T = 100 * 102 μs = 10,2 ms 12 void ISR_T0(void) interrupt 1 13 { cont++; 14 if(cont == 100) cont = 0; 15 salida = cont
La UART se ha configurado en el modo 1, 8 bits con velocidad variable utilizando el temporizador T1 y gestionado por interrupción: 38 void ini_UART(void) 39 { SCON = 0x50; 40 TMOD |= 0x20; 41 TH1 = TL1 = PRECAR_T1; 42 PCON |= 0x80; 43 TR1 = 1; 44 IE |= 0x90; 45 } La tasa de transferencia se determina según del valor del bit SMOD, la precarga de T1 y la frecuencia del oscilador: Baudios = (21 / 32) * (fosc /(12 * (256 – 255)))) = 10416,66 bd