Показать сообщение отдельно
Старый 03.05.2010, 13:31   #7 (permalink)
JCHacker
Member
 
Аватар для JCHacker
 
Регистрация: 23.07.2008
Сообщений: 584
Записей в дневнике: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 278
По умолчанию

Програмна реалізація на мові AVRPascal
Код:
program V05;
{$NOSHADOW}
{ $W+ Warnings}            {Warnings off}
Device = mega103, VCC=5;
Import SysTick, Disp7sPort;
From System Import LongWord, LongInt, Float;
Define
        ProcClock   = 12000000;        {Hertz}
        SysTick     = 10;             {msec}
        StackSize   = $0064, iData;
        FrameSize   = $0064, iData;
        Disp7sPort  = PortB, Mux, 0;  {multiplexed, Portbit}
        DispMode    = Wrap;
        DispDigits  = 3, iData;

Implementation
{$IDATA}
{--------------------------------------------------------------}
{ Type Declarations }
type
{--------------------------------------------------------------}
{ Const Declarations }
const n=128;
{--------------------------------------------------------------}
{ Var Declarations }
{$IDATA}
var x:array[0..n] of byte; // масив змінних вибірки x
    i:integer;
   kx,mx,rx,dx:float;
{--------------------------------------------------------------}
{ functions }
{--------------------------------------------------------------}
{ Main Program }
{$IDATA}
begin
  EnableInts;
  loop
  write(dispout,#10+'read');  //виводимо повідомленн про зчитування масиву
   for i:=1 to n do
       x[i]:=PORTB; // зчитуємо масив з порта B
       udelay(2); // 1/32000=31мкс 31/10-1=2 - затримка
   endfor;
   kx:=0;
   for i:=1 to n do
       kx:=kx+float(x[i]); //обчислюємо суму елементів вибірки
   endfor;
   mx:=kx/n; //знаходимо математичне сподівання
   for i:=1 to n do
       rx:=rx+pow(float(x[i])-mx,2); // знаходимо суму квадрату різниця i-ого значення вибірки та математичного сподівання
   endfor;
   dx:=rx/(n-1); // знаходимо незміщену вибіркову дисперсію
   dispclear;
   write(dispout,#10+floattostr(dx)); // виводимо результат обробки масиву на семисегментні індикатори
   mdelay(5000); // організовуємо затримку 5с
  endloop;
end V05
JCHacker вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070