Пн авг 07, 2017 14:43:19
Пн авг 07, 2017 16:19:52
Пт сен 08, 2017 11:16:30
#include "main.h"
#include "kb.h"
unsigned char readbuff[64] absolute 0x500;
unsigned char writebuff[64] absolute 0x540;
unsigned char modifier=0b00000000;
unsigned char reserved=0;
unsigned char keycode[6];
unsigned char progPass[17] = {0};
void interrupt(){
USB_Interrupt_Proc(); // USB servicing is done inside the interrupt
PS2_interrupt(); //Ïðåðûâàíèå ïî INT0 ïðè ïîñòóïëåíèè äàííûõ ñ PS2
}
void interrupt_low(){
PS2_Timeout_Interrupt(); //Ïðåðûâàíèå ïî timer0 ÷åðåç 1ìñ â ñëó÷àå îøèáî÷íûõ äàííûõ ïî PS2
}
void Led_Indicate(unsigned char blink){
unsigned char i;
for(i=0; i<=blink; i++){
LED_PIN = ~LED_PIN;
delay_ms(100);
}
LED_PIN = 0;
}
unsigned char ArrCmp(unsigned char * arr1, unsigned char * arr2, unsigned char pos, unsigned char ln){
unsigned char i;
for (i=0; i<ln; i++){
if(arr1[i+pos] != arr2[i]) return 0;
}
return 1;
}
void main(){
unsigned char i;
INTCON = 0;
//Initialize ports
ADCON1 = 0x0F; // Configure all PORT pins as digital
//----------
TRISA= 0b00010000;
TRISB= 0b00000011;
TRISC= 0b10111000;
//Initialize periferal
init_kb();
HID_Enable(readbuff,writebuff);
UART1_Init(9600); // Initialize hardware UART1 and establish communication at 9600 bps
delay_ms(100);
INTCON2.RBPU = 0; //Âêëó÷èòü ïîäòÿæêó
//OK indicator
Led_Indicate(2);
PWR12 = 1;
INTCON |= (1<<GIE)|(1<<PEIE);
//Main cycle
while(1) {
if(button(&PORTC, RC7, 200, 0)){
LED_PIN = 1;
PWR5 = 1;
VIDEO_PIN = 1;
delay_ms(300);
LED_PIN = 0;
}
if(keycode[0] == 0x45){
uart_write(30);
}
if(ArrCmp(&progPass, &progStr, 0, 16)){
switch(progPass[16]){
case 0x1E: UART1_Write(201); break;
case 0x1F: UART1_Write(202); break;
case 0x20: UART1_Write(203); break;
case 0x21: UART1_Write(204); break;
default: break;
}
progPass[0] = 0;
}else if(ArrCmp(&progPass, &delStr, 8, 8)){
switch(progPass[16]){
case 0x1E: UART1_Write(205); break;
case 0x1F: UART1_Write(206); break;
case 0x20: UART1_Write(207); break;
case 0x21: UART1_Write(208); break;
case 0x22: UART1_Write(209); break;
default: break;
}
progPass[8] = 0;
}
//////////////////////////////////////////////////////////////
//----------
//USB
writebuff[0]=modifier;
writebuff[1]=reserved;
writebuff[2]=keycode[0];
writebuff[3]=keycode[1];
writebuff[4]=keycode[2];
writebuff[5]=keycode[3];
writebuff[6]=keycode[4];
writebuff[7]=keycode[5];
while(!HID_Write(writebuff,8));
delay_ms(30);
}
HID_Disable();
}
Пт сен 08, 2017 15:10:33
Пт сен 08, 2017 16:53:13
Сб сен 09, 2017 21:03:22
Вс сен 17, 2017 12:38:37
struct {
volatile unsigned char seconds : 1 ;
volatile unsigned char frame : 1 ;
volatile unsigned char update : 1 ;
} flag;
GLOBAL _flag
...
BSF _flag, 2
Вс сен 17, 2017 13:12:28
Вс сен 17, 2017 13:18:45
Вс сен 17, 2017 13:37:53
Вс сен 17, 2017 15:10:09
#define SecondsOffset 0 // этих как нибудь ;-)
#define FrameOffset 1 // синхронизируем
#define UpdateOffset 2 // с ASM заголовком
#define SecondsMask (1 << SecondsOffset)
#define FrameMask (1 << FrameOffset)
#define UpdateMask (1 << UpdateOffset)
[...]
flags |= UpdateMask;
[...]
if (UpdateMask == (UpdateMask & flags))
flags &= ~UpdateMask;
Вс сен 17, 2017 15:20:25
Вс сен 17, 2017 16:18:38
Чт ноя 02, 2017 15:24:54
Ср ноя 29, 2017 11:25:36
Ср ноя 29, 2017 11:56:20
Чт ноя 30, 2017 07:49:24
Чт ноя 30, 2017 16:08:35
Чт ноя 30, 2017 17:34:59
Пт дек 01, 2017 11:45:59