📄 ftc1.c
字号:
#include <p18f24j10.h>
#include <stdio.h>
#include <delays.h>
//#include <float.h>
//#include <p18f24j10.h>
/*__CONFIG(_OSC_HS & _WDT_OFF & _LVP_OFF);*/
//__CONFIG (0XF0FFC4F0A0);
#define TABLE_SIZE 151
#define ACC PORTAbits.RA3
#define FAN PORTAbits.RA5
#define SET PORTBbits.RB6
#define MODE PORTBbits.RB7
#pragma romdata LED_TABLE = 0X3EA0
const rom unsigned int leds [15] =
{0B01101111, 0B01100000, 0B11001011, 0B11101010, 0B11100100,
0B10101110, 0B10101111, 0B01101000, 0B11101111, 0B11101100,
0B11100101, 0B00000111, 0B10000000, 0B10100011, 0B10001101};
#pragma romdata ROOT_TABLE = 0X3EC0
const rom unsigned int roots[TABLE_SIZE] =
// 0 1 2 3 4 5 6 7 8 9 //
{0, 1, 1, 2, 1, 2, 1, 2, 1, 2, // 0
2, 1, 2, 2, 2, 2, 2, 2, 2, 3, // 1
2, 2, 3, 2, 3, 3, 2, 3, 3, 3, // 2
3, 3, 3, 3, 4, 3, 4, 3, 4, 4, // 3
4, 3, 4, 5, 4, 4, 4, 5, 4, 5, // 4
4, 5, 5, 5, 5, 5, 5, 5, 5, 6, // 5
5, 6, 5, 6, 5, 6, 6, 6, 6, 6, // 6
6, 6, 6, 6, 7, 6, 6, 7, 6, 7, // 7
6, 7, 6, 7, 6, 7, 7, 6, 7, 7, // 8
6, 7, 7, 6, 7, 7, 7, 6, 7, 7, // 9
6, 7, 6, 7, 7, 6, 7, 6, 7, 6, //10
6, 7, 6, 6, 6, 7, 6, 6, 6, 10, //11
2, 6, 5, 5, 7, 6, 5, 6, 5, 6, //12
5, 6, 5, 5, 5, 5, 5, 5, 5, 5, //13
5, 5, 4, 5, 4, 5, 4, 5, 4, 4, //14
4 //15
};// (14 + 1) * 10 + 1 = 151
#pragma romdata
#pragma udata access MY_ACS_DATA
struct bs
{
unsigned wat:1;
unsigned oil:1;
unsigned vol:1;
unsigned :1;
unsigned setn:1;
unsigned sets:1;
unsigned modn:1;
unsigned mods:1;
}cobit;
//State BITS === 0==Water; 1==Oil; 2==Voltage;
near unsigned int WTSV, OTSV, VSV, CWOV, K[4];
//Water Temperature set value, Oil Temperature set value, Voltage set value
near unsigned int ADH, ADL, ADC0;
//A/D conversion high/low bits Hex Value //ADD,
near unsigned int TX, T100, T10, T1;
//A/D conversion bit number, hundred bit, decade bit, entries bit ||Value
near unsigned int LEDVH, LEDVD, LEDVE, LEDVS;
//LED hundred bit, decade bit, entries bit, state bit;
near unsigned int val, counter;
//Array pointer
near unsigned int ADCV, DV;
//A/D conversion-Voltage, Voltage Algorism Value
near unsigned int ADCT, DWO;
//A/D conversion-Temperature, Temperature Algorism Value
near float VOL, DWOF;
//Voltage conversion Register===( float )
near int TEM;
//Temperature conversion Register===( signed )
#pragma udata
//******************************** Check Table ***************************
unsigned int get_root (int val)
{
return roots[val];
}
unsigned int get_led (int val)
{
return leds[val];
}
//**************************** initialization process ***********************
void initial (void)
{
INTCON = 0X00;
INTCON2 = 0X00;
INTCON3 = 0X00;
PIR1 = 0X00;
PIR2 = 0X00;
PIR3 = 0X00;
PIE1 = 0X00;
PIE2 = 0X00;
PIE3 = 0X00;
IPR1 = 0X00;
IPR2 = 0X00;
IPR3 = 0X00;
CMCON = 0X07;
CVRCON = 0X00;
}
//**************************** initialization I/O process ***********************
void initialIO (void)
{
PORTA = 0X00;
LATA = 0X00;
TRISA = 0B11001111;
PORTB = 0X00;
LATB = 0X00;
TRISB = 0XC0;
PORTC = 0X00;
LATB = 0X00;
TRISC = 0X00;
WTSV = 60; //70;
OTSV = 80;
VSV = 80;
}
//************************** A/D initialization process ******************
void initialAD (void)
{
ADCON2 = 0B10110001;
ADCON1 = 0B00001100;
ADCON0 = 0;
}
void AD_PRE (int adcc0)
{
int j;
//ADRESH = 0;
//ADRESL = 0;
initialAD ( );
ADCON0 = adcc0;
//for (j=20; j > 0; --j);
ADCON0bits.GO = 1;
while (1)
{
if ( ADCON0bits.GO == 0)
break;
}
}
//**************************** compare input process ***********************
void COM (void)
{
if ( cobit.modn == 0)
{ if (MODE == 0)
{ Delay100TCYx(50);
if (MODE == 0)
cobit.modn = 1;
}
}
if ( cobit.modn == 1)
{ if (MODE == 1)
{ Delay100TCYx(50);
if (MODE == 1)
{ cobit.modn = 0;
cobit.mods = 1;
//FAN = 0;
}
}
}
if ( cobit.setn == 0)
{ if (SET == 0)
{ Delay100TCYx(50);
if (SET == 0)
cobit.setn = 1;
}
}
if ( cobit.setn == 1)
{ if (SET == 1)
{ Delay100TCYx(50);
if (SET == 1)
{ cobit.setn = 0;
cobit.sets = 1;
//FAN = 0;
}
}
}
}
//******************** Temperature Value Conversion process **************
unsigned int TVAL_PRE(int val)
{
T100 = T10 = T1 = 0;
TX = 3;
if (val == 152)
{ T100 = T10 = T1 = 12;
return T100, T10, T1, TX;
}
if (val == 151)
{ T100 = T10 = T1 = 10;
return T100, T10, T1, TX;
}
if (val == 0)
{ T100 = T10 = T1 = 11;
return T100, T10, T1, TX;
}
TX = 0;
if ( val >= 100)
{
T100 = val/100;
if( T100 > 10)
T100 = T100 % 10;
TX++;
}
if ( val >= 10)
{
T10 = val/10;
if ( T10 >= 10)
T10 = T10 % 10;
TX++;
}
T1 = val % 10;
TX++;
return T100, T10, T1, TX;
}
//********************** Voltage Value Conversion process **************
unsigned int VVAL_PRE(int val)
{
T100 = T10 = T1 = 0;
TX = 0;
if ( val >= 100)
{
T100 = val/100;
if( T100 > 10)
T100 = T100 % 10;
TX++;
}
if ( val >= 10)
{
T10 = val/10;
if ( T10 >= 10)
T10 = T10 % 10;
TX++;
}
T1 = val % 10;
TX++;
return T100, T10, T1, TX;
}
//****************************** Temperature Conversion ***********************
unsigned int TEM_PRE(int adhs, int adls )
{
` ADCT = (adhs<<8) + adls;
TX = 3;
TEM=ADCT-271;
if ( TEM < 0)
{
DWO = 151;
//T100 = T10 = T1 = 10;
return DWO;// T100, T10, T1, TX;
}
TEM=ADCT-1010;
if ( TEM > 0)
{
DWO = 152;
//T100 = T10 = T1 = 12;
return DWO;// T100, T10, T1, TX;
}
TEM=ADCT-993;
if ( TEM > 0)
{
DWO = 0;
//T100 = T10 = T1 = 11;
return DWO;// T100, T10, T1, TX;
}
DWO = 0;
for (val = 0; val <= 150; val++)
{ TEM = TEM + get_root (val);
if ( TEM >= 0)
{
val = 151;
}
DWO++;
}
DWO--;
//VAL_PRE(DWO);
return DWO;// T100, T10, T1, TX;
}
//****************************** Voltage Conversion ***********************
unsigned int V_PRE(int adhs, int adls )
{
ADCV = (adhs<<8) + adls;
TX = 3;
VOL = (float)ADCV * 28 / 1023 + 0.05;
if ( VOL > 27.05 )
{
DV = 271;
T100 = T10 = T1 = 10;
return DV, T100, T10, T1, TX;
}
else if ( VOL < 7.0 )
{
DV = 69;
T100 = T10 = T1 = 11;
return DV, T100, T10, T1, TX;
}
DV =(int)(10 * VOL);
VVAL_PRE (DV);
return DV, T100, T10, T1, TX;
}
//******************************** LED Conversion *************************
unsigned int LED_PRE(int t100, int t10, int t1 )
{
LEDVH = get_led (t100);
LEDVD = get_led (t10);
LEDVE = get_led (t1);
}
//******************************** LED Display *************************
unsigned int LED_DIS(int ledvm, int tx, int ledvh, int ledvb, int ledvl)
{
if (tx >= 3)
{
PORTC = ledvh;
PORTB = ledvm; //mode led display
PORTBbits.RB2 = 1;
Delay100TCYx(50);
}
if (tx >= 2)
{
PORTC = ledvb;
PORTB = ledvm; //mode led display
PORTBbits.RB1 = 1;
Delay100TCYx(50);
}
PORTC = ledvl;
PORTB = ledvm; //mode led display
PORTBbits.RB0 = 1;
Delay100TCYx(50);
}
//****************** ACC on LED initialization Display ******************
unsigned int LED_IN_DIS (int ledvm)
{
int counter1;
for (counter1 = 1; counter1 <= 6; counter1++)
{
PORTB = ledvm; //mode led display
PORTC = 0B00000111; //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
PORTBbits.RB2 = 1;
Delay100TCYx(20);
PORTB = ledvm;
PORTC = 0B00001010;
PORTBbits.RB1 = 1;
Delay100TCYx(20);
PORTB = ledvm;
PORTC = 0B01101010;
PORTBbits.RB0 = 1;
Delay100TCYx(20);
}
for (counter1 = 1; counter1 <= 6; counter1++)
{
PORTB = ledvm; //mode led display
PORTC = 0B00001111;
PORTBbits.RB2 = 1;
Delay100TCYx(20);
PORTB = ledvm;
PORTC = 0B00000010; //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
PORTBbits.RB1 = 1;
Delay100TCYx(20);
PORTB = ledvm;
PORTC = 0B01101010;
PORTBbits.RB0 = 1;
Delay100TCYx(20);
}
for (counter1 = 1; counter1 <= 6; counter1++)
{
PORTB = ledvm; //mode led display
PORTC = 0B00001111;
PORTBbits.RB2 = 1;
Delay100TCYx(20);
PORTB = ledvm;
PORTC = 0B00001010;
PORTBbits.RB1 = 1;
Delay100TCYx(20);
PORTB = ledvm;
PORTC = 0B01100010; //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
PORTBbits.RB0 = 1;
Delay100TCYx(20);
}
for (counter1 = 1; counter1 <= 6; counter1++)
{
PORTB = ledvm; //mode led display
PORTC = 0B00001111;
PORTBbits.RB2 = 1;
Delay100TCYx(20);
PORTB = ledvm;
PORTC = 0B00001010;
PORTBbits.RB1 = 1;
Delay100TCYx(20);
PORTB = ledvm;
//PORTCbits.RC6 = 1;
PORTC = 0B00101010; //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
PORTBbits.RB0 = 1;
Delay100TCYx(20);
}
for (counter1 = 1; counter1 <= 6; counter1++)
{
PORTB = ledvm; //mode led display
PORTC = 0B00001111;
PORTBbits.RB2 = 1;
Delay100TCYx(20);
PORTB = ledvm;
PORTC = 0B00001010;
PORTBbits.RB1 = 1;
Delay100TCYx(20);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -