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

📄 obr_kay.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);





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 + -