📄 zav_jki1_6x4.i
字号:
sfrb UBRR1 = 0x00;
sfrb UCSR1B = 0x01;
sfrb UCSR1A = 0x02;
sfrb UDR1 = 0x03;
sfrb PINE = 0x05;
sfrb DDRE = 0x06;
sfrb PORTE = 0x07;
sfrb ACSR = 0x08;
sfrb UBRR0 = 0x09;
sfrb UCSR0B = 0x0A;
sfrb UCSR0A = 0x0B;
sfrb UDR0 = 0x0C;
sfrb SPCR = 0x0D;
sfrb SPSR = 0x0E;
sfrb SPDR = 0x0F;
sfrb PIND = 0x10;
sfrb DDRD = 0x11;
sfrb PORTD = 0x12;
sfrb PINC = 0x13;
sfrb DDRC = 0x14;
sfrb PORTC = 0x15;
sfrb PINB = 0x16;
sfrb DDRB = 0x17;
sfrb PORTB = 0x18;
sfrb PINA = 0x19;
sfrb DDRA = 0x1A;
sfrb PORTA = 0x1B;
sfrb EECR = 0x1C;
sfrb EEDR = 0x1D;
sfrw EEAR = 0x1E;
sfrb EEARL = 0x1E;
sfrb EEARH = 0x1F;
sfrb UBRRHI = 0x20;
sfrb WDTCR = 0x21;
sfrb OCR2 = 0x22;
sfrb TCNT2 = 0x23;
sfrw ICR1 = 0x24;
sfrb ICR1L = 0x24;
sfrb ICR1H = 0x25;
sfrb ASSR = 0x26;
sfrb TCCR2 = 0x27;
sfrw OCR1B = 0x28;
sfrb OCR1BL = 0x28;
sfrb OCR1BH = 0x29;
sfrw OCR1A = 0x2A;
sfrb OCR1AL = 0x2A;
sfrb OCR1AH = 0x2B;
sfrw TCNT1 = 0x2C;
sfrb TCNT1L = 0x2C;
sfrb TCNT1H = 0x2D;
sfrb TCCR1B = 0x2E;
sfrb TCCR1A = 0x2F;
sfrb SFIOR = 0x30;
sfrb OSCCAL = 0x31;
sfrb TCNT0 = 0x32;
sfrb TCCR0 = 0x33;
sfrb MCUSR = 0x34;
sfrb MCUCR = 0x35;
sfrb EMCUCR = 0x36;
sfrb SPMCR = 0x37;
sfrb TIFR = 0x38;
sfrb TIMSK = 0x39;
sfrb GIFR = 0x3A;
sfrb GIMSK = 0x3B;
sfrw SP = 0x3D;
sfrb SPL = 0x3D;
sfrb SPH = 0x3E;
sfrb SREG = 0x3F;
void _SEI(void);
void _CLI(void);
void _NOP(void);
void _SLEEP(void);
unsigned char _LPM(unsigned short val);
unsigned char _ELPM(unsigned long val);
void _WDR(void);
void _OPC(unsigned short op);
extern unsigned int flagi;
enum {koeff1, koeff2, koeff3, time_zasl, time_test, time_puskat,
time_osv_zagr,time_mixer, time_zvuk_pred, time_zvuk_alarm, time_clr_razgr, time_dosipan,
delta_tara,rezerv1,rezerv2,rezerv3,ccr,
zad_ves, tara, ves_old, ves_delta,count_tek_comp,
kan1, kan2,kan3,tek_ves, tek_ves_old};
enum {rej0,rej1,start,statist,slujeb_const,slujeb_var,error_crc};
void PUT_PAGE(void);
void obr_knopok(void);
void opr_knopok(void);
void acp_on_CH(unsigned char);
void delay(int ticks);
void out_acp(void);
void gotoz(unsigned char z);
void initgraph(void);
void sprint_long(long int var);
void sprint_int(unsigned int var);
void outtext(char* text);
void SUMMA_PROC(void);
void page_work(void);
void page_statstika(void);
void page_reji(void);
void page_slujebniy(void);
void page_edit_procent(void);
void ptchar(char c);
void RASCHET_PROCENT_MASSA_ZAD_VES(void);
void RASCHET_NAMBER_VAR(void);
void KORREKT_VAR(void);
void save_eeprom(void);
unsigned char coder(unsigned char data);
void page_sluj_const(void);
void eerd_all (void);
void eewr_all (void);
void CIKL (void);
void RASCHET_PROCENT_MASSA_ZAD_VES(void);
void EECLR ( void);
void SRAMCLR ( void);
void ves (void);
void zvonok_alarm(void);
void rejim1(void);
void START_PART(void);
void stop (void);
void test_mex_vkl (void);
void test_mex_otkl (void);
void SUMM_STAT_KOMP(void);
void SUMM_STAT_KOMP_CLR(void);
void simulator(void);
void eewr_zad_part(void);
void clrscr(void);
void clr_tek_mass(void);
int test_rost_razgr(void);
void lcd_send(unsigned char data);
char rcom_byte(char Add);
void vich_delta(void);
extern unsigned char buf_dec[8];
extern unsigned int outacp;
extern unsigned char buff_disp[16];
extern int adr_start;
extern unsigned char key;
extern int izm_ves;
extern unsigned char count_shag;
extern unsigned int adr_const;
extern unsigned char namber_rej;
extern unsigned int temp_int;
unsigned char namber_mex;
char namber_var;
unsigned char namber_str;
unsigned char addr_str_sluj;
unsigned char namber_str_work;
unsigned char addr_str;
unsigned char namber_str_stat;
unsigned int flagi;
unsigned char kursor;
unsigned char kursor_rej;
unsigned char kursor_sluj;
unsigned char kursor_sl_const;
unsigned char a;
unsigned int i;
unsigned int zvuktime;
unsigned int zvuk_puls;
unsigned int time_sek1;
unsigned int time_wait;
unsigned int time_ind;
unsigned int time_test_rost;
unsigned int wait_press;
unsigned int temp_acp;
unsigned int temp1;
unsigned int ccr_wr;
unsigned int ccr_rd;
unsigned char time_tst;
long int add_summ_comp;
unsigned char time_simul;
unsigned char count_comp;
unsigned char count_izm;
unsigned char count_kan;
long int zad_part;
long int tek_part;
struct {int procent, massa, tek_massa,delta;}KOMPONENT[6];
unsigned int stat_komp[6];
unsigned int n[tek_ves_old+1];
char e;
unsigned int filtr1;
unsigned int filtr2;
unsigned int filtr3;
unsigned int filtr4;
void simulator(void){
if((!((PORTA & 0xFF)==0xFF)) || time_tst!=0 ){
if (time_tst) time_tst--;
izm_ves=izm_ves+1;
}
if ( (flagi & 0x0100 ) ){
izm_ves=izm_ves-2;
if(izm_ves<10) izm_ves=10;
}
}
void eewr_all (void){
char *ptr1= (char*)&n[0];
char i,a;
n[ccr]=0;
for(i=0;i<ccr;i++) n[ccr]=n[ccr]+n[i];
n[ccr]=0x55-n[ccr];
for(i=0;i<(tek_ves_old+1)*2;i++) {while (EECR & 0x02); EEAR = ( i ); EEDR = ( *ptr1++ ); EECR = 0x04; EECR = 0x02;} ;
ptr1=(char*)&zad_part;
for(a=i+4;i<a;i++) {while (EECR & 0x02); EEAR = ( i ); EEDR = ( *ptr1++ ); EECR = 0x04; EECR = 0x02;} ;
ptr1=(char*)&KOMPONENT[0];
for(a=i+sizeof(KOMPONENT);i<a;i++) {while (EECR & 0x02); EEAR = ( i ); EEDR = ( *ptr1++ ); EECR = 0x04; EECR = 0x02;} ;
ptr1=(char*)&stat_komp[0];
for(a=i+sizeof(stat_komp);i<a;i++) {while (EECR & 0x02); EEAR = ( i ); EEDR = ( *ptr1++ ); EECR = 0x04; EECR = 0x02;} ;
if(namber_rej == error_crc) namber_rej=rej0;
}
void eerd_all (void){
char *ptr1=(char*)&n[0];
char i=0;
char b=0;
int a=0;
for(i=0;i<(tek_ves_old+1)*2;i++) {while (EECR & 0x02); EEAR = ( i ); EECR = 0x01; ( *ptr1++ ) = EEDR;} ;
ptr1=(char*)&zad_part;
for(a=i+4;i<a;i++) {while (EECR & 0x02); EEAR = ( i ); EECR = 0x01; ( *ptr1++ ) = EEDR;} ;
for(b=0,a=0;b<=ccr;b++) a=a+n[b];
if(a!=0x55){
namber_rej = error_crc;
for(i=0;i<tek_ves_old;i++) n[i]=0;
ptr1=(char*)&KOMPONENT[0];
for(a=i+sizeof(KOMPONENT);i<a;i++) *ptr1++=0;
ptr1=(char*)&stat_komp[0];
for(a=i+sizeof(stat_komp);i<a;i++) *ptr1++=0;
ptr1=(char*)&zad_part;
for(a=i+4;i<a;i++) *ptr1++=0;
}
else{
if(zad_part>99999L || zad_part<0) zad_part=0;
ptr1=(char*)&KOMPONENT[0];
for(a=i+sizeof(KOMPONENT);i<a;i++) {while (EECR & 0x02); EEAR = ( i ); EECR = 0x01; ( *ptr1++ ) = EEDR;} ;
ptr1=(char*)&stat_komp[0];
for(a=i+sizeof(stat_komp);i<a;i++) {while (EECR & 0x02); EEAR = ( i ); EECR = 0x01; ( *ptr1++ ) = EEDR;} ;
}
}
void eeprom_clr (void){
char i;
char *ptr=0;
for(i=0;i<52;i++) *ptr++=0;
}
interrupt [ (0x2C) ]
void TIMER0_OVF_interrupt(void){
if (flagi & 0x0002 ) {
(( DDRB )|= (1<<( 6 )) ) ;
(( DDRD )&=~ (1<<( 5 )) ) ;
acp_on_CH(count_kan);
out_acp();
if (count_izm<0x10){
temp_acp=temp_acp+outacp;
count_izm++;
}
else{
temp_acp=temp_acp/16;
count_izm=0;
n[kan1+count_kan]=temp_acp;
if(n[rezerv1]){
if ( (flagi & 0x0001 ) ) simulator();
}
temp_acp=0;
if(++count_kan>2) count_kan=0;
(flagi &=~ 0x0002 ) ;
}
(( DDRD )|= (1<<( 5 )) ) ;
(( DDRB )&=~ (1<<( 6 )) ) ;
}
if (!time_sek1){
if (time_wait) time_wait--;
if (time_simul) time_simul--;
if (time_ind) time_ind--;
if (time_test_rost) time_test_rost--;
if (zvuktime) zvuktime--;
if (zvuk_puls) zvuk_puls--;
time_sek1= 1000 ;
}
else time_sek1--;
if (wait_press) wait_press--;
if (time_simul) time_simul--;
TCNT0=0x70;
}
void test_mex_vkl (void){
DDRA=0xff;
DDRC=0xff;
DDRE=0x05;
switch (namber_mex){
case 0: (PORTA &= ~ 0x40 ) ;
break;
case 1: (PORTA &= ~ 0x10 ) ;
break;
case 2: (PORTA &= ~ 0x04 ) ;
break;
case 3: (PORTA &= ~ 0x01 ) ;
break;
case 4: (PORTA &= ~ 0x02 ) ;
break;
case 5: (PORTA &= ~ 0x08 ) ;
break;
case 6: (PORTA &= ~ 0x20 ) ;
break;
case 7: (PORTA &= ~ 0x80 ) ;
break;
case 8: (PORTC &= ~ 0x40 ) ;
break;
case 9: (PORTC &= ~ 0x10 ) ;
break;
case 10: (PORTC &= ~ 0x08 ) ;
break;
case 11: (PORTC &= ~ 0x02 ) ;
break;
case 12: (PORTC &= ~ 0x01 ) ;
break;
case 13: (PORTC &= ~ 0x04 ) ;
break;
case 14: (PORTC &= ~ 0x20 ) ;
break;
case 15: (PORTC &= ~ 0x80 ) ;
break;
case 16: (PORTE &= ~ 0x04 ) ;
break;
case 17: (PORTE &= ~ 0x01 ) ;
break;
}
}
void test_mex_otkl (void){
DDRA=0xff;
DDRC=0xff;
DDRE=0x05;
switch (namber_mex){
case 0: (PORTA |= 0x40 ) ;
break;
case 1: (PORTA |= 0x10 ) ;
break;
case 2: (PORTA |= 0x04 ) ;
break;
case 3: (PORTA |= 0x01 ) ;
break;
case 4: (PORTA |= 0x02 ) ;
break;
case 5: (PORTA |= 0x08 ) ;
break;
case 6: (PORTA |= 0x20 ) ;
break;
case 7: (PORTA |= 0x80 ) ;
break;
case 8: (PORTC |= 0x40 ) ;
break;
case 9: (PORTC |= 0x10 ) ;
break;
case 10: (PORTC|= 0x08 ) ;
break;
case 11: (PORTC |= 0x02 ) ;
break;
case 12: (PORTC |= 0x01 ) ;
break;
case 13: (PORTC |= 0x04 ) ;
break;
case 14: (PORTC |= 0x20 ) ;
break;
case 15: (PORTC |= 0x80 ) ;
break;
case 16: (PORTE |= 0x04 ) ;
break;
case 17: (PORTE |= 0x01 ) ;
break;
}
}
void main(void){
DDRA=0xFF;
DDRC=0xFF;
DDRE=0x05;
DDRD=0xFF;
DDRB=0x0E;
PORTA=0xFF;
PORTC=0xFF;
PORTE=0x05;
(( PORTE )|= (1<<( 1 )) ) ;
(( PORTB )|= (1<<( 7 )) ) ;
(( PORTB )|= (1<<( 1 )) ) ;
(( PORTB )|= (1<<( 2 )) ) ;
(( PORTB )|= (1<<( 3 )) ) ;
TCNT0=0x70;
TCCR0=3;
count_kan=0;
eerd_all ();
clr_tek_mass();
n[tek_ves]=0;
addr_str= 0xC0 ;
addr_str_sluj= 0x80 ;
kursor_rej=9;
kursor=kursor_sluj=2;
gotoz(addr_str+kursor);
(flagi |= 0x0004 ) ;
adr_start=80;
n[count_tek_comp]=0;
n[ves_delta]=5;
RASCHET_PROCENT_MASSA_ZAD_VES();
SUMM_STAT_KOMP();
initgraph();
initgraph();
initgraph();
initgraph();
initgraph();
initgraph();
initgraph();
TIMSK = 0x01;
SREG = 0x80;
(flagi &=~ 0x0002 ) ;
izm_ves=n[rezerv1];
for(;;){
zvonok_alarm();
if ( (( PINB ) & (1<<( 7 )) ) || ! (( PINE ) & (1<<( 1 )) ) ) stop ();
if(! (( PINE ) & (1<<( 1 )) ) ) (flagi |= 0x0200 ) ;
else {
if( (flagi & 0x0200 ) ){
n[tara]=n[tek_ves];
(flagi &=~ 0x0200 ) ;
}
}
if ( (!(flagi & 0x0002 )) ){
if ( (flagi & 0x0001 ) ) CIKL();
if (time_ind==0){
PUT_PAGE();
time_ind=1;
}
obr_knopok();
(flagi |= 0x0002 ) ;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -