📄 obr_kay.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);
unsigned char namber_rej;
extern unsigned char namber_str_stat;
extern unsigned char namber_str;
extern unsigned char addr_str;
extern unsigned char addr_str_sluj;
extern unsigned char kursor;
extern unsigned char kursor_rej;
extern unsigned char kursor_sl_const;
extern unsigned char kursor_sluj;
extern char namber_var;
extern unsigned char namber_mex;
long int temp2;
extern long int add_summ_comp;
extern long int zad_part;
extern unsigned char buf_dec[8];
extern struct {int procent, massa, tek_massa,delta;}KOMPONENT[6];
extern unsigned int stat_komp[6];
extern unsigned int summa_procent;
extern unsigned int wait_press;
extern unsigned int n[tek_ves_old+1];
extern unsigned int time_ind;
extern unsigned char key;
extern long int tek_part;
extern unsigned char count_shag;
unsigned char kurs;
unsigned char slu=slujeb_var;
unsigned int var;
int adr_start;
void KORREKT_VAR(void){
sprint_int(var);
switch (kurs){
case 1:{
switch (key){
case 0x20 :var=var+10000;
break;
case 0x10 : var=var-10000;
}
}
break;
case 2:{
switch (key){
case 0x20 :var=var+1000;
break;
case 0x10 :var=var-1000;
}
}
break;
case 3:{
switch (key){
case 0x20 :var=var+100;
break;
case 0x10 :var=var-100;
}
}
break;
case 4:{
switch (key){
case 0x20 :var=var+10;
break;
case 0x10 : var=var-10;
}
}
break;
case 5:{
switch (key){
case 0x20 :var=var+1;
break;
case 0x10 :var=var-1;
}
}
}
}
void RASCHET_NAMBER_VAR(void){
char i;
switch (addr_str_sluj){
case 0x80 :{
if(kursor_sluj>7) i=1;
else i=0;
}
break;
case 0xC0 :{
if(kursor_sluj>7) i=3;
else i=2;
}
break;
case 0x90 :{
if(kursor_sluj>7) i=5;
else i=4;
}
break;
case 0xD0 :{
if(kursor_sluj>7) i=7;
else i=6;
}
break;
default:;
}
if(namber_var<8) namber_var=i;
else{
if(namber_var>15) namber_var=i+16;
else{
namber_var=i+8;
}
}
}
void start_cikl(void){
switch (key){
case 0x01 :{
if(namber_rej==rej1)namber_rej=rej0;
else namber_rej=rej1;
}
break;
case 0x02 :
if(namber_rej==statist) namber_rej=rej0;
else namber_rej=statist;
break;
case 0x04 :{
if (flagi & 0x0001 ) stop ();
else
if(summa_procent==1000){
if(n[count_tek_comp]==0){
if(zad_part > 10L ){
(flagi |= 0x0001 ) ;
PORTA=0xFF;
PORTC=0xFF;
PORTE=0x05;
DDRC=0xFF;
DDRA=0xFF;
DDRE=0x05;
(( PORTE )|= (1<<( 1 )) ) ;
(PORTE &= ~ 0x01 ) ;
}
}
else{
(flagi |= 0x0001 ) ;
PORTA=0xFF;
PORTC=0xFF;
PORTE=0x04;
DDRC=0xFF;
DDRA=0xFF;
DDRE=0x04;
(( PORTE )|= (1<<( 1 )) ) ;
(PORTE &= ~ 0x01 ) ;
}
}
}
break;
default: ;
}
}
void statistika(void){
start_cikl();
switch (key){
case 0x80 :{
namber_str_stat--;
if(namber_str_stat==0xff) namber_str_stat=2;
}
break;
case 0x40 :{
namber_str_stat++;
if(namber_str_stat>2) namber_str_stat=0;
}
break;
case 0x30 :{
if (!(flagi & 0x0001 )) {
if(namber_str_stat==2) SUMM_STAT_KOMP_CLR();
}
}
break;
default: ;
}
}
void rejim0(void){
start_cikl();
switch (key){
case 0x84 :{
kursor--;
switch (kursor){
case 4: kursor=3;
break;
case 2: ;
break;
default: kursor=5 ;
}
}
break;
case 0x08 :{
kursor++;
switch (kursor){
case 3: ;
break;
case 4: kursor=5;
break;
default: kursor=2 ;
}
}
break;
case 0x40 :{
namber_str++;
if(namber_str>5) namber_str=0;
switch (namber_str){
case 2: addr_str= 0xD0 ;
break;
case 5: addr_str= 0xD0 ;
break;
case 8: addr_str= 0xD0 ;
break;
case 1: addr_str= 0x90 ;
break;
case 4: addr_str= 0x90 ;
break;
case 7: addr_str= 0x90 ;
break;
default:{
addr_str= 0xC0 ;
}
}
}
break;
case 0x80 :{
namber_str--;
if(namber_str==0xff) namber_str=5;
switch (namber_str){
case 0: addr_str= 0xC0 ;
break;
case 3: addr_str= 0xC0 ;
break;
case 6: addr_str= 0xC0 ;
break;
case 1: addr_str= 0x90 ;
break;
case 4: addr_str= 0x90 ;
break;
case 7: addr_str= 0x90 ;
break;
default:{
addr_str= 0xD0 ;
}
}
}
break;
case 0x20 :{
if (!(flagi & 0x0001 )) {
switch (kursor){
case 2:{
KOMPONENT[namber_str].procent = KOMPONENT[namber_str].procent+100;
}
break;
case 3:{
KOMPONENT[namber_str].procent = KOMPONENT[namber_str].procent+10;
}
break;
case 5:{
KOMPONENT[namber_str].procent = KOMPONENT[namber_str].procent+1;
}
break;
default:;
}
if(KOMPONENT[namber_str].procent>999) KOMPONENT[namber_str].procent=0;
RASCHET_PROCENT_MASSA_ZAD_VES();
eewr_all();
}
}
break;
case 0x10 :{
if (!(flagi & 0x0001 )) {
switch (kursor){
case 2:{
KOMPONENT[namber_str].procent = KOMPONENT[namber_str].procent-100;
}
break;
case 3:{
KOMPONENT[namber_str].procent = KOMPONENT[namber_str].procent-10;
}
break;
case 5:{
KOMPONENT[namber_str].procent = KOMPONENT[namber_str].procent-1;
}
break;
default:;
}
if(KOMPONENT[namber_str].procent<0) KOMPONENT[namber_str].procent=999;
RASCHET_PROCENT_MASSA_ZAD_VES();
eewr_all();
}
}
break;
default: ;
}
}
void rejim1(void){
start_cikl();
switch (key){
case 0x30 : zad_part=0;
break;
case 0x84 :{
kursor_rej--;
if(kursor_rej<9) kursor_rej=13;
}
break;
case 0x08 :{
kursor_rej++;
if(kursor_rej>13) kursor_rej=9;
}
break;
case 0x20 :{
if (!(flagi & 0x0001 )) {
if(count_shag==0){
switch (kursor_rej){
case 9:{
zad_part=zad_part+10000;
}
break;
case 10:{
zad_part=zad_part+1000;
}
break;
case 11:{
zad_part=zad_part+100;
}
break;
case 12:{
zad_part=zad_part+10;
}
break;
case 13:{
zad_part=zad_part+1;
}
break;
default:;
}
if(zad_part>99999L) zad_part=0;
eewr_all();
RASCHET_PROCENT_MASSA_ZAD_VES();
}
}
}
break;
case 0x10 :{
if (!(flagi & 0x0001 )) {
if(count_shag==0){
switch (kursor_rej){
case 9:{
zad_part=zad_part-10000;
}
break;
case 10:{
zad_part=zad_part-1000;
}
break;
case 11:{
zad_part=zad_part-100;
}
break;
case 12:{
zad_part=zad_part-10;
}
break;
case 13:{
zad_part=zad_part-1;
}
break;
default:;
}
if(zad_part<0) zad_part=99999L;
eewr_all();
RASCHET_PROCENT_MASSA_ZAD_VES();
}
}
}
break;
default: ;
}
}
void sluj_const(void){
switch (key){
case 0x01 : test_mex_vkl();
break;
case 0x02 : test_mex_otkl();
break;
case 0x80 :{
namber_mex++;
if(namber_mex>17) namber_mex=0;
}
break;
case 0x40 :{
namber_mex--;
if(namber_mex==0xff) namber_mex=17;
}
break;
case 0x04 : slu=slujeb_var;
break;
case 0x84 :{
kursor_sl_const--;
if(kursor_sl_const==0xff) kursor_sl_const=2;
}
break;
case 0x08 :{
kursor_sl_const++;
if(kursor_sl_const>2) kursor_sl_const=0;
}
break;
case 0x20 :{
switch (kursor_sl_const){
case 0:{
adr_start=adr_start+100;
}
break;
case 1:{
adr_start=adr_start+10;
}
break;
case 2:{
adr_start=adr_start+1;
}
break;
default:;
}
if(adr_start>999) adr_start=80;
}
break;
case 0x10 :{
switch (kursor_sl_const){
case 0:{
adr_start=adr_start-100;
}
break;
case 1:{
adr_start=adr_start-10;
}
break;
case 2:{
adr_start=adr_start-1;
}
break;
default:;
}
if(adr_start<80 ) adr_start=999;
}
break;
default: ;
}
}
void sluj_var(void){
switch (key){
case 0x04 : slu=slujeb_const;
break;
case 0x02 : slu=error_crc;
break;
case 0x84 :{
kursor_sluj--;
switch (kursor_sluj){
case 0: kursor_sluj=2;
break;
case 1: kursor_sluj=14;
break;
case 9: kursor_sluj=6;
break;
default: ;
}
RASCHET_NAMBER_VAR();
}
break;
case 0x08 :{
kursor_sluj++;
switch (kursor_sluj){
case 0: kursor_sluj=2;
break;
case 7: kursor_sluj=10;
break;
case 15:kursor_sluj=2;
break;
default: ;
}
RASCHET_NAMBER_VAR();
}
break;
case 0x80 :{
namber_var--;
namber_var--;
if(namber_var==0xff) namber_var=namber_var=15;
if(namber_var==0xfe) namber_var=namber_var=14;
}
break;
case 0x40 :{
namber_var++;
namber_var++;
if(namber_var>15) namber_var=namber_var-16;
}
break;
case 0x20 :{
kurs=kursor_sluj;
if(kurs>6) kurs=kurs-9;
else kurs=kurs-1;
var=n[namber_var];
KORREKT_VAR();
n[namber_var]=var;
eewr_all ();
}
break;
case 0x10 :{
kurs=kursor_sluj;
if(kurs>6) kurs=kurs-9;
else kurs=kurs-1;
var=n[namber_var];
KORREKT_VAR();
n[namber_var]=var;
eewr_all ();
}
break;
default: ;
}
}
void obr_knopok(void){
if (wait_press==0){
opr_knopok();
if(key!=0) {
if (( PINB ) & (1<<( 0 )) ) {
switch (namber_rej){
case rej1: rejim1();
break;
case statist: statistika();
break;
case error_crc: ;
break;
default: rejim0();
}
}
else
switch (slu){
case slujeb_var: sluj_var();
break;
case slujeb_const: sluj_const();
break;
default: sluj_var();
}
time_ind=0;
wait_press= 300 ;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -