rendered paste body#include "lcddisplay.h"#include "delay.h"#include "ece_types.h"#include "hc11_regs.h"#include "interrupt.h"void TOFhandler(void)__attribute__((interrupt));void IC3handler(void)__attribute__((interrupt));volatile unsigned char *LED = (unsigned char*)0x1404;volatile uint16 flipcount = 0;void putBack(char ch);void counterWrite();const int SIZE = 10;uint32 edgeCounter = 0;uint32 timestamps[SIZE];volatile unsigned int read;volatile unsigned int write;int main(void){ Interrupt_SetVector(INTER_TIMER_OVER,(unsigned int)TOFhandler); Interrupt_SetVector(INTER_TIC3,(unsigned int)IC3handler); EnableInterrupts(); hc11_regs[TMSK1] = 0x01; hc11_regs[TCTL2] = 0x03; hc11_regs[TMSK2] = 0x80; read = write = 0; LCD_Init(); char * line = "Lab 5 - Part 2"; LCD_Print(0,0,line,14); char * zero = "0000000000"; LCD_Print(1,0,zero,10); char * greetings = "ECE 3534 Lab 5: Part 2\r\n"; for(int i = 0; i < 24; i++) putBack(greetings[i]); while(true) { if(read != write) { counterWrite(); *LED = 0xFF; char result; uint32 test = timestamps[read]; test = test/2; uint32 number = 1000000000; while(number >= 1) { result = '0'; while(test >= number) { test = test - number; result++; } putBack(result); number = number / 10; } putBack('u'); putBack('s'); putBack('\r'); putBack('\n'); read = read + 1; if(read > SIZE-1) read = 0; } } return 0;}void IC3handler(void){ uint32 temp = Combine16(flipcount,Read16Reg(TIC3H)); timestamps[write] = temp; write = write + 1; *LED = (unsigned char)write; if(write > SIZE-1); write = 0; hc11_regs[TFLG1] = 0x01;}void counterWrite(){ uint32 number = 1000000000; char temp; char * writer; int count = 0; edgeCounter = edgeCounter + 1; uint32 test = edgeCounter; while(number >= 1) { temp = '0'; while(test >= number) { test = test - number; temp = temp + 1; } *writer = temp; LCD_Print(1,count,writer,1); count++; number = number / 10; }}void putBack(char ch){ while((hc11_regs[SCSR] & 0x80) != 0x80) {} hc11_regs[SCDR] = ch;}void TOFhandler(void){ flipcount++; hc11_regs[TFLG2] = 0x80;}