void Ind19U6(void) { const unsigned char R2[]="ÊØÓ 19Ó6"; unsigned int R0; unsigned char R1; unsigned char R3; SetCursor(0,0); for(R1=0;R1<=3;++R1) { R0=500; while(R0--) _WDR(); SPDR=0x20; } for(R1=0;R1<=7;++R1) { R0=500; while(R0--) _WDR(); R3=R2[R1]; if(R3>=192) R3=R3-64; SPDR=R3; } for(R1=0;R1<=3;++R1) { R0=500; while(R0--) _WDR(); SPDR=0x20; } }
void ClearInd(void) { while(!(UCSRA & 0x20))//!RegInd) _WDR(); UDR=0xc; }
void delay(uint16_t n) { while(n--) { _WDR(); _delay_us(1000); } }
int main(void) { uint16_t cnt=0; uint8_t c,div; DDRA = 0; PORTA = 0xff; DDRB = (1 << 4); //TXD DDRC = 0xff; PORTC = 0; DDRD = 0xfe; USART_Init(8); // 115.2K ADCSRA = 0x87; // init ADC // TCCR0 = 1; // TIMSK = 1; // sei(); for( ; ; ) { _WDR(); if(USART_Ready()) { c = USART_Receive(STD_TIMEOUT); switch(c) { case 'g': div = rhex(); if(USART_Timeout()) break; ADCSRA = 0x80 | div; div = rhex(); if(USART_Timeout()) break; PORTC = div; // gain get_wave(); send_wave(); break; case 'q': div = rhex(); if(USART_Timeout()) break; ADCSRA = 0x80 | div; div = rhex(); if(USART_Timeout()) break; PORTC = div; // gain div = rhex(); // ch if(USART_Timeout()) break; get_sync_wave(div); send_wave(); break; default:; } } if(++cnt > 1000) { PORTB = PINB ^ (1<<4); // blink cnt = 0; } } return 0; }
void IndPar(void) { unsigned int R0; R0=400; while(R0--) _WDR(); SPDR=IndData[3]+0x30; R0=400; while(R0--) _WDR(); SPDR=IndData[2]+0x30; R0=400; while(R0--) _WDR(); SPDR=IndData[1]+0x30; R0=400; while(R0--) _WDR(); SPDR=IndData[0]+0x30; }
void TransmitInd(unsigned char R1) { unsigned int R10; if(R1>=192) R1=R1-64; R10=500; while(R10--) _WDR(); SPDR=R1; }
void TransmitInd(unsigned char R1) { unsigned int R0; R0=400; if(R1>=192) R1=R1-64; while(R0--) _WDR(); SPDR=R1; }
void TransmitInd(unsigned char R1) { if(R1>=192) R1=R1-64; while(!(UCSRA & 0x20)) _WDR(); UDR=R1; }
void TransmitUsart(unsigned char R0) { unsigned char R1; for(R1=0;R1<=R0;++R1) { while(!(UCSRA & 0x20)) _WDR(); UDR=RegTransmitUsart[R1]; } }
void SetSize(unsigned char R2,unsigned char R1) { unsigned int R0; R0 = 400; while(R0--) _WDR(); SPDR = 0x1f; R0 = 400; while(R0--) _WDR(); SPDR = 0x28; R0 = 400; while(R0--) _WDR(); SPDR = 0x67; R0 = 400; while(R0--) _WDR(); SPDR = 0x40; R0 = 400; while(R0--) _WDR(); SPDR = R2; R0 = 400; while(R0--) _WDR(); SPDR = R1; }
void IndicatorTest(void) { unsigned char R1; unsigned int R0; SetCursor(0,0); for(R1=1;R1<=5;++R1) { HexDec(RomReceive[R1]); R0=500; while(R0--) _WDR(); SPDR=Data10[0]; R0=500; while(R0--) _WDR(); SPDR=Data10[1]; R0=500; while(R0--) _WDR(); SPDR=Data10[2]; } SetCursor(0,1); for(R1=6;R1<=10;++R1) { HexDec(RomReceive[R1]); R0=500; while(R0--) _WDR(); SPDR=Data10[0]; R0=500; while(R0--) _WDR(); SPDR=Data10[1]; R0=500; while(R0--) _WDR(); SPDR=Data10[2]; } }
/* void ClearCursor(void) { unsigned int R0; R0=300; while(R0--) _WDR(); SPDR=0xb; }*/ void SetCursor(unsigned char R2,unsigned char R1) { unsigned int R0; R0=300; while(R0--) _WDR(); SPDR=0x1f; R0=300; while(R0--) _WDR(); SPDR=0x24; R0=300; while(R0--) _WDR(); SPDR=R2; R0=300; while(R0--) _WDR(); SPDR=0; R0=300; while(R0--) _WDR(); SPDR=R1; R0=300; while(R0--) _WDR(); SPDR=0; }
void InitUSART(void) { UCSRA=0;//двойная скорость UCSRB=0x1c;//enable transmit,receive,8bit UCSRC=0x86;//0x24 7 bit control parity UBRRH=0; UBRRL=103;//9600 while(!(UCSRA & 0x20)) _WDR(); UCSRB |=0x80;//Interrupt Receive enable }
void InitIndStart(void) { unsigned long R0; PORTB &=0xfe; R0=780000; while(R0--) _WDR(); PORTB |=0x1; R0=5000; while(R0--) _WDR(); SPDR=0x1b; R0=5000; while(R0--) _WDR(); SPDR=0x74; R0=5000; while(R0--) _WDR(); SPDR=17;//Kirilica R0=5000; while(R0--) _WDR(); SPDR=0xc;//clear ind }
void InitInd(void) { unsigned int R0; PORTB &=0xfe; R0=65; while(R0--) _WDR(); PORTB |=0x1; R0=3000; while(R0--) _WDR(); SPDR=0x1b; R0=1500; while(R0--) _WDR(); SPDR=0x74; R0=100; while(R0--) _WDR(); SPDR=17;//Kirilica R0=100; while(R0--) _WDR(); SPDR=0xc;//clear ind }
//21 void IndOtkazDT(void) { unsigned int R0; unsigned char R1; unsigned char R3; SetCursor(0,0); for(R1=0;R1<=15;++R1) { R0=500; while(R0--) _WDR(); R3=pgm_read_byte_near(&OtkazDT[R1]); if(R3>=192) R3=R3-64; SPDR=R3; } }
unsigned char WaitTWCR(void) { while(!(TWCR & 0x80)) { _WDR(); if(CtTWCR) --CtTWCR; else { CtTWCR=CtTWCR0; return 0; } } CtTWCR=CtTWCR0; return 1; }
//7 void IndNoPusk(void) { const unsigned char R2[]=" HET осяйю "; unsigned int R0; unsigned char R1; unsigned char R3; SetCursor(0,0); for(R1=0;R1<=15;++R1) { R0=500; while(R0--) _WDR(); R3=R2[R1]; if(R3>=192) R3=R3-64; SPDR=R3; } }
//9 void IndRegimMSHU(void) { const unsigned char R2[]=" ÐÅÆÈÌ ÌÙÓ "; unsigned int R0; unsigned char R1; unsigned char R3; SetCursor(0,0); for(R1=0;R1<=15;++R1) { R0=500; while(R0--) _WDR(); R3=R2[R1]; if(R3>=192) R3=R3-64; SPDR=R3; } }
//8 void IndOtkazSHSN(void) { const unsigned char R2[]=" OTKA3 ØÑÍ "; unsigned int R0; unsigned char R1; unsigned char R3; SetCursor(0,0); for(R1=0;R1<=15;++R1) { R0=500; while(R0--) _WDR(); R3=R2[R1]; if(R3>=192) R3=R3-64; SPDR=R3; } }
//3 void IndGotovDU(void) { const unsigned char R2[]=" ÃÎÒÎÂÍÎÑÒÜ ÄÓ "; unsigned int R0; unsigned char R1; unsigned char R3; SetCursor(0,0); for(R1=0;R1<=15;++R1) { R0=500; while(R0--)_WDR(); R3=R2[R1]; if(R3>=192) R3=R3-64; SPDR=R3; } }
//9 void IndNoOborotov(void) { const unsigned char R2[]=" мер нанпнрнб "; unsigned int R0; unsigned char R1; unsigned char R3; SetCursor(0,0); for(R1=0;R1<=15;++R1) { R0=500; while(R0--) _WDR(); R3=R2[R1]; if(R3>=192) R3=R3-64; SPDR=R3; } }
//10 void IndNoVozb(void) { const unsigned char R2[]="мер бнгасфдемхъ "; unsigned int R0; unsigned char R1; unsigned char R3; SetCursor(0,0); for(R1=0;R1<=15;++R1) { R0=500; while(R0--) _WDR(); R3=R2[R1]; if(R3>=192) R3=R3-64; SPDR=R3; } }
//12 void IndPeregruzKG(void) { const unsigned char R2[]=" оепецпсгйю бц "; unsigned int R0; unsigned char R1; unsigned char R3; SetCursor(0,0); for(R1=0;R1<=15;++R1) { R0=500; while(R0--) _WDR(); R3=R2[R1]; if(R3>=192) R3=R3-64; SPDR=R3; } }
//21 void IndUKorpus(void) { const unsigned char R2[]=" U мю йнпосяе "; unsigned int R0; unsigned char R1; unsigned char R3; SetCursor(0,0); for(R1=0;R1<=15;++R1) { R0=500; while(R0--) _WDR(); R3=R2[R1]; if(R3>=192) R3=R3-64; SPDR=R3; } }
//23 void IndErrorSet(void) { const unsigned char R2[]=" яерэ ме мнплю "; unsigned int R0; unsigned char R1; unsigned char R3; SetCursor(0,0); for(R1=0;R1<=15;++R1) { R0=500; while(R0--) _WDR(); R3=R2[R1]; if(R3>=192) R3=R3-64; SPDR=R3; } }
//26 void IndDozapravkaMasla(void) { const unsigned char R2[]="днгюопюбйю люякю "; unsigned int R0; unsigned char R1; unsigned char R3; SetCursor(0,0); for(R1=0;R1<=15;++R1) { R0=500; while(R0--) _WDR(); R3=R2[R1]; if(R3>=192) R3=R3-64; SPDR=R3; } }
void TransmitUsart(void) { volatile unsigned char R0; PORTB |=0x4;//Out Transmit=on R0=100; while(R0) --R0; while(!(UCSRA & 0x20)) _WDR(); R0=NumberBlok;//LinkRS; UCSRA |=1;//Receive only 9 bit=1 UCSRB |=1;//9 bit=1 UDR=R0;//LinkRS; ControlTransmitRS =NumberBlok; }
//8 void IndNoLinkMSHU(void) { const unsigned char R2[]="мер ябъгх я лыс "; unsigned int R0; unsigned char R1; unsigned char R3; SetCursor(0,0); for(R1=0; R1<=15; ++R1) { R0=500; while(R0--) _WDR(); R3=R2[R1]; if(R3>=192) R3=R3-64; SPDR=R3; } }
unsigned char WaitTWCR(void) { while(!(TWCR & 0x80)) { if(CtTWCR) { --CtTWCR; _WDR(); } else { CtTWCR=CtTWCR0; return 0;//error } } CtTWCR=CtTWCR0; return 1; }