Re: PS/2 Help me
*125kHZ Uretiyor
//Tam calisiyor
// Esson Clock u bitisde high yaptim oldu
\\Ama Her PC de Calismiyor//
// Delaylar degistii !!
// guzel calisiyor
// Kirmizi + Gri - DAta mavi clock yesil
yazan : Volkan Ugur
Hardware: Volkan ugur
*/
#include <At89x52.h>
//#include <At898252.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// PS/2 Baglantisi
#define key_clk P1_1
#define key_data P1_2
// Speaker
#define buton P0_4
#define led P0_2
#define spk P0_7
/*
#define dataout P2_3
#define clock P2_2 // NORMAL KABLO BAGLANTISI
#define select P2_1
*/
//#define buton P2_5
//#define anten P2_4
//#define role P2_3
//#define readerstandby P2_0
//#define readeroe P2_1
//#define readercfe P2_2
#define STX '$'
#define ETX '*'
void Delay(unsigned long T)
{
while (T!=0)
T--;
}
//void fullwrite_prox(char *wrst);
void init(void);
//void write_prox(unsigned char opcode,unsigned char blockadres);
void seribas(char *sbas);
void cheksumbul(char *wrst);
//unsigned int highsayac;
//unsigned int lowsayac;
//unsigned int sayac1;
//unsigned char proxdata[4];
//idata char rxdata[50];
//unsigned char rxptr;
//static bit proxlock;
unsigned char baskod;
unsigned char hamalkod;
unsigned char readsayac;
unsigned char bassayac;
unsigned int cs1;
unsigned int cs2;
unsigned int cs3;
unsigned int okusay,readsay;
unsigned char recptr,recflag,sinyal,lastrx,sum,temp,rxsum;
//idata char recbuf[50];
idata char kartdurum;
unsigned char idata facality;
unsigned int idata kodl;
static bit koddurum;
static bit readdurum;
static bit polarity;
unsigned char yazdurum;
//unsigned long timeout;
//unsigned char xdata kart[2000];
//unsigned char xdata rolesuresi;
//int count,int_rate;
//int count,tone;
//Volkan ugur
void snk(){
//11 clk bas
//5 clk low kadar data low kalacak
key_data=1;Delay(1);
key_clk=1;Delay(3);key_clk=0;Delay(3);
key_clk=1;Delay(3);key_clk=0;Delay(3);
key_clk=1;Delay(3);key_clk=0;Delay(3);
key_clk=1;Delay(3);key_clk=0;Delay(3);
key_clk=1;Delay(3);key_clk=0;Delay(1);key_data=0;Delay(1);
key_clk=1;Delay(3);key_clk=0;Delay(3);
key_clk=1;Delay(3);key_clk=0;Delay(3);
key_clk=1;Delay(3);key_clk=0;Delay(3);
key_clk=1;Delay(3);key_clk=0;Delay(3);
key_clk=1;Delay(3);key_clk=0;Delay(3);
key_clk=1;Delay(3);key_clk=0;Delay(3);
key_clk=1;
Delay(3);
}
void key1(){
snk();Delay(50); //senkronizasyon
key_data=1;Delay(1);
key_clk=1;Delay(3);key_clk=0;Delay(3);
key_clk=1;Delay(3);key_clk=0;Delay(1);key_data=0;Delay(1);
key_clk=1;Delay(3);key_clk=0;Delay(3);
key_clk=1;Delay(3);key_clk=0;Delay(1);key_data=1;Delay(1);
key_clk=1;Delay(3);key_clk=0;Delay(1);key_data=0;Delay(1);
key_clk=1;Delay(3);key_clk=0;Delay(1);key_data=1;Delay(1);
key_clk=1;Delay(3);key_clk=0;Delay(3);
key_clk=1;Delay(3);key_clk=0;Delay(3);
key_clk=1;Delay(3);key_clk=0;Delay(3);
key_clk=1;Delay(3);key_clk=0;Delay(1);key_data=0;Delay(1);
key_clk=1;Delay(3);key_clk=0;Delay(3);key_clk=1;
Delay(1);
}
/*
void key2(){
//snk();Delay(50); //senkronizasyon
key_data=0;Delay(1);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(1);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=0;Delay(1);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(1);
key_clk=1;
Delay(3);
}
void key3(){
snk();Delay(50); //senkronizasyon
key_data=0;Delay(1);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=0;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=0;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=1;
Delay(3);
}
void key4(){
snk();Delay(50); //senkronizasyon
key_data=0;Delay(1);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=0;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=0;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=0;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=1;
Delay(3);
}
void key5(){
snk();Delay(50); //senkronizasyon
key_data=0;Delay(1);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=0;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=0;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=1;
Delay(3);
}
void key6(){
snk();Delay(50); //senkronizasyon
key_data=0;Delay(1);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=0;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=0;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=1;
Delay(3);
}
void key7(){
snk();Delay(50); //senkronizasyon
key_data=0;Delay(1);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=0;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=0;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(1);
key_clk=1;
Delay(3);
}
*/
void key8(){
snk();Delay(50); //senkronizasyon
key_data=0;Delay(1);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=0;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);key_clk=1;
Delay(1);
}
/*
void key9(){
snk();Delay(50); //senkronizasyon
key_data=0;Delay(1);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=0;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=0;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=1;
Delay(3);
}
void key0(){
snk();Delay(20); //senkronizasyon
key_data=0;Delay(1);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=0;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=0;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=0;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_data=0;
Delay(3);
}
void keyEnt(){ //enter
snk();Delay(50); //senkronizasyon
key_data=0;Delay(1);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=0;Delay(4);key_clk=1;Delay(1);key_data=0;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);key_data=1;Delay(3);
key_clk=0;Delay(4);key_clk=1;Delay(4);
key_clk=1;
Delay(3);
}
*/
void ac(){
P0_3=0;
Delay(550);
P0_3=1;
Delay(550);
}
//void int_timer()
//{
//ET1=1;
//TMOD=0x10;
//TH1=0x5;
//EA=1;
//TR1=1;
//led=0;
//}
//void keytest(){
//snk();Delay(20);
//key_clk=1;Delay(6);key_clk=0;Delay(1);key_data=0;Delay(3);
//key_clk=1;Delay(4);key_clk=0;Delay(4);
//key_clk=1;Delay(4);key_clk=0;Delay(4);
//key_clk=1;Delay(4);key_clk=0;Delay(4);
//key_clk=1;Delay(4);key_clk=0;Delay(4);
//key_clk=1;Delay(4);key_clk=0;Delay(4);
//key_clk=1;Delay(4);key_clk=0;Delay(4);
//key_clk=1;Delay(4);key_clk=0;Delay(4);
//key_clk=1;Delay(4);key_clk=0;Delay(4);
//key_clk=1;Delay(4);key_clk=0;Delay(4);
//key_clk=1;Delay(4);key_clk=0;Delay(4);
//key_clk=1;
//}
void init(void){
unsigned char X;
IE=0;
IP=0;
SCON=0;
TMOD=0x01;
TH0=0;TL0=1; /* 3600 HZ TIMER */
TCON=0x10;
EA=1;EX1=1;PX1=1;IT1=1;
// EX0=0;PX0=1;IT0=1;//end opentick
X=PCON & 0x7F;
PCON=X;
TH1=0xFD;
SCON=0x52;
TMOD=(TMOD & 0x0F) | 0x20;
TR1=1;
TF1=0;
RI=0;
TI=1;
ES=1;
// lowsayac=0;
// highsayac=0;
// koddurum=0;
// baskod=0;
//polarity=0;
//readdurum=0;
//readsayac=0;
//bassayac=0;
//yazdurum=0;
//readsay=0;
//koddurum=0;
//kartdurum=0;
// EX0=0;EX1=0;
}
void serint(void) interrupt 4
{
}
//void write_prox(unsigned char opcode,unsigned char blockadres){
//}
/*
void MSDelay(unsigned char delay)
{
unsigned char i;
for(i=0;i<delay;i++)
{
}
}
*/
//void seribas(char *sbas){
//}
/*__________________________________________________________________________
Menu
__________________________________________________________________________*/
void main(void){
/*
while(1){
//int_timer();
led=1;
//125 khz Tam cikiyor
led=0;
int_rate=100;
led=0;
int_rate=10;
led=1;
led=0;
count++;
led=0;
led=1;
led=0;
*/
/*-------------------------------------------
Eeprom Yazma Okuma
---------------------------------------------*/
//----------//#
//WR= 0xb6;
//RD= 0xb7;
//----------//#
key_clk=1;
key_data=1;
ac();
buton=0;
while(buton==1){
EA=0;
key1();
Delay(100);
snk();
Delay(100);
key8();
EA=1;
}
//}
//}
//}
/*
led++;
// if (led==5000){yled=0;Delay(250);yled=1;led=0;}
timeout++;
// if (timeout==5000){yled=0;Delay(250);yled=1;timeout=0;}
// if(buton==0){role=0;yled=0;Delay(3000);yled=1;role=1;okusay=0;}
readsay++;
if (readsay==readsure){
//readercfe=0;Delay(500);readercfe=1; //5000
readsay=0;
}
if (okusay<okusaysayac)okusay++;
if ((yazdurum>0)&&(timeout<30000))timeout++;
if (timeout==30000){
readdurum=0;
readsayac=0;
polarity=0;
koddurum=0;
EA=1;EX1=1;
timeout=0;
}
if (rxptr==12){cheksumbul(rxdata);
if ((cs1==(rxdata[8]-48)*10+(rxdata[9]-48))
&&(cs2==(rxdata[10]-48)*10+(rxdata[11]-48))){
EX1=0;
timeout=0;
if ((okusay<okusaysayac)&&(yazdurum==0))okusay=0;
if (okusay==okusaysayac){
okusay=0;
// magneticsprite();
key_bas();
facality=(rxdata[0]-48)*100+(rxdata[1]-48)*10+(rxdata[2]-48);
if ((facality>100)&&(facality<199)){
magneticsprite();
}
// if ((facality>100)&&(facality<131)){magneticsprite();}
}
}
kled=0;
rxptr=0;
bassayac=0;
baskod=0;
hamalkod=0;
readdurum=0;
readsayac=0;
polarity=0;
koddurum=0;
EA=1;EX1=1;
}
}
}
}
*/
}