void TForm1::pause(void) { for (unsigned int x=0; x<10000; x++) {;} } void TForm1::canreg_write(unsigned char adresse, unsigned char daten) { clear_bit(0x37A,Tri) // LPT auf Ausgang schalten write_DataRegister(0x00); //Daten 0 set_bit(0x37A,ALE); // ALE = 0 clear_bit(0x37A, RD); // RD = 1 set_bit(0x37A,WR); // WR = 1 clear_bit(0x37A,ALE); // ALE = 1 pause(); write_DataRegister(adresse); pause(); set_bit(0x37A,ALE); //ALE = 0; pause(); write_DataRegister(daten); pause(); clear_bit(0x37A,WR); //WR = 0; set_bit(0x37A,WR); // WR = 1; clear_bit(0x37A,ALE); // ALE = 1 } unsigned char TForm1::canreg_read(unsigned char adresse) { clear_bit(0x37A,Tri) // LPT auf Ausgang schalten write_DataRegister(0x00); //Daten 0 set_bit(0x37A,ALE); // ALE = 0 clear_bit(0x37A, RD); // RD = 1 set_bit(0x37A,WR); // WR = 1 short daten = 0; clear_bit(0x37A,ALE); // ALE = 1 pause(); write_DataRegister(adresse); set_bit(0x37A,ALE); // ALE = 0 pause(); set_bit(0x37A,Tri) // LPT auf Eingang schalten pause(); set_bit(0x37A,RD); // RD = 0 pause(); daten = read_DataRegister(); clear_bit(0x37A,RD); // RD = 1 clear_bit(0x37A,Tri) // LPT auf Ausgang schalten return daten; } /*----Initialisierungsroutine für den CAN-Controller SJA1000------------*/ void TForm1::can_init(void) { do { canreg_write(0,0x01); } while (((canreg_read(0)) &0x01)==0); canreg_write(4,0xFF); canreg_write(5,0xFF); canreg_write(6,0x43); canreg_write(7,0x2F); canreg_write(8,0x1A); canreg_write(31,0x07); do { canreg_write(0,0x00); } while (((canreg_read(0))&0x01)==01); canreg_write(1,0x0C); }