📄 freescale
字号:
#include "taximeter.h"
//====================================================
//==================== TABLES ====================
//====================================================
const Byte TRANSLATE_NUMBER[10] = { // Translates a number to its 8-segment-display equivalent
// numbers from 0 to 9
// PTB = G F A B P C D E
// PTB = 7 6 5 4 3 2 1 0
SEG_A & SEG_B & SEG_C & SEG_D & SEG_E & SEG_F, // 0
SEG_B & SEG_C, // 1
SEG_A & SEG_B & SEG_D & SEG_E & SEG_G, // 2
SEG_A & SEG_B & SEG_C & SEG_D & SEG_G, // 3
SEG_B & SEG_C & SEG_F & SEG_G, // 4
SEG_A & SEG_C & SEG_D & SEG_F & SEG_G, // 5
SEG_A & SEG_C & SEG_D & SEG_E & SEG_F & SEG_G, // 6
SEG_A & SEG_B & SEG_C, // 7
SEG_A & SEG_B & SEG_C & SEG_D & SEG_E & SEG_F & SEG_G, // 8
SEG_A & SEG_B & SEG_C & SEG_D & SEG_F & SEG_G, // 9
};
const Byte TRANSLATE_LETTER[59] = {
// Valid letters: A,b,Cc,d,E,F,G,Hh,Ii,Jj,Ll,n,Oo,P,q,r,S,Uu,0,1,2,3,4,5,6,7,8,9,-,.
// PTB = G F A B P C D E
// PTB = 7 6 5 4 3 2 1 0 SYMBOL ASCII
DISPLAY_OFF, // space 32
DISPLAY_OFF,DISPLAY_OFF,DISPLAY_OFF,DISPLAY_OFF,DISPLAY_OFF, // 33-37
DISPLAY_OFF,DISPLAY_OFF,DISPLAY_OFF,DISPLAY_OFF,DISPLAY_OFF, // 38-42
DISPLAY_OFF,DISPLAY_OFF, // 43-44
SEG_G, // - 45
SEG_P, // . 46
DISPLAY_OFF, // 47
SEG_A & SEG_B & SEG_C & SEG_D & SEG_E & SEG_F, // 0 48
SEG_B & SEG_C, // 1 49
SEG_A & SEG_B & SEG_G & SEG_E & SEG_D, // 2 50
SEG_A & SEG_B & SEG_G & SEG_C & SEG_D, // 3 51
SEG_F & SEG_G & SEG_B & SEG_C, // 4 52
SEG_A & SEG_F & SEG_G & SEG_C & SEG_D, // 5 53
SEG_A & SEG_F & SEG_E & SEG_C & SEG_D & SEG_G, // 6 54
SEG_A & SEG_B & SEG_C, // 7 55
SEG_A & SEG_B & SEG_C & SEG_D & SEG_E & SEG_F & SEG_G, // 8 56
SEG_A & SEG_F & SEG_G & SEG_B & SEG_C & SEG_D, // 9 56
DISPLAY_OFF,DISPLAY_OFF,DISPLAY_OFF,DISPLAY_OFF,DISPLAY_OFF, // 57-61
DISPLAY_OFF,DISPLAY_OFF, // 62-63
SEG_A & SEG_B & SEG_C & SEG_E & SEG_F & SEG_G, // A 64
SEG_F & SEG_E & SEG_D & SEG_C & SEG_G, // B 65
SEG_A & SEG_F & SEG_E & SEG_D, // C 66
SEG_G & SEG_E & SEG_D & SEG_C & SEG_B, // D 67
SEG_A & SEG_F & SEG_G & SEG_E & SEG_D, // E 68
SEG_A & SEG_F & SEG_G & SEG_E, // F 69
SEG_A & SEG_F & SEG_E & SEG_D & SEG_C & SEG_G, // G 70
SEG_F & SEG_E & SEG_B & SEG_C & SEG_G, // H 71
SEG_B & SEG_C, // I 72
SEG_B & SEG_C & SEG_D & SEG_E, // J 73
DISPLAY_OFF, // K 74
SEG_F & SEG_E & SEG_D, // L 75
SEG_E & SEG_A & SEG_C & SEG_B & SEG_F, // M 76
SEG_E & SEG_G & SEG_C, // N 77
SEG_A & SEG_B & SEG_C & SEG_D & SEG_E & SEG_F, // O 78
SEG_E & SEG_F & SEG_A & SEG_B & SEG_G, // P 79
SEG_A & SEG_B & SEG_G & SEG_F & SEG_C, // Q 80
SEG_E & SEG_G, // R 81
SEG_A & SEG_F & SEG_G & SEG_C & SEG_D, // S 82
SEG_A & SEG_B & SEG_C, // T 83
SEG_F & SEG_E & SEG_D & SEG_C & SEG_B, // U 84
SEG_F & SEG_E & SEG_D & SEG_C & SEG_B, // V 85
DISPLAY_OFF, DISPLAY_OFF, // W-X 86-87,
SEG_B & SEG_C & SEG_F & SEG_G, // Y 88
SEG_A & SEG_B & SEG_D & SEG_E & SEG_G, // Z 89
};
//====================================================
//============= REPROGRAMMABLE TABLES ==============
//====================================================
#pragma CONST_SEG FLASH_TABLES
volatile const Byte FARE_MESSAGE_TABLE[45] = {
' ','D','A','Y',' ',
'N','I','G','H','T',
'S','U','N','D','A',
'T','I','M','E',' ',
'F','A','R','E','5',
'F','A','R','E','6',
'F','A','R','E','7',
'F','A','R','E','8',
'F','A','R','E','9',
};
volatile const Word INI_CH_TABLE[9] = { // Price of initial charges
600,
1200,
1000,
3500,
500,
600,
700,
800,
900,
};
volatile const Word FARE_TABLE[9] = { // Price of every fare
150,
300,
200,
100,
50,
60,
70,
80,
90,
};
volatile const Word EXTRA_TABLE[9] = { // Price of extra charges
1000,
2000,
3000,
4000,
5000,
6000,
7000,
8000,
9000,
};
volatile const Byte INFO_TABLE[24] = {
'S','E','R','I','A','L',' ',' ', // Serial n鷐ber
'P','L','A','T','E','S',' ',' ', // License plate
'M','O','T','O','R','O','L','A', // Advertiser
};
//====================================================
//================ FLASH VARIABLES =================
//====================================================
#pragma CONST_SEG FLASH_VARIABLES
/*
* Accumulators in flash.
* These accumulators are transmitted to the programmer at the
* beginning of the programming process and are erased. If you
* wish to keep these in the taximeter, the programmer should
* send them back so they are re-programmed. All accumulators
* are incremented in the state PAY, but the TOTAL_DISTANCE_
* TRAVELED is also incremented in the state OFF.
* To be modified, these accumulators are read into RAM
* <BackupAccumulator()> starting at address 0x008C. There
* are global variables defined in that space. Those global
* variables are incremented and the they are re-programmed
* into flash.
*/
ulong TOTAL_DISTANCE_TRAVELED @0xEC81;
ulong TOTAL_DISTANCE_IN_SERVICE @0xEC85;
ulong TOTAL_NUMBER_TRAVELS @0xEC89;
ulong TOTAL_NUMBER_INCREMENTS @0xEC8D;
ulong TOTAL_INCOME @0xEC91;
volatile const Byte FARES_NUMBER @ 0xEC9E = 2; // Number of active fares
volatile const Byte EXTRAS_NUMBER @ 0xEC9F = 5; // Number of active extras
#pragma CONST_SEG FLASH_VERIFY
volatile const Byte FLASH_PROGRAM = UNCORRUPT_FLASH; // Key to verify flash programmation
#pragma DEFAULT_SEG
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -