Добавил:
ktotogdetotam
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:БЭМЗ полищук доки / mogilev yst / ce4_10_5 / CE7004M
.C/*Џа®Ја ¬¬ а Ў®вл ¬®¤ҐаЁ§Ёа®ў ®Ј® ®¤®д §®Ј® бзҐвзЁЄ –ќ7004Њ
(®¤®Ї« вл© ў аЁ в) ь ____ 2006Ј.
Copyright (c) ЃҐ«Ё«мЁЄ®ў ‚.„. 29.12.2003, 03.2006 */
/*Ї®¤Є«о票Ґ § Ј®«®ўЄ®ў ўгв२е ॣЁбва®ў 80‘32*/
#include <io51.h>
/*Ї®¤Є«о票Ґ § Ј®«®ўЄ®ў ЎЁЎ«Ё®вҐзле дгЄжЁ©*/
#include <stdlib.h>
/* ЇаҐалў Ёп
INT0 - Є« ўЁ вга
INT1 - Ё¬Їг«мбл ®в Ї®ўҐа塞®Ј® бзҐвзЁЄ Ё«Ё ॣҐҐа жЁп Ё¤ЁЄ жЁЁ ў ०Ё¬Ґ а Ў®вл ў б®бв ўҐ гбв ®ўЄЁ
в ©¬Ґал
’1 - д®а¬Ёа®ў ЁҐ з бв®вл ॣҐҐа жЁЁ ¤Ё ¬ЁзҐбЄ®© Ё¤ЁЄ жЁЁ Ё«Ё Ў®¤®ў п з бв®в ў ०Ё¬Ґ а Ў®вл ў б®бв ўҐ гбв ®ўЄЁ
’0 - д®а¬Ёа®ў ЁҐ Ё§¬ҐаЁвҐ«м®Ј® ЁвҐаў «
’2 - д®а¬Ёа®ў ЁҐ в Єв®ў®© з бв®вл 250 Єѓж
Ї®авл
P1.1=1 - ЇаҐалў Ёп 1 § ЇаҐйҐл
P1.1=0 - ЇаҐалў Ёп 1 а §аҐиҐл
ђ1.2 - гЇа ў«ҐЁҐ ०Ё¬ ¬Ё «®Ј®ў®© з бвЁ
ђ1.3 - гЇа ў«ҐЁҐ ०Ё¬ ¬Ё «®Ј®ў®© з бвЁ
ђ1.2=0,P1.3=0 - Їгбв®© ०Ё¬.
ђ1.2=1,P1.3=0 - ०Ё¬ Ё§¬ҐаҐЁп Їа殮Ёп.
ђ1.2=0,P1.3=1 - ०Ё¬ Ё§¬ҐаҐЁп в®Є .
ђ1.2=1,P1.3=1 - ०Ё¬ Ё§¬ҐаҐЁп ¬®й®бвЁ.
ђ1.4=0 - бЁЈ « INTA - бЎа®б § Їа®б ®в Є« ўЁ вгал
ђ1.5=0 - бв®Ї в ©¬Ґа ЏЌ—, ђ1.5=1 - ЇгбЄ в ©¬Ґа ЏЌ—
ђ1.6,ђ1.7 - ЇҐаҐЄ«о票Ґ ०Ё¬®ў ¤Ґ«ҐЁп з бв®вл ЏЌ— Ё з бв®вл Ї®ўҐа. бзҐвзЁЄ
ђ1.6=0,ђ1.7=1 - c ¤Ґ«ҐЁҐ¬ з бв®вл Ї®ўҐа. бзҐвзЁЄ , ЎҐ§ ¤Ґ«ҐЁп з бв®вл ЏЌ—
P1.6=1,P1.7=0 - ЎҐ§ ¤Ґ«ҐЁп з бв®вл Ї®ўҐа. бзҐвзЁЄ , б ¤Ґ«ҐЁҐ¬ з бв®вл ЏЌ—
ђ3.0=0,ђ3.1=0 - ЇаҐ¤Ґ« 0,05Ђ
ђ3.0=1,ђ3.1=0 - ЇаҐ¤Ґ« 0,5Ђ
ђ3.0=0,ђ3.1=1 - ЇаҐ¤Ґ« 5Ђ
ђ3.0=1,ђ3.1=1 - ЇаҐ¤Ґ« 50Ђ
«Ґўл© Ё¤ЁЄ в®а - Ќ1 - Є®¤ 0xfe
Ќ2 - Є®¤ 0xfd
Ќ3 - Є®¤ 0xfb
Ќ4 - Є®¤ 0xf7
Їа ўл© Ё¤ЁЄ в®а- Ќ5 - Є®¤ 0xef
ᢥ⮤Ё®¤л U - 0xfe
I - 0xfd
0,05A- 0x7f
0,5A - 0xfb
5A - 0xf7
50A - 0xef
P - 0xdf
Ї®Ја - 0xbf */
/*®ЇаҐ¤Ґ«ҐЁҐ ¤аҐб®ў гбва®©бвў ўў®¤ -ўлў®¤ */
#define tim_cw (*(char*) 0x010003)
#define tim_chan0 (*(char*) 0x010000) /*бзҐв Ё¬Їг«мб®ў ЏЌ—*/
#define tim_chan1 (*(char*) 0x010001) /*¤Ґ«ҐЁҐ Ё¬Ї. Ї®ўҐа. бзҐвзЁЄ */
#define tim_chan2 (*(char*) 0x010002) /*¤Ґ«ҐЁҐ Ё¬Ї. ЏЌ—*/
/*Ї® § ЇЁбЁ*/
#define ind_data (*(char*) 0x010004) /*¤ лҐ ¤«п Ё¤ЁЄ в®а */
#define ind_poz (*(char*) 0x010008) /*®¬Ґа § Є®¬Ґбв Ё¤ЁЄ в®а */
#define ind_led (*(char*) 0x01000c) /*ॣЁбва ᢥ⮤Ё®¤®ў*/
/*Ї® з⥨о*/
#define const_low (*(char*) 0x010004) /*¬«. Ў ©в Ї®бв. Ї®ўҐа. бзҐвзЁЄ */
#define const_mid (*(char*) 0x010008) /*ба. Ў ©в Ї®бв. Ї®ўҐа. бзҐвзЁЄ */
#define const_hi (*(char*) 0x01000c) /*бв. Ў ©в Ї®бв. Ї®ўҐа. бзҐвзЁЄ */
#define key (*(char*) 0x010010) /*Ў ©в Є« ўЁ вгал*/
extern void delay1(unsigned char);
extern void delayi(unsigned char);
extern void init(void);
extern void test_ind(void);
extern void meas_uip(void);
extern void meas_pogr(void);
/*®ЇЁб ЁҐ ЇҐаҐ¬Ґле*/
unsigned char cntregen; /*бзҐвзЁЄ ॣҐҐа жЁЁ Ё¤ЁЄ жЁЁ*/
unsigned char tim_hi_old; /*п祩ЄЁ ¤«п еа ҐЁп б®бв®пЁ© ўҐиҐЈ® в ©¬Ґа */
unsigned char tim_low_old;
unsigned char tim_hi_new;
unsigned char tim_low_new;
unsigned int cnt_irq1; /*бзҐвзЁЄ ЇаҐалў Ё© ®в Ї®ўҐа塞®Ј® бзҐвзЁЄ */
unsigned char cnt_wait; /*бзҐвзЁЄ ўаҐ¬ҐЁ ®¦Ё¤ Ёп Ё¬Їг«мб®ў ®в Ї®ўҐа. бзҐвз. Ё«Ё ўаҐ¬п Ё§¬ҐаҐЁп ў ०Ё¬Ґ а Ў®вл ў б®бв ўҐ гбв ®ўЄЁ*/
extern unsigned char mode;
extern unsigned char i;
unsigned char m_data[5];
extern unsigned char counts1; /*бзҐвзЁЄ ०Ё¬®ў*/
extern unsigned char counts2; /*бзҐвзЁЄ ЇаҐ¤Ґ«®ў Ї® в®Єг*/
extern unsigned int buf_int;
void main(void)
{
T2CON=0x00;
T2MOD=0x02; /*०Ё¬ а Ў®вл ўгва. в ©¬Ґа 2*/
RCAP2H=0xff; /*§ Јаг§Є Є®ндд. ¤Ґ«ҐЁп=4 ў в ©¬Ґа 2*/
RCAP2L=0xfc; /*ўл室 п з бв®в в ©¬Ґа 230,4 Єѓж ЇаЁ Єў ажҐ 3,6864*/
TH2=0xff;
TL2=0xfc;
TR2=1; /*ЇгбЄ в ©¬Ґаa 2*/
begin:
init();/*ЁЁжЁ «Ё§ жЁп ЇЇ а вгал*/
test_ind();
begin_meas:
if(mode==0xdf) /*Ґб«Ё ०Ё¬ а Ў®вл ў б®бв ўҐ гбв ®ўЄЁ*/
{
ind0=0xc0; /*®Ўг«ҐЁҐ Ё¤ЁЄ в®а */
ind1=0xc0;
ind2=0xc0;
ind3=0xc0;
ind4=0xc0;
/*®¦Ё¤ ЁҐ Ў«®Є ¤ ле ®в Є®¬ЇмовҐа */
for(i=0;i<=4;i++)
{
wait_cw:
if(RI==0)goto wait_cw;
RI=0; EX1=0;
m_data[i]=SBUF;
}
EX1=1;
/*д®а¬Ёа®ў ЁҐ ¤ ле*/
switch(m_data[3])
{
case 0x30 :
{
ind5.5=0;
ind5.0=1;
ind5.1=1;
counts1=1; /*¬®й®бвм*/
}
break;
case 0x31 :
{
ind5.5=1;
ind5.0=0;
ind5.1=1;
counts1=2; /* Їа殮ЁҐ*/
}
break;
case 0x32 :
{
ind5.5=1;
ind5.0=1;
ind5.1=0;
counts1=3; /*в®Є*/
}
break;
}
switch(m_data[4])
{
case 0x30 :
{
ind5.2=1;
ind5.3=1;
ind5.4=1;
ind5.7=0;
counts2=0; /*ЇаҐ¤Ґ« Ї® в®Єг 0.05Ђ*/
}
break;
case 0x31 :
{
ind5.2=0;
ind5.3=1;
ind5.4=1;
ind5.7=1;
counts2=1; /*ЇаҐ¤Ґ« Ї® в®Єг 0.5Ђ*/
}
break;
case 0x32 :
{
ind5.2=1;
ind5.3=0;
ind5.4=1;
ind5.7=1;
counts2=2; /*ЇаҐ¤Ґ« Ї® в®Єг 5Ђ*/
}
break;
case 0x33 :
{
ind5.2=1;
ind5.3=1;
ind5.4=0;
ind5.7=1;
counts2=3; /*ЇаҐ¤Ґ« Ї® в®Єг 50Ђ*/
}
break;
}
m_data[3]=0x2f;
buf_int =atoi(m_data);
cnt_wait=(char)buf_int;
}
else cnt_wait=2;
meas_uip(); /*ЇҐаҐе®¤ Є Ё§¬ҐаҐЁо ¬®й®бвЁ, Їа殮Ёп, в®Є */
if(mode==0xdf)goto begin; /*Ґб«Ё ०Ё¬ а Ў®вл ў б®бв ўҐ гбв ®ўЄЁ*/
meas_pog(); /*ЇҐаҐе®¤ Є Ё§¬ҐаҐЁо Ї®ЈаҐи®бвЁ*/
goto begin_meas;
}
/*Ї®¤Їа®Ја ¬¬ ®Ўа Ў®вЄЁ ЇаҐалў Ёп 0*/
interrupt [0x03] void EX0_int (void) /* External Interrupt 0 */
{ /*keyboard*/
EX0=0;
flg.0=1;
}
interrupt [0x13] void EX1_int (void) /* External Interrupt 1 */
{ /*ЇаҐалў ЁҐ ®в Ї®ўҐа塞®Ј® бзҐвзЁЄ Ё«Ё ॣҐҐа жЁп Ё¤ЁЄ жЁЁ*/
if(mode==0xdf) /*Ґб«Ё ०Ё¬ а Ў®вл ў б®бв ўҐ гбв ®ўЄЁ*/
{
switch(cntregen)
{
case 0 :
{
ind_data=ind0; /*«Ґўл© Ё¤ЁЄ в®а(бв аиЁ©)*/
ind_poz=0xfe;
}
break;
case 1 :
{
ind_data=ind1;
ind_poz=0xfd;
}
break;
case 2 :
{
ind_data=ind2;
ind_poz=0xfb;
}
break;
case 3 :
{
ind_data=ind3;
ind_poz=0xf7;
}
break;
case 4 :
{
ind_data=ind4; /*Їа ўл© Ё¤ЁЄ в®а(¬« ¤иЁ©)*/
ind_poz=0xef;
}
break;
}
ind_led=ind5; /*ॣЁбва ᢥ⮤Ё®¤®ў*/
cntregen=cntregen+1;
if(cntregen>=5)cntregen=0;
}
else
{
P1.1=1; /*§ ЇаҐвЁвм ЇаҐалў Ёп 1*/
EX1=0;
ET1=0;
tim_cw=0; /*з⥨Ґ " «Ґвг" 0-Ј® Є « ўҐиҐЈ® в ©¬Ґа */
tim_low_old=tim_low_new; /*б®еа ҐЁҐ ЇаҐ¤л¤гйЁе § 票©*/
tim_hi_old=tim_hi_new;
tim_low_new=tim_chan0; /*Ї®«г票Ґ ®ўле § 票©*/
tim_hi_new=tim_chan0;
flg.1=1;
cnt_irq1=cnt_irq1+1;
cnt_wait=0;
ET1=1;
}
}
/*Ї®¤Їа®Ја ¬¬ ®Ўа Ў®вЄЁ ЇаҐалў Ёп ®в ўгв॥Ј® в ©¬Ґа 0*/
interrupt [0x0b] void T0_int (void) /* Timer 0 Overflow */
{
if(flg.3==1)goto inc_wait; /*Ґб«Ё ०Ё¬ ®ЇаҐ¤Ґ«ҐЁп Ї®ЈаҐи®б⥩*/
i=i-1;
if(flg.4==1||i==0)
{
tim_cw=0; /*з⥨Ґ " «Ґвг" 0-Ј® Є « ўҐиҐЈ® в ©¬Ґа */
tim_low_old=tim_low_new; /*б®еа ҐЁҐ ЇаҐ¤л¤гйЁе § 票©*/
tim_hi_old=tim_hi_new;
tim_low_new=tim_chan0; /*Ї®«г票Ґ ®ўле § 票©*/
tim_hi_new=tim_chan0;
}
flg.2=1; /*д« Ј Ё§¬ҐаЁвҐ«м®Ј® ЁвҐаў « */
goto end_irqt1;
inc_wait:
cnt_wait=cnt_wait+1; /*㢥«Ёз. бзҐвз. ®¦Ё¤ Ёп Ё¬Ї. Ї®ўҐа. бзҐвзЁЄ */
end_irqt1:
return;
}
/*Ї®¤Їа®Ја ¬¬ ®Ўа Ў®вЄЁ ЇаҐалў Ёп ®в ўгв॥Ј® в ©¬Ґа 1*/
interrupt [0x1b] void T1_int (void) /* Timer 1 Overflow */
{
if(mode==0xff) /*Ґб«Ё ўв®®¬л© ०Ё¬*/
{
switch(cntregen)
{
case 0 :
{
ind_data=ind0; /*«Ґўл© Ё¤ЁЄ в®а(бв аиЁ©)*/
ind_poz=0xfe;
}
break;
case 1 :
{
ind_data=ind1;
ind_poz=0xfd;
}
break;
case 2 :
{
ind_data=ind2;
ind_poz=0xfb;
}
break;
case 3 :
{
ind_data=ind3;
ind_poz=0xf7;
}
break;
case 4 :
{
ind_data=ind4; /*Їа ўл© Ё¤ЁЄ в®а(¬« ¤иЁ©)*/
ind_poz=0xef;
}
break;
}
ind_led=ind5; /*ॣЁбва ᢥ⮤Ё®¤®ў*/
cntregen=cntregen+1;
if(cntregen>=5)cntregen=0;
}
}
Соседние файлы в папке ce4_10_5