/*********************************************************************************************/
/* Program : MAIN.H */
/* Function : MAIN Header File */
/* Author : John F. Fitter B.E. */
/* */
/* Application specific stuff removed for web publishing. */
/* */
/* Copyright © 1998 Eagle Air Australia Pty. Ltd. All rights reserved */
/*********************************************************************************************/
#ifndef _MAIN_H
#define _MAIN_H
/*********************************************************************************************/
/* Project specific defines
/*********************************************************************************************/ /*********************************************************************************************/
//#define _DEVELOPMENT // development on emulator - defined in main.cmd
// emulator speed is limited to 8MHz
#define _HVER 1 // hardware version number (0..15)
#define _HREV 0 // hardware revision number (0..15)
#define _SVER 1 // software version number (0..15)
#define _SREV 3 // software revision number (0..15)
/*********************************************************************************************/
/* Processor speed defines
/*********************************************************************************************/ /*********************************************************************************************/
#ifdef _DEVELOPMENT // for software development only
#define _CLOCK_ 8000000L // development uses 8MHz xtal
#else
#define _CLOCK_ 16000000L // production units use 16MHz xtal
#define _FAST_CLOCK
#endif // _DEVELOPMENT
#define _MCLK _CLOCK_/4000000L // cycles per microsecond
/*********************************************************************************************/
/* Macros */
/*********************************************************************************************/
// Printing macros
#define print_to_printer() c_status.prt_to_lcd = false
#define print_to_lcd() c_status.prt_to_lcd = true
// All this defined for the HiTech compiler only - so this header file
// can be used by Borland C
#ifdef HI_TECH_C
/*********************************************************************************************/
/* Controller status defines
/*********************************************************************************************/ /*********************************************************************************************/
struct ctr_status {
unsigned alternate :1; // interface alternate flag
unsigned yield :1; // flag to yield control to system functions
unsigned exp100ms :1; // flag that 100ms has expired
unsigned sleep_en :1; // enable sleep mode flag
unsigned awake :1; // controller is awake
unsigned to_wait :1; // timed out waiting to time
unsigned to_time :1; // timed out timing
unsigned to_load :1; // timed out loading (motor load only)
unsigned mtr_slow :1; // flag that the motor should be running slow
unsigned prt_to_lcd :1; // print destination flag - printer/lcd
unsigned serial_exists :1; // serial device is attached
unsigned char_is_in :1; // serial character has been received
unsigned ser_rx_err :1; // UART receive error status
unsigned new_tstate :1; // new controller timing state flag
unsigned new_istate :1; // new controller interface state flag
unsigned new_field :1; // new controller interface field flag
unsigned new_result :1; // new timing result flag
unsigned en_timing :1; // enable timing flag
unsigned tare :1; // tare flag - enables measurement
unsigned accepted :1; // accepted flag - for new values
unsigned accept_dlg :1; // accept dialog is active flag
unsigned captured :1; // flag to indicate a time has been captured by CCP
unsigned validresult :1; // flag to indicate a valid final timing result
unsigned printvalid :1; // flag to enable printing of valid/invalid string
unsigned autotimeout :1; // flag auto timeout has just occurred
unsigned allowtimeout :1; // flag to allow timing state timeout
unsigned islogged :1; // current measurement is logged
unsigned gotaresult :1; // flag that there is a result - only set, never reset
unsigned ext_key :1; // external simulated keypress (from the PC)
};
union tval_union{
struct {
unsigned int lw_tval;
unsigned int hw_tval;
} wtval;
unsigned long ltval;
};
/*********************************************************************************************/
/* Variable and constant declarations
/*********************************************************************************************/ /*********************************************************************************************/
#ifdef _MAIN_C
unsigned char lin;
unsigned char pos;
unsigned char csr;
unsigned long unique; // copy of unique reference number
unsigned char ser_data; // serial input data
bank1 volatile unsigned char tmr_10ms; // 10ms timer
bank1 volatile unsigned char tmr_100ms; // 100ms timer
bank1 unsigned char sertimeout; // serial timeout (x10ms)
bank1 volatile unsigned char ser_char; // received serial character
bank1 union tval_union tmr_val; // captured value of tmr1 & tmr1_aux
bank1 unsigned int tmr_aux; // timer 1 bits 16 to 31
bank2 unsigned char tmr_1s; // 1 second timer
bank2 unsigned char tmr_100mm; // 6 second timer
bank2 unsigned char sleep_elaps; // sleep elapsed time (x100mm) - milliminutes !!!
bank2 unsigned char motor_time; // motor run timer (x100ms)
bank2 unsigned char motor_dc; // motor on-time at slow speed (ms/50ms)
bank2 unsigned char slow_timer; // timer for motor slow speed
bank2 unsigned char state_time; // state timeout timer (x100ms)
bank2 unsigned char auto_time; // auto-timeout timer (x100ms)
bank2 unsigned char old_sw; // saved optical switch states
bank2 unsigned char xl_super2; // translated superscript 2 for printer
#else
extern unsigned char lin;
extern unsigned char pos;
extern unsigned char csr;
extern unsigned long unique;
extern unsigned char ser_data;
extern bank1 volatile unsigned char tmr_10ms;
extern bank1 volatile unsigned char tmr_100ms;
extern bank1 unsigned char sertimeout;
extern bank1 volatile unsigned char ser_char;
extern bank1 union tval_union tmr_val;
extern bank1 unsigned int tmr_aux;
extern bank2 unsigned char tmr_1s;
extern bank2 unsigned char tmr_100mm;
extern bank2 unsigned char sleep_elaps;
extern bank2 unsigned char motor_time;
extern bank2 unsigned char motor_dc;
extern bank2 unsigned char slow_timer;
extern bank2 unsigned char state_time;
extern bank2 unsigned char auto_time;
extern bank2 unsigned char old_sw;
extern bank2 unsigned char xl_super2;
#endif // _MAIN_C
/*********************************************************************************************/
// Function prototypes
/*********************************************************************************************/
void init_proc();
void goto_sleep(unsigned char);
unsigned char dec_to_bcd(unsigned char);
unsigned char bcd_to_dec(unsigned char);
void put_bcd(unsigned char);
void yield();
void reset_proc(unsigned char);
signed char int_log10(double);
double pow10(signed char);
void start_motor();
#endif // HI_TECH_C
#endif // _MAIN_H
// ***** EOF MAIN.H *****