#include <90s2313.h> #include #define CSN PORTB.2 //Chip Select #define SDA PORTB.0 //Datenport #define SCL PORTB.1 //Clock Leitung void send_dez(unsigned char dez); void send_stv (unsigned char byte_h,unsigned char byte_l); flash unsigned char boardcomputer[14]={0x0d,0x38,0x2a,0x3b,0x2d,0x0a,0x0e,0x38,0x36,0x39,0x3e,0x3d,0x2e,0x3b}; flash unsigned char engine[6]={0x10,0x19,0x12,0x14,0x19,0x10}; flash unsigned char kmh[4]={0x16,0x18,0x28,0x31}; flash unsigned char upm[3]={0x3e,0x39,0x36}; flash unsigned char oil[7]={0x1a,0x32,0x35,0x1f,0x2e,0x36,0x39}; flash unsigned char water[9]={0x22,0x2a,0x3d,0x2e,0x3b,0x1f,0x2e,0x36,0x39}; flash unsigned char turbo[5]={0x1f,0x20,0x1d,0x0d,0x1a}; flash unsigned char airin[5]={0x0c,0x32,0x3b,0x14,0x37}; flash unsigned char airout[6]={0x0c,0x32,0x3b,0x1a,0x3e,0x3d}; flash unsigned char bar[8]={0x1b,0x3b,0x2e,0x3c,0x3c,0x3e,0x3b,0x2e}; unsigned char i=0; void main(void) { delay_ms(2000); // Declare your local variables here // Input/Output Ports initialization // Port B initialization // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T PORTB=0xff; DDRB=0xff; // Port D initialization // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In // State0=T State1=T State2=T State3=T State4=T State5=T State6=T PORTD=0x00; DDRD=0x00; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped TCCR0=0x00; TCNT0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1 output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; OCR1H=0x00; OCR1L=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off GIMSK=0x00; MCUCR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off // Analog Comparator Output: Off ACSR=0x80; //STV Reset Muss bei jeden einschalten gesendet werden send_stv(0x30,0x00); send_stv(0x30,0x00); send_stv(0x00,0xdb); send_stv(0x10,0x00); //Konfig send_stv(0x00,0xcf); send_stv(0x10,0x4e); send_stv(0x00,0xd0); send_stv(0x15,0x32); send_stv(0x00,0xcd); send_stv(0x12,0x01); send_stv(0x00,0xce); send_stv(0x1b,0x95); //Warum auch immer? send_stv(0x00,0x00); //Zeichne löschen! for (i = 0; i < 154; i ++) // 154mal wiederholen Alle Zeichen im Speicher löschen {send_stv(0x10,0x0b);send_stv(0x10,0x0b);} while(1) { send_stv(0x00,0x00); send_stv(5,0); //Diese Zahl bestimmt die Far send_stv(0x00,0x08); //Zeile5 Spalte0 for (i=0;i<14;i++) {send_stv(0x10,boardcomputer[i]);} //board-computer send_stv(4,0); //Zeile5 Spalte0 for (i=0;i<6;i++) {send_stv(0x10,engine[i]);} //engine send_stv(2,0); //Zeile5 Spalte0 for (i=0;i<4;i++) {send_stv(0x10,kmh[i]);} //kmh send_dez(3); send_stv(2,20); //Zeile5 Spalte0 for (i=0;i<3;i++) {send_stv(0x10,upm[i]);} //upm send_dez(4); send_stv(5,0); //Zeile5 Spalte0 for (i=0;i<7;i++) {send_stv(0x10,oil[i]);} //oil temp send_dez(2); send_stv(5,16); //Zeile5 Spalte0 for (i=0;i<9;i++) {send_stv(0x10,water[i]);} //water temp send_dez(2); send_stv(7,0); //Zeile5 Spalte0 for (i=0;i<5;i++) {send_stv(0x10,turbo[i]);} //turbo send_stv(8,0); //Zeile5 Spalte0 for (i=0;i<5;i++) {send_stv(0x10,airin[i]);} //air in send_dez(2); send_stv(8,19); //Zeile5 Spalte0 for (i=0;i<6;i++) {send_stv(0x10,airout[i]);} //air out send_dez(2); send_stv(9,0); //Zeile5 Spalte0 for (i=0;i<8;i++) {send_stv(0x10,bar[i]);} //pressure send_dez(1); send_stv(10,27); send_stv(0x10,0x7a); send_stv(10,0); send_stv(0x10,0x7b); send_stv(10,13); send_stv(0x10,0x6c); delay_ms(5000); send_stv(0x00,0x00); //Alles löschen! for (i = 0; i < 154; i ++) // 154mal wiederholen Alle Zeichen im Speicher löschen {send_stv(0x10,0x0b);send_stv(0x10,0x0b);} } } void send_dez(unsigned char dez) { send_stv(0x10,0x0b); for (i=0;i>iic_counter))>0) SDA=1; else SDA=0; SCL=0;delay_us(10);SCL=1;delay_us(10); iic_counter++;} //Low Byte Senden iic_counter=0x00; while (iic_counter <8) {if ((byte_l&(0x80>>iic_counter))>0) SDA=1; else SDA=0; SCL=0;delay_us(10);SCL=1;delay_us(10); iic_counter++;} CSN=1;delay_us(10);//CS 1 ist standby }