⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zav_jki1_6x4.i

📁 Example the project test UART for AVR161 on C for IAR
💻 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 + -