Initial import
This commit is contained in:
1 parent
4f2238603b
commit
9dee583247
15 files changed
+7923
-676
No files matched your search
@@ -0,0 +1,7 @@
|
||||
Copyright 2008, 2018 OpenKeyboard Developers, Neo-Desktop, et. al
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
@@ -0,0 +1,12 @@
|
||||
# OpenKeyboard for the Xbox360 Chatpad
|
||||
|
||||
This repository contains the OpenKeyboard031 sources for the Xbox360 Chatpad's processor (PIC16F883)
|
||||
|
||||
These files were obtained while looking through a mailing list archive from 2008. They appear to be the only surviving copy of this project.
|
||||
|
||||
The OpenKeyboard031 folder can be found in Ben Heck's video on the video titled "[Build a Retro Computer: BASIC 80's Pocket Computer](https://youtu.be/Hjdj14C_jAI?t=212)"
|
||||
|
||||
I'm currently in the process of hacking my own chatpads and therefore the code here hasn't been tested yet.
|
||||
|
||||
|
||||
Feel free to open an issue if anything comes up
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,518 @@
|
||||
// FIRMWARE REPLACEMENT FOR CHATPAD's pic16f883
|
||||
// see attached documents to learn more
|
||||
// release 0.3.1 from jean : giancarlotodone at yahoo dot it
|
||||
// for the Open Keyboard Project
|
||||
// thanks alot to Gidi (who owns an half of my chatpad, call him "sponsor")
|
||||
// and my sweethart piceta; they helped me handling
|
||||
// cable knots while reversing and testing.
|
||||
// Thanks as well to all people who demonstrated interest in this project!
|
||||
|
||||
#define CONFIG_BAUDRATE 1
|
||||
#define CONFIG_SENDMODE 2
|
||||
#define CONFIG_LIGHTMODE 3
|
||||
#define CONFIG_LIGHTSTRENGTH 4
|
||||
#define CONFIG_LIGHTFADEOFFTIME 5
|
||||
#define CONFIG_REPEAT 6 // not used yet
|
||||
#define CONFIG_ACCEPTCOMMANDS 7 // not used yet
|
||||
#define CONFIG_MACROS 8 // not used yet
|
||||
|
||||
#define SENDMODE_SERIAL 0
|
||||
#define SENDMODE_SCAN 1
|
||||
#define SENDMODE_PS2 2 // not used yet
|
||||
|
||||
#define LIGHTMODE_ALWAYSOFF 0
|
||||
#define LIGHTMODE_ALWAYSON 1
|
||||
#define LIGHTMODE_FADE 2
|
||||
#define LIGHTMODE_LASTMODE 2
|
||||
|
||||
#define BAUDRATE_300 1
|
||||
#define BAUDRATE_1200 2
|
||||
#define BAUDRATE_2400 3
|
||||
#define BAUDRATE_4800 4
|
||||
#define BAUDRATE_9600 5
|
||||
#define BAUDRATE_19200 6
|
||||
#define BAUDRATE_38400 7
|
||||
#define BAUDRATE_57600 8
|
||||
#define BAUDRATE_115200 9
|
||||
|
||||
|
||||
const char scanMap[50] = { // i could output directly idx,
|
||||
8, 9, 10, 40, 20, 30, 47, // but maybe a translation map
|
||||
41, 42, 43, 39, 44, 38, 45, // can prove useful in future.
|
||||
31, 32, 33, 35, 34, 36, 37, // starts from 1...think 0
|
||||
21, 22, 23, 25, 24, 26, 27, // should be reserved for
|
||||
11, 12, 13, 15, 14, 16, 17, // future use
|
||||
1, 2, 3, 5, 4, 6, 7,
|
||||
28, 18, 19, 0, 0, 29, 46 };
|
||||
|
||||
const char serialMap[4][49] = { // CHARACTER MAPPING MATRIX for "pure serial mode"
|
||||
// normal char press
|
||||
{56, 57, 48, 13, 112, 44, 0,
|
||||
0, 0, 0, 46, 32, 109, 0,
|
||||
0, 122, 120, 118, 99, 98, 110,
|
||||
97, 115, 100, 103, 102, 104, 106,
|
||||
113, 119, 101, 116, 114, 121, 117,
|
||||
49, 50, 51, 53, 52, 54, 55,
|
||||
107, 105, 111, 0, 0, 108, 8},
|
||||
|
||||
// shifted
|
||||
{56, 57, 48, 13, 80, 44, 0,
|
||||
0, 0, 0, 46, 32, 77, 0,
|
||||
0, 90, 88, 86, 67, 66, 78,
|
||||
65, 83, 68, 71, 70, 72, 74,
|
||||
81, 87, 69, 84, 82, 89, 85,
|
||||
49, 50, 51, 53, 52, 54, 55,
|
||||
75, 73, 79, 0, 0, 76, 8},
|
||||
|
||||
// green alt
|
||||
{56, 57, 48, 13, 41, 58, 0,
|
||||
0, 0, 0, 63, 32, 62, 0,
|
||||
0, 96, 39, 45, 187, 124, 60,
|
||||
126, 154, 123, 168, 125, 47, 39,
|
||||
33, 64, 128, 37, 35, 94, 38,
|
||||
49, 50, 51, 53, 52, 54, 55,
|
||||
91, 42, 40, 0, 0, 93, 8},
|
||||
|
||||
// red alt
|
||||
{56, 57, 48, 13, 61, 59, 0,
|
||||
0, 0, 0, 191, 32, 181, 0,
|
||||
0, 230, 156, 95, 231, 43, 241,
|
||||
225, 223, 240, 165, 163, 92, 34,
|
||||
161, 229, 232, 254, 36, 253, 249,
|
||||
49, 50, 51, 53, 52, 54, 55,
|
||||
169, 236, 242, 0, 0, 248, 8}
|
||||
}; ////////// END OF MAPPING MATRIX
|
||||
|
||||
unsigned char data[7] = {0,0,0,0,0,0,0};
|
||||
unsigned char oldData[7] = {0,0,0,0,0,0,0};
|
||||
unsigned char justPressed[7] = {0,0,0,0,0,0,0};
|
||||
|
||||
unsigned char newlyPressd = 0;
|
||||
|
||||
unsigned char AMask = 0;
|
||||
unsigned char BMask = 0;
|
||||
|
||||
unsigned char somethingChanged = 0;
|
||||
|
||||
unsigned long int timer = 0xFFFF;
|
||||
unsigned long int lightFadeOffTime = 0x8000;
|
||||
|
||||
// alternates (shift,green,red) mapping to translation map
|
||||
// 0 1 2 3 4 5 6 7
|
||||
unsigned char alts [] = {0, 1, 2, 2, 3, 3, 3, 3};
|
||||
unsigned char alt;
|
||||
|
||||
void (*send)() = 0;
|
||||
void (*lightHandler)() = 0;
|
||||
|
||||
unsigned char baudrate = 0;
|
||||
unsigned char sendMode = 0;
|
||||
unsigned char lightMode = 0;
|
||||
unsigned char lightStrenght = 0;
|
||||
|
||||
unsigned char pwmRunning = 0;
|
||||
|
||||
void enterPowerSave(){
|
||||
PORTA = 0;
|
||||
INTCON.RBIE = 1; // enables PORTB on-change interrupt
|
||||
asm{
|
||||
sleep;
|
||||
}
|
||||
}
|
||||
|
||||
void exitPowerSave(){
|
||||
INTCON.RBIE = 0; // disables PORTB on-change interrupt
|
||||
}
|
||||
|
||||
void setupUsart(unsigned char br){
|
||||
switch(br){ // done so, because you can't call USART_Init(variable); but only USART_Init(literal);
|
||||
case BAUDRATE_300: USART_Init(300);
|
||||
break;
|
||||
case BAUDRATE_1200: USART_Init(1200);
|
||||
break;
|
||||
case BAUDRATE_2400: USART_Init(2400);
|
||||
break;
|
||||
case BAUDRATE_4800: USART_Init(4800);
|
||||
break;
|
||||
case BAUDRATE_9600: USART_Init(9600);
|
||||
break;
|
||||
case BAUDRATE_19200: USART_Init(19200);
|
||||
break;
|
||||
case BAUDRATE_38400: USART_Init(38400);
|
||||
break;
|
||||
case BAUDRATE_57600: USART_Init(57600);
|
||||
break;
|
||||
case BAUDRATE_115200: USART_Init(115200);
|
||||
break;
|
||||
default: EEprom_write(CONFIG_BAUDRATE, BAUDRATE_4800); // if no config found, set a default 4800
|
||||
br = BAUDRATE_4800;
|
||||
USART_Init(4800);
|
||||
}
|
||||
baudrate = br;
|
||||
}
|
||||
|
||||
void turnBacklightOn(){
|
||||
timer = lightFadeOffTime;
|
||||
if (!pwmRunning) {
|
||||
PWM1_Start();
|
||||
PWM2_Start();
|
||||
pwmRunning = 1;
|
||||
}
|
||||
PWM1_Change_Duty(lightStrenght);
|
||||
PWM2_Change_Duty(lightStrenght);
|
||||
}
|
||||
|
||||
void nop(){
|
||||
|
||||
}
|
||||
|
||||
void lightFade(){
|
||||
unsigned char s;
|
||||
if (newlyPressd) {
|
||||
turnBacklightOn();
|
||||
return;
|
||||
}
|
||||
|
||||
if (timer>0) timer --;
|
||||
else {
|
||||
PWM1_Stop;
|
||||
PWM2_Stop;
|
||||
PORTC = 255;
|
||||
pwmRunning = 0;
|
||||
enterPowerSave();
|
||||
}
|
||||
|
||||
if (timer<(~lightStrenght)){
|
||||
PWM1_Change_Duty(~((unsigned char)timer));
|
||||
PWM2_Change_Duty(~((unsigned char)timer));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void setupLightMode(unsigned char lm){
|
||||
|
||||
if (pwmRunning){
|
||||
PWM1_Stop();
|
||||
PWM2_Stop();
|
||||
}
|
||||
|
||||
switch (lm){
|
||||
case LIGHTMODE_ALWAYSOFF: lightHandler = &nop;
|
||||
lightStrenght = 0xFF;
|
||||
lightMode = LIGHTMODE_ALWAYSOFF;
|
||||
break;
|
||||
|
||||
case LIGHTMODE_ALWAYSON: lightHandler = &nop;
|
||||
turnBacklightOn();
|
||||
lightMode = LIGHTMODE_ALWAYSON;
|
||||
break;
|
||||
|
||||
case LIGHTMODE_FADE: lightHandler = &lightFade;
|
||||
turnBacklightOn();
|
||||
lightStrenght = 0x80; // restore middle luminosity
|
||||
lightMode = LIGHTMODE_FADE;
|
||||
break;
|
||||
|
||||
default : EEprom_write(CONFIG_LIGHTMODE, LIGHTMODE_ALWAYSOFF);
|
||||
lightMode = LIGHTMODE_ALWAYSOFF;
|
||||
lightHandler = &nop;
|
||||
lightStrenght = 0xFF;
|
||||
}
|
||||
|
||||
PORTC = 255;
|
||||
|
||||
// PWM init
|
||||
if (lightMode != LIGHTMODE_ALWAYSOFF) {
|
||||
PWM1_Init(40000);
|
||||
PWM1_Change_Duty(lightStrenght);
|
||||
PWM1_Start();
|
||||
|
||||
PWM2_Init(40000);
|
||||
PWM2_Change_Duty(lightStrenght);
|
||||
PWM2_Start();
|
||||
|
||||
pwmRunning = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void doScan(){
|
||||
unsigned char sc = 0;
|
||||
|
||||
newlyPressd = 0;
|
||||
|
||||
for (AMask=1; AMask<128; AMask<<=1){
|
||||
|
||||
oldData[sc] = data[sc]; // save old data
|
||||
|
||||
PORTA = ~AMask; // put a 0 on the line we want to inspect
|
||||
data[sc] = PORTB; // read PORTB (pulled up)...if a line goes to 0, bingo!
|
||||
data[sc] = data[sc] | PORTB; // antibounce
|
||||
data[sc] = data[sc] | PORTB; // antibounce
|
||||
data[sc] = ~data[sc]; // return to positive logic
|
||||
|
||||
justPressed[sc] = data[sc]&(~oldData[sc]);
|
||||
|
||||
newlyPressd = newlyPressd | justPressed[sc];
|
||||
|
||||
sc++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void serialSend(){
|
||||
unsigned char idx = 0;
|
||||
unsigned char sc = 0;
|
||||
|
||||
for (AMask=1; AMask<128; AMask<<=1){
|
||||
for (BMask=1; BMask<128; BMask<<=1){
|
||||
if (justPressed[sc] & BMask) USART_Write(serialMap[alt][idx]);
|
||||
idx++;
|
||||
}
|
||||
sc++;
|
||||
}
|
||||
alt = alts[data[2]&1|((data[1]&1)<<1)|((data[0]&64)>>4)]; // next scan can use alt retrieved here
|
||||
}
|
||||
|
||||
void scanSend(){
|
||||
unsigned char idx = 0;
|
||||
unsigned char sc = 0;
|
||||
unsigned char bs = 0;
|
||||
|
||||
for (AMask=1; AMask<128; AMask<<=1){
|
||||
somethingChanged = data[sc] ^ oldData[sc];
|
||||
bs = 0;
|
||||
for (BMask=1; BMask<128; BMask<<=1){
|
||||
if (someThingChanged & BMask)
|
||||
USART_Write(scanMap[idx] | (((data[sc]&BMask)>>bs)<<6)); // | 64 if pressed
|
||||
bs++;
|
||||
idx++;
|
||||
}
|
||||
sc++;
|
||||
}
|
||||
}
|
||||
|
||||
void ps2Send(){
|
||||
// not implemented yet
|
||||
}
|
||||
|
||||
void setupSendMode(unsigned char sm){
|
||||
switch (sm){
|
||||
case SENDMODE_SCAN : send = &scanSend;
|
||||
sendMode = SENDMODE_SCAN;
|
||||
break;
|
||||
|
||||
case SENDMODE_SERIAL: send = &serialSend;
|
||||
sendMode = SENDMODE_SERIAL;
|
||||
break;
|
||||
|
||||
// case SENDMODE_PS2: send = &ps2send;
|
||||
// sendMode = SENDMODE_PS2;
|
||||
// break;
|
||||
|
||||
default : send = &serialSend;
|
||||
EEprom_write(CONFIG_SENDMODE, SENDMODE_SERIAL);
|
||||
sendMode = SENDMODE_SERIAL;
|
||||
}
|
||||
}
|
||||
|
||||
void config(){
|
||||
timer = lightFadeOffTime;
|
||||
|
||||
if ((data[1]&4)&&(lightStrenght<0xff)) { // <
|
||||
lightStrenght++;
|
||||
PWM1_Change_Duty(lightStrenght);
|
||||
PWM2_Change_Duty(lightStrenght);
|
||||
if (lightMode==LIGHTMODE_ALWAYSOFF) lightMode = LIGHTMODE_FADE;
|
||||
} // decrease light strenght
|
||||
|
||||
if ((data[1]&64)&&(lightStrenght>0)) { // >
|
||||
lightStrenght--;
|
||||
PWM1_Change_Duty(lightStrenght);
|
||||
PWM2_Change_Duty(lightStrenght);
|
||||
if (lightMode==LIGHTMODE_ALWAYSOFF) lightMode = LIGHTMODE_FADE;
|
||||
} // increase light strenght
|
||||
|
||||
|
||||
if (justPressed[5]&1){ // 1
|
||||
// if (data[1]&1) // this buttion combination just doesn't work...think that's because of the buttons staying on the same matrix line.
|
||||
// setupUsart(BAUDRATE_4800);
|
||||
// else {
|
||||
setupLightMode(LIGHTMODE_FADE);
|
||||
lightFadeOffTime = 2<<8;
|
||||
// }
|
||||
}
|
||||
|
||||
if (justPressed[5]&2){ // 2
|
||||
if (data[1]&1)
|
||||
;//setupUsart(BAUDRATE_300); //all setupUsart commented out are to save code words space...otherwise i'm running into demo limit
|
||||
else { //consider donating some money to me to purchase a full version of mikroC and continue development
|
||||
setupLightMode(LIGHTMODE_FADE);
|
||||
lightFadeOffTime = 4<<8; // more or less 5 sec
|
||||
}
|
||||
}
|
||||
|
||||
if (justPressed[5]&4){ // 3
|
||||
if (data[1]&1)
|
||||
;//setupUsart(BAUDRATE_1200);
|
||||
else {
|
||||
setupLightMode(LIGHTMODE_FADE);
|
||||
lightFadeOffTime = 8<<8;
|
||||
}
|
||||
}
|
||||
|
||||
if (justPressed[5]&16){ // 4
|
||||
if (data[1]&1)
|
||||
;//setupUsart(BAUDRATE_2400);
|
||||
else {
|
||||
setupLightMode(LIGHTMODE_FADE);
|
||||
lightFadeOffTime = 16<<8;
|
||||
}
|
||||
}
|
||||
|
||||
if (justPressed[5]&8){ // 5
|
||||
if (data[1]&1)
|
||||
setupUsart(BAUDRATE_4800);
|
||||
else {
|
||||
setupLightMode(LIGHTMODE_FADE);
|
||||
lightFadeOffTime = 32<<8;
|
||||
}
|
||||
}
|
||||
|
||||
if (justPressed[5]&32){ // 6
|
||||
if (data[1]&1)
|
||||
setupUsart(BAUDRATE_9600);
|
||||
else {
|
||||
setupLightMode(LIGHTMODE_FADE);
|
||||
lightFadeOffTime = 64<<8;
|
||||
}
|
||||
}
|
||||
|
||||
if (justPressed[5]&64){ // 7
|
||||
if (data[1]&1)
|
||||
;//setupUsart(BAUDRATE_19200);
|
||||
else {
|
||||
setupLightMode(LIGHTMODE_FADE);
|
||||
lightFadeOffTime = 128<<8;
|
||||
}
|
||||
}
|
||||
|
||||
if (justPressed[0]&1){ // 8
|
||||
if (data[1]&1)
|
||||
;//setupUsart(BAUDRATE_38400);
|
||||
else {
|
||||
setupLightMode(LIGHTMODE_FADE);
|
||||
lightFadeOffTime = 255<<8;
|
||||
}
|
||||
}
|
||||
|
||||
if (justPressed[0]&2){ // 9
|
||||
if (data[1]&1)
|
||||
;//setupUsart(BAUDRATE_57600);
|
||||
else
|
||||
setupLightMode(LIGHTMODE_ALWAYSON);
|
||||
}
|
||||
|
||||
if (justPressed[0]&4){ // 0
|
||||
if (data[1]&1)
|
||||
;//setupUsart(BAUDRATE_115200);
|
||||
else
|
||||
setupLightMode(LIGHTMODE_ALWAYSOFF);
|
||||
}
|
||||
|
||||
if (justPressed[3]&1){ // A
|
||||
setupSendMode(SENDMODE_SCAN);
|
||||
}
|
||||
|
||||
if (justPressed[3]&2){ // S
|
||||
setupSendMode(SENDMODE_SERIAL);
|
||||
}
|
||||
|
||||
Delay_5ms();
|
||||
|
||||
}
|
||||
|
||||
void saveConfig(){
|
||||
EEprom_write(CONFIG_BAUDRATE, baudrate);
|
||||
EEprom_write(CONFIG_SENDMODE, sendMode);
|
||||
EEprom_write(CONFIG_LIGHTMODE, lightMode);
|
||||
EEprom_write(CONFIG_LIGHTSTRENGTH, lightStrenght);
|
||||
EEprom_write(CONFIG_LIGHTFADEOFFTIME, lightFadeOffTime>>8);
|
||||
}
|
||||
|
||||
void interrupt() {
|
||||
if (INTCON.RBIF) { // SOMETHING CHANGED ON PORTB...
|
||||
exitPowerSave(); // just wakeup and so some scanning...
|
||||
INTCON.RBIF = 0; // clear intr flag
|
||||
}
|
||||
|
||||
// if (PIR1.RCIF) { // USART RECEIVE BUFFER () FULL...
|
||||
//
|
||||
// }
|
||||
}
|
||||
|
||||
void main() {
|
||||
|
||||
OSCCON = 0x67; // 01100111 - 0110 stands for 4Mhz internal clock
|
||||
|
||||
ANSEL = 0; // Configure AN pins as digital I/O
|
||||
ANSELH = 0;
|
||||
|
||||
PORTA = 0; // init port A
|
||||
TRISA = 0; // 1 = input
|
||||
|
||||
PORTB = 0; // initialize PORTB
|
||||
TRISB = 255; // designate PORTB as all input
|
||||
|
||||
PORTC = 0; // initialize PORTC
|
||||
TRISC = 0; // designate PORTB 0-7 as output
|
||||
|
||||
OPTION_REG = 0; // pull-ups enabled on PORTB....no external pull-downs
|
||||
// present, so we have to run negative logic...
|
||||
|
||||
//WPUB = 127; // weak pull-ups enabled on PORTB 0-6 // AAARGH!! this caused random Light-On
|
||||
|
||||
INTCON.RBIE = 0; // disables PORTB on-change interrupt
|
||||
INTCON.RBIF = 0; // clear PORTB mismatch values
|
||||
|
||||
IOCB = 127; // pin 0-6 of PORTB configured to raise interrupt when changed
|
||||
|
||||
PIE1 = 32; // RCIE = 1; enables EUSART on-receive interrupt
|
||||
|
||||
INTCON.GIE = 1; // Global Interrupt Enable/disable
|
||||
|
||||
// SEND MODE ------------------
|
||||
Delay_ms(20); // required for eeprom_read to work correctly
|
||||
sendMode = EEprom_read(CONFIG_SENDMODE);
|
||||
setupSendMode(sendMode);
|
||||
// TODO: if in PS2 mode don't initialize usart
|
||||
|
||||
// USART ---------------
|
||||
Delay_ms(20); // required for eeprom_read to work correctly
|
||||
baudrate = EEprom_read(CONFIG_BAUDRATE);
|
||||
setupUsart(baudrate); // Initalize USART (xxxx baud rate, 1 stop bit, no parity...)
|
||||
|
||||
// LIGHTS ----------------
|
||||
Delay_ms(20); // required for eeprom_read to work correctly
|
||||
lightFadeOffTime = EEprom_read(CONFIG_LIGHTFADEOFFTIME) << 8;
|
||||
lightStrenght = EEprom_read(CONFIG_LIGHTSTRENGTH);
|
||||
|
||||
Delay_ms(20); // required for eeprom_read to work correctly
|
||||
lightMode = EEprom_read(CONFIG_LIGHTMODE);
|
||||
setUpLightMode(lightMode);
|
||||
|
||||
do {
|
||||
|
||||
doScan();
|
||||
|
||||
if (data[1]&2) {
|
||||
config(); // people button pressed -> config mode
|
||||
}else{
|
||||
if (oldData[1]&2) saveConfig(); // ppl btn just released... save config
|
||||
send();
|
||||
}
|
||||
lightHandler();
|
||||
Delay_80us(); // without this delay, pic hangs on sleep...
|
||||
} while (1); // endless loop
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,481 @@
|
||||
#line 1 "E:/Acer_D_Backup/DEVELOPMENT/PROJECTS/micros/openKeyboard03/openKeyboard.c"
|
||||
#line 39 "E:/Acer_D_Backup/DEVELOPMENT/PROJECTS/micros/openKeyboard03/openKeyboard.c"
|
||||
const char scanMap[50] = {
|
||||
8, 9, 10, 40, 20, 30, 47,
|
||||
41, 42, 43, 39, 44, 38, 45,
|
||||
31, 32, 33, 35, 34, 36, 37,
|
||||
21, 22, 23, 25, 24, 26, 27,
|
||||
11, 12, 13, 15, 14, 16, 17,
|
||||
1, 2, 3, 5, 4, 6, 7,
|
||||
28, 18, 19, 0, 0, 29, 46 };
|
||||
|
||||
const char serialMap[4][49] = {
|
||||
|
||||
{56, 57, 48, 13, 112, 44, 0,
|
||||
0, 0, 0, 46, 32, 109, 0,
|
||||
0, 122, 120, 118, 99, 98, 110,
|
||||
97, 115, 100, 103, 102, 104, 106,
|
||||
113, 119, 101, 116, 114, 121, 117,
|
||||
49, 50, 51, 53, 52, 54, 55,
|
||||
107, 105, 111, 0, 0, 108, 8},
|
||||
|
||||
|
||||
{56, 57, 48, 13, 80, 44, 0,
|
||||
0, 0, 0, 46, 32, 77, 0,
|
||||
0, 90, 88, 86, 67, 66, 78,
|
||||
65, 83, 68, 71, 70, 72, 74,
|
||||
81, 87, 69, 84, 82, 89, 85,
|
||||
49, 50, 51, 53, 52, 54, 55,
|
||||
75, 73, 79, 0, 0, 76, 8},
|
||||
|
||||
|
||||
{56, 57, 48, 13, 41, 58, 0,
|
||||
0, 0, 0, 63, 32, 62, 0,
|
||||
0, 96, 39, 45, 187, 124, 60,
|
||||
126, 154, 123, 168, 125, 47, 39,
|
||||
33, 64, 128, 37, 35, 94, 38,
|
||||
49, 50, 51, 53, 52, 54, 55,
|
||||
91, 42, 40, 0, 0, 93, 8},
|
||||
|
||||
|
||||
{56, 57, 48, 13, 61, 59, 0,
|
||||
0, 0, 0, 191, 32, 181, 0,
|
||||
0, 230, 156, 95, 231, 43, 241,
|
||||
225, 223, 240, 165, 163, 92, 34,
|
||||
161, 229, 232, 254, 36, 253, 249,
|
||||
49, 50, 51, 53, 52, 54, 55,
|
||||
169, 236, 242, 0, 0, 248, 8}
|
||||
};
|
||||
|
||||
unsigned char data[7] = {0,0,0,0,0,0,0};
|
||||
unsigned char oldData[7] = {0,0,0,0,0,0,0};
|
||||
unsigned char justPressed[7] = {0,0,0,0,0,0,0};
|
||||
|
||||
unsigned char newlyPressd = 0;
|
||||
|
||||
unsigned char AMask = 0;
|
||||
unsigned char BMask = 0;
|
||||
|
||||
unsigned char somethingChanged = 0;
|
||||
|
||||
unsigned long int timer = 0xFFFF;
|
||||
unsigned long int lightFadeOffTime = 0x8000;
|
||||
|
||||
|
||||
|
||||
unsigned char alts [] = {0, 1, 2, 2, 3, 3, 3, 3};
|
||||
unsigned char alt;
|
||||
|
||||
void (*send)() = 0;
|
||||
void (*lightHandler)() = 0;
|
||||
|
||||
unsigned char baudrate = 0;
|
||||
unsigned char sendMode = 0;
|
||||
unsigned char lightMode = 0;
|
||||
unsigned char lightStrenght = 0;
|
||||
|
||||
unsigned char pwmRunning = 0;
|
||||
|
||||
void enterPowerSave(){
|
||||
PORTA = 0;
|
||||
INTCON.RBIE = 1;
|
||||
asm{
|
||||
sleep;
|
||||
}
|
||||
}
|
||||
|
||||
void exitPowerSave(){
|
||||
INTCON.RBIE = 0;
|
||||
}
|
||||
|
||||
void setupUsart(unsigned char br){
|
||||
switch(br){
|
||||
case 1 : USART_Init(300);
|
||||
break;
|
||||
case 2 : USART_Init(1200);
|
||||
break;
|
||||
case 3 : USART_Init(2400);
|
||||
break;
|
||||
case 4 : USART_Init(4800);
|
||||
break;
|
||||
case 5 : USART_Init(9600);
|
||||
break;
|
||||
case 6 : USART_Init(19200);
|
||||
break;
|
||||
case 7 : USART_Init(38400);
|
||||
break;
|
||||
case 8 : USART_Init(57600);
|
||||
break;
|
||||
case 9 : USART_Init(115200);
|
||||
break;
|
||||
default: EEprom_write( 1 , 4 );
|
||||
br = 4 ;
|
||||
USART_Init(4800);
|
||||
}
|
||||
baudrate = br;
|
||||
}
|
||||
|
||||
void turnBacklightOn(){
|
||||
timer = lightFadeOffTime;
|
||||
if (!pwmRunning) {
|
||||
PWM1_Start();
|
||||
PWM2_Start();
|
||||
pwmRunning = 1;
|
||||
}
|
||||
PWM1_Change_Duty(lightStrenght);
|
||||
PWM2_Change_Duty(lightStrenght);
|
||||
}
|
||||
|
||||
void nop(){
|
||||
|
||||
}
|
||||
|
||||
void lightFade(){
|
||||
unsigned char s;
|
||||
if (newlyPressd) {
|
||||
turnBacklightOn();
|
||||
return;
|
||||
}
|
||||
|
||||
if (timer>0) timer --;
|
||||
else {
|
||||
PWM1_Stop;
|
||||
PWM2_Stop;
|
||||
PORTC = 255;
|
||||
pwmRunning = 0;
|
||||
enterPowerSave();
|
||||
}
|
||||
|
||||
if (timer<(~lightStrenght)){
|
||||
PWM1_Change_Duty(~((unsigned char)timer));
|
||||
PWM2_Change_Duty(~((unsigned char)timer));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void setupLightMode(unsigned char lm){
|
||||
|
||||
if (pwmRunning){
|
||||
PWM1_Stop();
|
||||
PWM2_Stop();
|
||||
}
|
||||
|
||||
switch (lm){
|
||||
case 0 : lightHandler = &nop;
|
||||
lightStrenght = 0xFF;
|
||||
lightMode = 0 ;
|
||||
break;
|
||||
|
||||
case 1 : lightHandler = &nop;
|
||||
turnBacklightOn();
|
||||
lightMode = 1 ;
|
||||
break;
|
||||
|
||||
case 2 : lightHandler = &lightFade;
|
||||
turnBacklightOn();
|
||||
lightStrenght = 0x80;
|
||||
lightMode = 2 ;
|
||||
break;
|
||||
|
||||
default : EEprom_write( 3 , 0 );
|
||||
lightMode = 0 ;
|
||||
lightHandler = &nop;
|
||||
lightStrenght = 0xFF;
|
||||
}
|
||||
|
||||
PORTC = 255;
|
||||
|
||||
|
||||
if (lightMode != 0 ) {
|
||||
PWM1_Init(40000);
|
||||
PWM1_Change_Duty(lightStrenght);
|
||||
PWM1_Start();
|
||||
|
||||
PWM2_Init(40000);
|
||||
PWM2_Change_Duty(lightStrenght);
|
||||
PWM2_Start();
|
||||
|
||||
pwmRunning = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void doScan(){
|
||||
unsigned char sc = 0;
|
||||
|
||||
newlyPressd = 0;
|
||||
|
||||
for (AMask=1; AMask<128; AMask<<=1){
|
||||
|
||||
oldData[sc] = data[sc];
|
||||
|
||||
PORTA = ~AMask;
|
||||
data[sc] = PORTB;
|
||||
data[sc] = data[sc] | PORTB;
|
||||
data[sc] = data[sc] | PORTB;
|
||||
data[sc] = ~data[sc];
|
||||
|
||||
justPressed[sc] = data[sc]&(~oldData[sc]);
|
||||
|
||||
newlyPressd = newlyPressd | justPressed[sc];
|
||||
|
||||
sc++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void serialSend(){
|
||||
unsigned char idx = 0;
|
||||
unsigned char sc = 0;
|
||||
|
||||
for (AMask=1; AMask<128; AMask<<=1){
|
||||
for (BMask=1; BMask<128; BMask<<=1){
|
||||
if (justPressed[sc] & BMask) USART_Write(serialMap[alt][idx]);
|
||||
idx++;
|
||||
}
|
||||
sc++;
|
||||
}
|
||||
alt = alts[data[2]&1|((data[1]&1)<<1)|((data[0]&64)>>4)];
|
||||
}
|
||||
|
||||
void scanSend(){
|
||||
unsigned char idx = 0;
|
||||
unsigned char sc = 0;
|
||||
unsigned char bs = 0;
|
||||
|
||||
for (AMask=1; AMask<128; AMask<<=1){
|
||||
somethingChanged = data[sc] ^ oldData[sc];
|
||||
bs = 0;
|
||||
for (BMask=1; BMask<128; BMask<<=1){
|
||||
if (someThingChanged & BMask)
|
||||
USART_Write(scanMap[idx] | (((data[sc]&BMask)>>bs)<<6));
|
||||
bs++;
|
||||
idx++;
|
||||
}
|
||||
sc++;
|
||||
}
|
||||
}
|
||||
|
||||
void ps2Send(){
|
||||
|
||||
}
|
||||
|
||||
void setupSendMode(unsigned char sm){
|
||||
switch (sm){
|
||||
case 1 : send = &scanSend;
|
||||
sendMode = 1 ;
|
||||
break;
|
||||
|
||||
case 0 : send = &serialSend;
|
||||
sendMode = 0 ;
|
||||
break;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
default : send = &serialSend;
|
||||
EEprom_write( 2 , 0 );
|
||||
sendMode = 0 ;
|
||||
}
|
||||
}
|
||||
|
||||
void config(){
|
||||
timer = lightFadeOffTime;
|
||||
|
||||
if ((data[1]&4)&&(lightStrenght<0xff)) {
|
||||
lightStrenght++;
|
||||
PWM1_Change_Duty(lightStrenght);
|
||||
PWM2_Change_Duty(lightStrenght);
|
||||
if (lightMode== 0 ) lightMode = 2 ;
|
||||
}
|
||||
|
||||
if ((data[1]&64)&&(lightStrenght>0)) {
|
||||
lightStrenght--;
|
||||
PWM1_Change_Duty(lightStrenght);
|
||||
PWM2_Change_Duty(lightStrenght);
|
||||
if (lightMode== 0 ) lightMode = 2 ;
|
||||
}
|
||||
|
||||
|
||||
if (justPressed[5]&1){
|
||||
|
||||
|
||||
|
||||
setupLightMode( 2 );
|
||||
lightFadeOffTime = 2<<8;
|
||||
|
||||
}
|
||||
|
||||
if (justPressed[5]&2){
|
||||
if (data[1]&1)
|
||||
;
|
||||
else {
|
||||
setupLightMode( 2 );
|
||||
lightFadeOffTime = 4<<8;
|
||||
}
|
||||
}
|
||||
|
||||
if (justPressed[5]&4){
|
||||
if (data[1]&1)
|
||||
;
|
||||
else {
|
||||
setupLightMode( 2 );
|
||||
lightFadeOffTime = 8<<8;
|
||||
}
|
||||
}
|
||||
|
||||
if (justPressed[5]&16){
|
||||
if (data[1]&1)
|
||||
;
|
||||
else {
|
||||
setupLightMode( 2 );
|
||||
lightFadeOffTime = 16<<8;
|
||||
}
|
||||
}
|
||||
|
||||
if (justPressed[5]&8){
|
||||
if (data[1]&1)
|
||||
setupUsart( 4 );
|
||||
else {
|
||||
setupLightMode( 2 );
|
||||
lightFadeOffTime = 32<<8;
|
||||
}
|
||||
}
|
||||
|
||||
if (justPressed[5]&32){
|
||||
if (data[1]&1)
|
||||
setupUsart( 5 );
|
||||
else {
|
||||
setupLightMode( 2 );
|
||||
lightFadeOffTime = 64<<8;
|
||||
}
|
||||
}
|
||||
|
||||
if (justPressed[5]&64){
|
||||
if (data[1]&1)
|
||||
;
|
||||
else {
|
||||
setupLightMode( 2 );
|
||||
lightFadeOffTime = 128<<8;
|
||||
}
|
||||
}
|
||||
|
||||
if (justPressed[0]&1){
|
||||
if (data[1]&1)
|
||||
;
|
||||
else {
|
||||
setupLightMode( 2 );
|
||||
lightFadeOffTime = 255<<8;
|
||||
}
|
||||
}
|
||||
|
||||
if (justPressed[0]&2){
|
||||
if (data[1]&1)
|
||||
;
|
||||
else
|
||||
setupLightMode( 1 );
|
||||
}
|
||||
|
||||
if (justPressed[0]&4){
|
||||
if (data[1]&1)
|
||||
;
|
||||
else
|
||||
setupLightMode( 0 );
|
||||
}
|
||||
|
||||
if (justPressed[3]&1){
|
||||
setupSendMode( 1 );
|
||||
}
|
||||
|
||||
if (justPressed[3]&2){
|
||||
setupSendMode( 0 );
|
||||
}
|
||||
|
||||
Delay_5ms();
|
||||
|
||||
}
|
||||
|
||||
void saveConfig(){
|
||||
EEprom_write( 1 , baudrate);
|
||||
EEprom_write( 2 , sendMode);
|
||||
EEprom_write( 3 , lightMode);
|
||||
EEprom_write( 4 , lightStrenght);
|
||||
EEprom_write( 5 , lightFadeOffTime>>8);
|
||||
}
|
||||
|
||||
void interrupt() {
|
||||
if (INTCON.RBIF) {
|
||||
exitPowerSave();
|
||||
INTCON.RBIF = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
void main() {
|
||||
|
||||
OSCCON = 0x67;
|
||||
|
||||
ANSEL = 0;
|
||||
ANSELH = 0;
|
||||
|
||||
PORTA = 0;
|
||||
TRISA = 0;
|
||||
|
||||
PORTB = 0;
|
||||
TRISB = 255;
|
||||
|
||||
PORTC = 0;
|
||||
TRISC = 0;
|
||||
|
||||
OPTION_REG = 0;
|
||||
|
||||
|
||||
|
||||
|
||||
INTCON.RBIE = 0;
|
||||
INTCON.RBIF = 0;
|
||||
|
||||
IOCB = 127;
|
||||
|
||||
PIE1 = 32;
|
||||
|
||||
INTCON.GIE = 1;
|
||||
|
||||
|
||||
Delay_ms(20);
|
||||
sendMode = EEprom_read( 2 );
|
||||
setupSendMode(sendMode);
|
||||
|
||||
|
||||
|
||||
Delay_ms(20);
|
||||
baudrate = EEprom_read( 1 );
|
||||
setupUsart(baudrate);
|
||||
|
||||
|
||||
Delay_ms(20);
|
||||
lightFadeOffTime = EEprom_read( 5 ) << 8;
|
||||
lightStrenght = EEprom_read( 4 );
|
||||
|
||||
Delay_ms(20);
|
||||
lightMode = EEprom_read( 3 );
|
||||
setUpLightMode(lightMode);
|
||||
|
||||
do {
|
||||
|
||||
doScan();
|
||||
|
||||
if (data[1]&2) {
|
||||
config();
|
||||
}else{
|
||||
if (oldData[1]&2) saveConfig();
|
||||
send();
|
||||
}
|
||||
lightHandler();
|
||||
Delay_80us();
|
||||
} while (1);
|
||||
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,299 @@
|
||||
:100000008A156B28FF3FFF3FFF00030E8301D900D5
|
||||
:100010000408D8000A08DA008A017008E5000B1C01
|
||||
:10002000132820200B10031383126508F0005A08D0
|
||||
:100030008A0058088400590E8300FF0E7F0E0900C5
|
||||
:100040008B11080003138312FB01FA01F9018030C0
|
||||
:10005000F800FD01F11F3228F109F009F00A031937
|
||||
:10006000F10AFD0AF51F3A28F509F409F40A031903
|
||||
:10007000F50AFD0AF10CF00C031C47287408F90777
|
||||
:1000800075080318750FFA070318FB0A0310F01F11
|
||||
:100090004F287408FA070318FB0A7508FB07FB0CC6
|
||||
:1000A000FA0CF90CF80C031C3A287D1C6228FB0999
|
||||
:1000B000FA09F909F809F80A0319F90A0319FA0AF9
|
||||
:1000C0000319FB0A7B08F3007A08F2007908F100B3
|
||||
:1000D0007808F0000000080003138316071183124C
|
||||
:1000E00012150C309704080003138316871083122F
|
||||
:1000F00012150C309D040800031383161208013FEB
|
||||
:10010000F000F1010318F10A83126408F400F5010C
|
||||
:1001100022200630F2007008F4007108F500720821
|
||||
:100120000319992803138312F50CF40CF513FF3F00
|
||||
:100130009028031383127408F000F00D7010F00D76
|
||||
:100140007010F00D7010F00D701030307005F3006D
|
||||
:100150007408F0007508F100F10CF00CF113F10CCB
|
||||
:10016000F00CF113700895000F3097057308970491
|
||||
:100170000800031383161208013FF000F101031871
|
||||
:10018000F10A83126408F400F50122200630F2001F
|
||||
:100190007008F4007108F50072080319D6280313DB
|
||||
:1001A0008312F50CF40CF513FF3FCD2803138312D3
|
||||
:1001B0007408F000F00D7010F00D7010F00D70105C
|
||||
:1001C000F00D701030307005F3007408F000750801
|
||||
:1001D000F100F10CF00CF113F10CF00CF1137008BC
|
||||
:1001E0009B000F309D0573089D04080003138316C0
|
||||
:1001F000071583121211F0309705080003138316B8
|
||||
:10020000871483121211F0309D0508000313831226
|
||||
:100210002408A0002508A1002608A2002708A300A2
|
||||
:100220002808031D17296C2074200130A80003132F
|
||||
:1002300083122908E4007C202908E400B920080082
|
||||
:100240000000031783168C1C2729000021290313A3
|
||||
:1002500083125F0803178D000313600803178C00D7
|
||||
:1002600083168C130C158B1355308D00AA308D001E
|
||||
:100270008C148B170C1108000313831295011712AD
|
||||
:1002800097120800031383129B011D129D12080090
|
||||
:1002900003138316981690308312980083168717DD
|
||||
:1002A0000713031383128C1E58291A08E3005129DF
|
||||
:1002B000080003138312280803196029F620FE2082
|
||||
:1002C0009D297D3003138312AA000530AB00003056
|
||||
:1002D000AC000030FF30A900AD01AC297D30031324
|
||||
:1002E0008312AA000530AB000030AC0000300621BC
|
||||
:1002F0000130AD00AC297E3003138312AA00053013
|
||||
:10030000AB000030AC00003006218030A900023084
|
||||
:10031000AD00AC29033003138312DF00E00120217C
|
||||
:1003200003138312AD017D30AA000530AB0000300D
|
||||
:10033000AC000030FF30A900AC29031383125E0823
|
||||
:10034000003A031961295E08013A03196E295E0813
|
||||
:10035000023A03197B298A29FF300313831287008D
|
||||
:100360002D08003A0319C6291830831692003C2143
|
||||
:100370002908E4007C206C2018308316920042216A
|
||||
:100380002908E400B92074200130A80008001A2AC6
|
||||
:1003900003138316CF3003138316990018114821D5
|
||||
:1003A000432ACF3003138316990018154821432A96
|
||||
:1003B000673003138316990018154821432A3330F8
|
||||
:1003C00003138316990018154821432A1930031383
|
||||
:1003D0008316990018154821432A0C3003138316FD
|
||||
:1003E000990018154821432A0630031383169900F3
|
||||
:1003F00018154821432A0330031383169900181552
|
||||
:100400004821432A01300313831699001815482107
|
||||
:10041000432A013003138312DF000430E00020215F
|
||||
:10042000043003138312DE0033308316990018154D
|
||||
:100430004821432A03138312031383125E08013AEF
|
||||
:100440000319C8295E08023A0319D1295E08033A44
|
||||
:100450000319D8295E08043A0319DF295E08053A12
|
||||
:100460000319E6295E08063A0319ED295E08073AE2
|
||||
:100470000319F4295E08083A0319FB295E08093AB2
|
||||
:100480000319022A092A031383125E08AE0008002A
|
||||
:10049000712AC53003138312AF000530B00000305D
|
||||
:1004A000B10000300130B2007E2A383003138312CD
|
||||
:1004B000AF000630B0000030B1000030B2017E2A3B
|
||||
:1004C000383003138312AF000630B0000030B100A3
|
||||
:1004D00000300230DF00E001202103138312B2015B
|
||||
:1004E0007E2A03138312031383125E08013A031951
|
||||
:1004F000492A5E08003A0319552A602A0800073085
|
||||
:1005000003138312FB00FF30FA00FB0B882A8B2AAF
|
||||
:10051000FA0B882A852A7830FA00FA0B8D2A000017
|
||||
:10052000000008000313831285018B156300080087
|
||||
:1005300000300313831698180130F1007108003A57
|
||||
:10054000031DA42A0000982A031383125E08990051
|
||||
:100550000800083409340A34283414341E342F3483
|
||||
:1005600029342A342B3427342C3426342D341F34A8
|
||||
:1005700020342134233422342434253415341634E1
|
||||
:100580001734193418341A341B340B340C340D342A
|
||||
:100590000F340E3410341134013402340334053472
|
||||
:1005A0000434063407341C34123413340034003459
|
||||
:1005B0001D342E34003408000313831234088A00DB
|
||||
:1005C0003508820008003834393430340D34703442
|
||||
:1005D0002C3400340034003400342E3420346D3494
|
||||
:1005E000003400347A3478347634633462346E34D0
|
||||
:1005F0006134733464346734663468346A34713413
|
||||
:100600007734653474347234793475343134323437
|
||||
:10061000333435343434363437346B3469346F34EE
|
||||
:10062000003400346C3408343834393430340D3408
|
||||
:1006300050342C3400340034003400342E34203450
|
||||
:100640004D34003400345A34583456344334423430
|
||||
:100650004E344134533444344734463448344A34B5
|
||||
:100660005134573445345434523459345534313478
|
||||
:100670003234333435343434363437344B3449340B
|
||||
:100680004F34003400344C34083438343934303486
|
||||
:100690000D3429343A3400340034003400343F340B
|
||||
:1006A00020343E3400340034603427342D34BB34DD
|
||||
:1006B0007C343C347E349A347B34A8347D342F34FB
|
||||
:1006C0002734213440348034253423345E342634B6
|
||||
:1006D00031343234333435343434363437345B34B3
|
||||
:1006E0002A342834003400345D3408343834393442
|
||||
:1006F00030340D343D343B340034003400340034A5
|
||||
:10070000BF342034B53400340034E6349C345F34D4
|
||||
:10071000E7342B34F134E134DF34F034A534A3343E
|
||||
:100720005C342234A134E534E834FE342434FD341E
|
||||
:10073000F9343134323433343534343436343734B4
|
||||
:10074000A934EC34F23400340034F83408340800AE
|
||||
:1007500003138312FB01FA01F9018030F800F10C58
|
||||
:10076000F00C031CBC2B7408F90775080318750FEF
|
||||
:10077000FA070318FB0A0310F01FC42B7408FA07CA
|
||||
:1007800075080318750FFB07FB0CFA0CF90CF80C35
|
||||
:10079000031CAF2B7B08F3007A08F2007908F10004
|
||||
:1007A0007808F0000800031383125B0803178D001C
|
||||
:1007B00083168C130C1483120C08F000080003132A
|
||||
:1007C0008312DB01B6010130B700803003138312BE
|
||||
:1007D00037020318472C5B08383FF1005B083F3FA6
|
||||
:1007E00084000008F0007108840070088000370958
|
||||
:1007F00085005B083F3FF000700884000608800019
|
||||
:100800005B083F3FF100710884000008F000060813
|
||||
:10081000F00471088400700880005B083F3FF1001D
|
||||
:10082000710884000008F0000608F00471088400D4
|
||||
:10083000700880005B083F3FF100710884000008E9
|
||||
:10084000F000F00971088400700880005B08463FE2
|
||||
:10085000F2005B083F3F84000008F1005B08383F6E
|
||||
:1008600084000008F000F0097108F00572088400A7
|
||||
:10087000700880005B08463F84000008F0007008A4
|
||||
:10088000B604DB0A03138312B70D3710E52B0800FB
|
||||
:10089000031383122408A0002508A1002608A20043
|
||||
:1008A0002708A300401D672CFF3029020318672C7E
|
||||
:1008B00003138312A90A2908E4007C202908E40014
|
||||
:1008C000B9202D08003A031D672C0230AD00031338
|
||||
:1008D0008312401F7E2C2908003C03187E2C031332
|
||||
:1008E0008312A9032908E4007C202908E400B92028
|
||||
:1008F0002D08003A031D7E2C0230AD000130031399
|
||||
:1009000083124B05F00003198E2C0230DE005921B2
|
||||
:100910000030A4000230A500A601A7010313831232
|
||||
:10092000CB1CA22C01304005F000031DA22C02308C
|
||||
:1009300003138312DE0059210030A4000430A50007
|
||||
:10094000A601A701031383124B1DB62C01304005ED
|
||||
:10095000F000031DB62C023003138312DE00592170
|
||||
:100960000030A4000830A500A601A70103138312DC
|
||||
:100970004B1ECA2C01304005F000031DCA2C02306A
|
||||
:1009800003138312DE0059210030A4001030A500AB
|
||||
:10099000A601A70103138312CB1DE22C01304005F1
|
||||
:1009A000F0000319D72C0430DE00C721E22C0230FE
|
||||
:1009B00003138312DE0059210030A4002030A5006B
|
||||
:1009C000A601A70103138312CB1EFA2C01304005A8
|
||||
:1009D000F0000319EF2C0530DE00C721FA2C02309D
|
||||
:1009E00003138312DE0059210030A4004030A5001B
|
||||
:1009F000A601A701031383124B1F0E2D01304005E2
|
||||
:100A0000F000031D0E2D023003138312DE00592166
|
||||
:100A10000030A4008030A500A601A7010130031317
|
||||
:100A200083124605F0000319252D01304005F00022
|
||||
:100A3000031D252D023003138312DE0059210030DF
|
||||
:100A4000A400FF30A500A601A70103138312C61C52
|
||||
:100A5000332D01304005F000031D332D0130031309
|
||||
:100A60008312DE00592103138312461D402D0130ED
|
||||
:100A70004005F000031D402D03138312DE015921B0
|
||||
:100A80000130031383124905F00003194A2D013088
|
||||
:100A9000DE00482203138312C91C502DDE014822B8
|
||||
:100AA0007F220800013003138312DF002E08E000CC
|
||||
:100AB0002021023003138312DF003208E0002021DE
|
||||
:100AC000033003138312DF002D08E00020210430DF
|
||||
:100AD00003138312DF002908E000202105300313EF
|
||||
:100AE0008312DF002508F0002608F1002708F20035
|
||||
:100AF000F3017008E00020210800080003138312AE
|
||||
:100B000036080319852D06210800031383122308D4
|
||||
:100B1000003C031D952D2208003C031D952D210846
|
||||
:100B2000003C031D952D2008003C0318A22D013028
|
||||
:100B300003138312A002031CA102031CA202031CC4
|
||||
:100B4000A302A82DFF30031383128700A80192226D
|
||||
:100B5000031383122909F10000302302031DBA2D6B
|
||||
:100B600000302202031DBA2D00302102031DBA2DD0
|
||||
:100B7000710820020318C42D031383122009E40016
|
||||
:100B80007C202009E400B920080003138312DB0154
|
||||
:100B9000DC01DD010130B70080300313831237021E
|
||||
:100BA0000318372E5C083F3F84000008CD005C0826
|
||||
:100BB000383F84000008F0007008CD06DD010130E8
|
||||
:100BC000CE008030031383124E0203182F2E4E08DE
|
||||
:100BD0004D05F0000319262E5B08A93FF0000230F6
|
||||
:100BE0000318013FF1007008B5007108B4000A084D
|
||||
:100BF000B300DC22DE0033088A005C083F3F84003B
|
||||
:100C00000008F0004E087005F2005D08F000720860
|
||||
:100C1000F30070080319122E03138312F30CF3135D
|
||||
:100C2000FF3F0A2E063003138312F2007308F00010
|
||||
:100C300072080319212E03138312F00D7010FF3F69
|
||||
:100C4000192E031383127008DE04982203138312F3
|
||||
:100C5000DD0ADB0A03138312CE0D4E10E12D0313C0
|
||||
:100C60008312DC0A03138312B70D3710CC2D080052
|
||||
:100C700003138312DB01DC010130B7008030031362
|
||||
:100C8000831237020318822E0130CE008030031306
|
||||
:100C900083124E0203187A2E5C08463F8400000837
|
||||
:100CA000F0004E08F0050319722E4F08F000F10114
|
||||
:100CB0003130F4000030F500A823E330F0070230B3
|
||||
:100CC0000318013FF1075B08F0070318F10A7008E9
|
||||
:100CD000B5007108B4000A08B300DC22DE00330856
|
||||
:100CE0008A00982203138312DB0A03138312CE0DAA
|
||||
:100CF0004E10462E03138312DC0A03138312B70D22
|
||||
:100D000037103E2E0130031383124105F4000130E9
|
||||
:100D10004005F3007308F000F101F00DF10D7010C3
|
||||
:100D20000030F5007008F4047108F50440303F0508
|
||||
:100D3000F3007308F000F00CF013F00CF013F00C5B
|
||||
:100D4000F013F00CF0130030F1007408F004750893
|
||||
:100D5000F1047008503F84000008CF0008001930EB
|
||||
:100D600003138312FA00FA0BB32E000000000800F0
|
||||
:100D70000313831234088A00350882000800FF3FFD
|
||||
:100D8000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F73
|
||||
:100D9000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F63
|
||||
:100DA000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F53
|
||||
:100DB000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F43
|
||||
:100DC000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F33
|
||||
:100DD000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F23
|
||||
:100DE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F13
|
||||
:100DF000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F03
|
||||
:100E0000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF2
|
||||
:100E1000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE2
|
||||
:100E2000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD2
|
||||
:100E3000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC2
|
||||
:100E4000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB2
|
||||
:100E5000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA2
|
||||
:100E6000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F92
|
||||
:100E7000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F82
|
||||
:100E8000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F72
|
||||
:100E9000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F62
|
||||
:100EA000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F52
|
||||
:100EB000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F42
|
||||
:100EC000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F32
|
||||
:100ED000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F22
|
||||
:100EE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F12
|
||||
:100EF000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F02
|
||||
:100F0000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF1
|
||||
:100F1000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE1
|
||||
:100F2000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD1
|
||||
:100F3000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC1
|
||||
:100F4000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB1
|
||||
:100F5000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA1
|
||||
:100F6000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F91
|
||||
:100F7000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F81
|
||||
:100F8000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F71
|
||||
:100F9000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F61
|
||||
:100FA000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F51
|
||||
:100FB000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F41
|
||||
:100FC000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F31
|
||||
:100FD000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F21
|
||||
:100FE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F11
|
||||
:100FF000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F01
|
||||
:10100000003003138312BF000030C0000030C10065
|
||||
:101010000030C2000030C3000030C4000030C50002
|
||||
:101020000030B8000030B9000030BA000030BB001A
|
||||
:101030000030BC000030BD000030BE000030C600F3
|
||||
:101040000030C7000030C8000030C9000030CA00BE
|
||||
:101050000030CB000030CC000030B6000030B700CC
|
||||
:101060000030CE000030CD00FF30A000FF30A100E6
|
||||
:101070000030A2000030A3000030A4008030A500A2
|
||||
:101080000030A6000030A7000030D0000130D100B1
|
||||
:101090000230D2000230D3000330D4000330D50038
|
||||
:1010A0000330D6000330D7000030AF000030B0006E
|
||||
:1010B0000030B1000030AA000030AB000030AC00BE
|
||||
:1010C0000030AE000030B2000030AD000030A900AA
|
||||
:1010D0000030A800080000206730031383168F003B
|
||||
:1010E0000317880189010313831285018316850183
|
||||
:1010F00083128601FF3083168600831287018316D0
|
||||
:10110000870181018B110B107F30960020308C00FD
|
||||
:101110008B171A30FB00FF30FA00FB0B9028932846
|
||||
:10112000FA0B90288D28E730FA00FA0B952800007A
|
||||
:1011300002308312DB008A11D3238A15700803134F
|
||||
:10114000B2007008DE008A1148228A151A30FB00AE
|
||||
:10115000FF30FA00FB0BAD28B028FA0BAD28AA2807
|
||||
:10116000E730FA00FA0BB22800000130DB008A11E8
|
||||
:10117000D3238A1570080313AE007008DE008A11AD
|
||||
:10118000C7218A151A30FB00FF30FA00FB0BC92873
|
||||
:10119000CC28FA0BC928C628E730FA00FA0BCE286B
|
||||
:1011A00000000530DB008A11D3238A150830F100D6
|
||||
:1011B00070080313A400A50171080319E62803139E
|
||||
:1011C0008312A40DA50D2410FF3FDD28003003136A
|
||||
:1011D0008312A600A7000430DB008A11D3238A15EE
|
||||
:1011E00070080313A9001A30FB00FF30FA00FB0B54
|
||||
:1011F000FA28FD28FA0BFA28F728E730FA00FA0B4C
|
||||
:10120000FF2800000330DB008A11D3238A15700801
|
||||
:101210000313AD007008DE008A1159218A158A1166
|
||||
:10122000DF238A1503138312C01C1A298A1148244C
|
||||
:101230008A15302903138312B91C21298A115225DA
|
||||
:101240008A15031383122F08B5003008B4000A086A
|
||||
:10125000B3008A11B8268A150313831233088A0053
|
||||
:10126000031383122A08B5002B08B4000A08B30040
|
||||
:101270008A11B8268A150313831233088A008A114B
|
||||
:10128000AF268A150F294329FF3FFF3FFF3FFF3F4E
|
||||
:04400E00C420FF3F8C
|
||||
:00000001FF
|
||||
File diff suppressed because it is too large.
Load diff
Binary file not shown.
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,41 @@
|
||||
[DeviceName]
|
||||
Value=P16F883
|
||||
[DeviceClock]
|
||||
Value=4
|
||||
[MainUnit]
|
||||
Value=ADC_USART.c
|
||||
[DeviceFlags]
|
||||
Count=12
|
||||
Value0=_INTOSCIO = $3FFC
|
||||
Value1=_WDT_OFF = $3FF7
|
||||
Value2=_PWRTE_ON = $3FEF
|
||||
Value3=_MCLRE_OFF = $3FDF
|
||||
Value4=_CP_OFF = $3FFF
|
||||
Value5=_CPD_OFF = $3FFF
|
||||
Value6=_BOR_OFF = $3CFF
|
||||
Value7=_IESO_OFF = $3BFF
|
||||
Value8=_FCMEN_OFF = $37FF
|
||||
Value9=_LVP_OFF = $2FFF
|
||||
Value10=_DEBUG_OFF = $3FFF
|
||||
Value11=_WRT_OFF = $3FFF
|
||||
[BuildType]
|
||||
bType=0
|
||||
[ProjectFiles]
|
||||
Count=1
|
||||
Value0=openKeyboard.c
|
||||
[HeaderFiles]
|
||||
Count=0
|
||||
[ObjLibFiles]
|
||||
Count=0
|
||||
[PLDFiles]
|
||||
Count=0
|
||||
[EEPROMinfo]
|
||||
isused=0
|
||||
[SearchPath]
|
||||
Count=4
|
||||
Value0=C:\Programmi\Mikroelektronika\mikroC\Defs\
|
||||
Value1=C:\Programmi\Mikroelektronika\mikroC\Uses\p16\
|
||||
Value2=D:\DEVELOPMENT\PROJECTS\micros\openKeyboard\
|
||||
Value3=C:\Programmi\Mikroelektronika\mikroC\miei\
|
||||
[IncludePath]
|
||||
Count=0
|
||||
@@ -0,0 +1,87 @@
|
||||
interrupt
|
||||
exitPowerSave
|
||||
main
|
||||
____DoICF
|
||||
GlobalIniopenKeyboard
|
||||
Delay_80us
|
||||
serialSend
|
||||
____DoICP
|
||||
Mul_16x16_U
|
||||
?table___serialMap
|
||||
Usart_Write
|
||||
scanSend
|
||||
____DoICP
|
||||
?table___scanMap
|
||||
Usart_Write
|
||||
lightFade
|
||||
PWM2_Change_Duty
|
||||
Mul_16x16_S
|
||||
PWM1_Change_Duty
|
||||
Mul_16x16_S
|
||||
enterPowerSave
|
||||
turnBacklightOn
|
||||
PWM2_Change_Duty
|
||||
Mul_16x16_S
|
||||
PWM1_Change_Duty
|
||||
Mul_16x16_S
|
||||
PWM2_Start
|
||||
PWM1_Start
|
||||
nop
|
||||
saveConfig
|
||||
EEprom_write
|
||||
config
|
||||
Delay_5ms
|
||||
setupSendMode
|
||||
EEprom_write
|
||||
setupUsart
|
||||
Usart_Init
|
||||
EEprom_write
|
||||
setupLightMode
|
||||
PWM2_Init
|
||||
PWM1_Init
|
||||
PWM2_Start
|
||||
PWM2_Change_Duty
|
||||
Mul_16x16_S
|
||||
PWM1_Start
|
||||
PWM1_Change_Duty
|
||||
Mul_16x16_S
|
||||
EEprom_write
|
||||
turnBacklightOn
|
||||
PWM2_Change_Duty
|
||||
Mul_16x16_S
|
||||
PWM1_Change_Duty
|
||||
Mul_16x16_S
|
||||
PWM2_Start
|
||||
PWM1_Start
|
||||
PWM2_Stop
|
||||
PWM1_Stop
|
||||
PWM2_Change_Duty
|
||||
Mul_16x16_S
|
||||
PWM1_Change_Duty
|
||||
Mul_16x16_S
|
||||
doScan
|
||||
setupLightMode
|
||||
PWM2_Init
|
||||
PWM1_Init
|
||||
PWM2_Start
|
||||
PWM2_Change_Duty
|
||||
Mul_16x16_S
|
||||
PWM1_Start
|
||||
PWM1_Change_Duty
|
||||
Mul_16x16_S
|
||||
EEprom_write
|
||||
turnBacklightOn
|
||||
PWM2_Change_Duty
|
||||
Mul_16x16_S
|
||||
PWM1_Change_Duty
|
||||
Mul_16x16_S
|
||||
PWM2_Start
|
||||
PWM1_Start
|
||||
PWM2_Stop
|
||||
PWM1_Stop
|
||||
setupUsart
|
||||
Usart_Init
|
||||
EEprom_write
|
||||
setupSendMode
|
||||
EEprom_write
|
||||
EEprom_read
|
||||
Reference in new issue
Block a user