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);
hc11_regs[TMSK1] = 0x01;
hc11_regs[TCTL2] = 0x03;
hc11_regs[TMSK2] = 0x80;
EnableInterrupts();
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){}
else
{
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 = 0xff;
DelayXms(100);
*LED = 0x00;
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;
}