Компьютеры

       

Программа РС.


Исходник на С примера проверяющго наличие ключа. #include

#include

#include

char SendByte(char ByteOut) { int i,j; long li; unsigned char ByteOutCpy, ByteIn = 0; ByteOutCpy = ByteOut; for (i=0; i<8; i++) { ByteIn = (ByteIn << 1) + ((inportb(0x379)&0x80)==0); outportb(0x37A,0x02|(((128&ByteOutCpy)==0))); for (li=0; li<2000l; li++); outportb(0x37A,0x00|(((128&ByteOutCpy)==0))); for (li=0; li<2000l; li++); outportb(0x37A,0x02|(((128&ByteOutCpy)==0))); ByteOutCpy = ByteOutCpy << 1; for (li=0; li<2000l; li++); } return ByteIn; }

void KeyOn(void) { int i; long li; for (i=0; i<64; i++) { outportb(0x37A,0x00); for (li=0; li<20000l; li++); outportb(0x37A,0x03); for (li=0; li<20000l; li++); } delay(100); }

void KeyOff(void) { int i; long li; for (i=0; i<128; i++) { outportb(0x37A,0x0B); for (li=0; li<2000l; li++); outportb(0x37A,0x08); for (li=0; li<2000l; li++); } }

void main() { KeyOn(); // Включение ключа. printf("%02X ",SendByte(0)); // Отправка 8 байт. printf("%02X ",SendByte(1)); printf("%02X ",SendByte(2)); printf("%02X ",SendByte(3)); printf("%02X ",SendByte(4)); printf("%02X ",SendByte(5)); printf("%02X ",SendByte(6)); printf("%02X ",SendByte(7)); printf("\n"); printf("%02X ",SendByte(7)); // Отправка следующих 8 байт и одновременное printf("%02X ",SendByte(6)); // получение байт отправленых раньше. printf("%02X ",SendByte(5)); printf("%02X ",SendByte(4)); printf("%02X ",SendByte(3)); printf("%02X ",SendByte(2)); printf("%02X ",SendByte(1)); printf("%02X ",SendByte(0)); printf("\n"); printf("%02X ",SendByte(0xF0)); // Отправка следующих 8 байт и одновременное printf("%02X ",SendByte(0xF1)); // получение байт отправленых раньше. printf("%02X ",SendByte(0xF2)); printf("%02X ",SendByte(0xF3)); printf("%02X ",SendByte(0xF4)); printf("%02X ",SendByte(0xF5)); printf("%02X ",SendByte(0xF6)); printf("%02X ",SendByte(0xF7)); printf("\n"); printf("\n"); KeyOff(); // Отключение питания ключа }



Содержание раздела