Добавил:
ktotogdetotam
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:БЭМЗ полищук доки / mogilev yst / МК7007БМ / UST
.C/*”гЄжЁп а Ў®вл Ёбв®зЁЄ ЊЉ7007Ѓ ў б®бв ўҐ гбв ®ўЄЁ –“7016
Copyright (c) ЃҐ«Ё«мЁЄ®ў ‚.„. ¬ ав 2009Ј. */
/*Ї®¤Є«о票Ґ § Ј®«®ўЄ®ў ўгв२е ॣЁбва®ў 80‘31*/
#include <io51.h>
/*Ї®¤Є«о票Ґ § Ј®«®ўЄ®ў ЎЁЎ«Ё®вҐзле дгЄжЁ©*/
#include <stdlib.h>
#include <math.h>
extern void delayi(char); /*§ ¤Ґа¦Є б Єў ⮬ 10¬б*/
extern void delay1(char); /*§ ¤Ґа¦Є б Єў ⮬ 1б*/
extern void message(char[20],char[20],char[20],char[20]);/*ўлў®¤ Ё¤ЁЄ в®а*/
extern void mov_write(char,char); /*§ ЇЁб вм бЁ¬ў®« ў Ї®§ЁжЁо Єгаб®а */
extern void move_dir(char); /*гбв ®ўЁвм Єгаб®а Ї®§ЁжЁо*/
extern void contr_ifm(void); /*гЇа ў«ҐЁҐ Ёбв®зЁЄ®¬*/
extern void out_f11(char,float);
extern void out_f14(char,float);
extern void out_f21(char,float);
extern void out_f22(char,float);
extern void out_f23(char,float);
extern void out_f31(char,float);
extern void out_f32(char,float);
extern void out_i2(char,char);
extern void out_i3(char,int);
/*®ЇаҐ¤Ґ«ҐЁҐ ¤аҐб®ў гбва®©бвў ўў®¤ -ўлў®¤ */
#define ind_read_write (*(char*) 0x014000) /*§ ЇЁбм Ё з⥨Ґ Ё¤ЁЄ в®а */
#define wrled_rdk1 (*(char*) 0x014800) /*§ ЇЁбм ў ॣЁбва ᢥ⮤Ё®¤®ў*/
/*®ЇЁб ЁҐ ЇҐаҐ¬Ґле*/
unsigned char m_dat[40]; /*¬ ббЁў ¤ ле ®в Є®¬ЇмовҐа - 40 Ў ©в*/
unsigned char m_8[8]; /*¬ ббЁў ¤«п Їа®¬Ґ¦гв®зле ЇаҐ®Ўа §®ў Ё©*/
extern unsigned char sw_u;
extern unsigned char sw_i;
extern unsigned char i;
extern unsigned char ireg_led;
extern unsigned char start_stop;
extern unsigned char flg_t0;
extern unsigned char flag_stop;
extern unsigned int voltage;
extern float current;
extern float frequency;
extern unsigned int fi;
/*¬Ґо ®¦Ё¤ Ёп Ё ®иЁЎЄЁ*/
code char u1[20]={" O¶ёгaЅёe "};
code char u2[20]={" єoјaЅгГ "};
code char u3[20]={" єoјѕДЖїepa "};
code char u4[20]={" "};
code char u5[20]={" Heї "};
code char u6[20]={" cіЗ·ё "};
code char u7[20]={" c єoјѕДЖїepoј "};
/*¬Ґо Ї а ¬Ґва®ў ०Ё¬ */
code char u8[20]= {"AіїoјaїёАecєё¦ pe¶ёј"};
code char u9[20]= {"U=000B I=0,0000A "};
code char u10[20]={"F=00,00Ўе Є=000ґpaг "};
code char u11[20]={"Bє»ЖАeЅёe U:_ I:_ "};
void ust(void)
{
ireg_led=0xff;
wrled_rdk1=ireg_led; /*Ј 襨Ґ ᢥ⮤Ё®¤®ў*/
message(u1,u2,u3,u4);
move_dir(0xe7);
/* Ё¤ЁЄ в®аҐ ¬Ґо ®¦Ё¤ Ёп, Єгаб®а 20 § Є®¬Ґб⥠4 бва®ЄЁ*/
/*-----------------------------------------------------------------------*/
/*ЇаЁҐ¬ Ёд®а¬ жЁЁ ®в Є®¬ЇмовҐа */
receive_inf:
for(i=0;i<=39;i++)
{
TH0=0;TL0=0;ET0=1;flg_t0=0;TR0=1;
wait_cw:
if(flg_t0>100)goto no_connect;
if(RI==0)goto wait_cw;
RI=0;TR0=0;ET0=0;
m_dat[i]=SBUF; /*ЇаЁҐ¬ Ў ©в б ЁвҐа䥩б */
}
/*Їа®ўҐаЄ Ї®«г祮Ј® ¤аҐб */
if(m_dat[0]==0x30&&m_dat[1]==0x30)goto transfer_data;
goto wait_command;
/*-----------------------------------------------------------------------*/
transfer_data:
/*ЇаҐ®Ўа §®ў ЁҐ Ї®«гзҐле ¤ ле*/
if(m_dat[2]==0x30)sw_u=0;
else sw_u=1;
if(m_dat[3]==0x30)sw_i=0;
else sw_i=1;
for(i=0;i<=2;i++)m_8[i]=m_dat[i+4];
m_8[3]=0x2f;
voltage=atoi(m_8);
for(i=0;i<=5;i++)m_8[i]=m_dat[i+7];
m_8[6]=0x2f;
current=atof(m_8);
for(i=0;i<=4;i++)m_8[i]=m_dat[i+13];
m_8[5]=0x2f;
frequency=atof(m_8);
for(i=0;i<=2;i++)m_8[i]=m_dat[i+18];
m_8[3]=0x2f;
fi=atoi(m_8);
if(m_dat[21]==0x30)
{
start_stop=0; /*бв®Ї Ёбв®зЁЄ */
goto out_parameters;
}
else
{
start_stop=1; /*ЇгбЄ Ёбв®зЁЄ ў ®ў®© в®зЄҐ*/
P1.7=1; /*бЎа®б Њ‚€Џ*/
delay1(1); /*§ ¤Ґа¦Є 1 ᥪ.*/
P1.7=0;
goto out_parameters;
}
/*-----------------------------------------------------------------------*/
/*ўлў®¤ Ї а ¬Ґва®ў ०Ё¬ Ё¤ЁЄ в®а*/
out_parameters:
message(u8,u9,u10,u11);
move_dir(0xe7);
/* Ё¤ЁЄ в®аҐ ¬Ґо ०Ё¬ , Єгаб®а 20 § Є®¬Ґб⥠4 бва®ЄЁ*/
out_i3(0xc2,voltage);
if(current>=10)out_f23(0xcc,current);
else out_f14(0xcc,current);
out_f22(0x96,frequency);
if(fi>=100)out_i3(0xa0,fi);
if(fi>=10&&fi<100)
{
mov_write(0xa0,0x20);
out_i2(0xa1,(char)fi);
}
if(fi<10)
{
mov_write(0xa0,0x20);
mov_write(0xa1,0x20);
mov_write(0xa2,(char)fi+0x30);
}
if(sw_u==0)mov_write(0xe0,0x30);
else mov_write(0xe0,0x31);
if(sw_i==0)mov_write(0xe4,0x30);
else mov_write(0xe4,0x31);
move_dir(0xe7); /*гЎа вм Єгаб®а Єа © нЄа */
/*-----------------------------------------------------------------------*/
contr_ifm();
if(start_stop==0&&flag_stop==1)return;
wait_command:
if(RI==0)goto wait_command;
goto receive_inf;
/*-----------------------------------------------------------------------*/
no_connect:
TR0=0;ET0=0;
message(u5,u6,u7,u4); /*Ґв бўп§Ё c Є®¬ЇмовҐа®¬*/
delay1(5); /*§ ¤Ґа¦Є 5 ᥪ.*/
return;
}