Инструменты пользователя

Инструменты сайта


ob:o7:example:math

Математические выражения

Если микроконтроллер не имеет аппаратной поддержки вычисления чисел с плавающей точкой, то для компиляции доступна только целочисленная арифметика. Она состоит из таких операций как сложение (+), вычитание (-), деление на цело (DIV) и получение остатка от деления на цело (MOD).

MODULE ExamplesMath;

	VAR a, b, r: INTEGER;

BEGIN

	a := 37;
	b := 10;
	r := a + b; (* r = 47 *)
	r := a - b; (* r = 27 *)
	r := a DIV b; (* r = 3 *)
	r := a MOD b; (* r = 7 *)

END ExamplesMath.

Если микроконтроллер имеет модуль FPU, то будут доступны привычные операции над действительными числами REAL. В выражениях присвоения к переменным типа REAL константы должны указываться с точкой, обозначающей наличие десятичных разрядов.

MODULE ExamplesMath2;

	VAR a, b, r: REAL;

BEGIN

	a := 33.3;
	b := 22.0;
	r := a + b; (* r = 55.3 *)
	r := a - b; (* r = 11.299999999999997 *)
	r := a * b; (* r = 732.5999999999999 *)
	r := a / b; (* r = 1.5136363636363634 *)

END ExamplesMath2.

Также для микроконтроллеров архитектуры ARMv7 с аппаратным модулем FPU доступен модуль MicroARMv7MMath с самыми необходимыми математическими функциями.

MODULE ExamplesMath3;

	IMPORT Math := MicroARMv7MMath;

	VAR a: REAL;

BEGIN
	a := Math.sqrt(3.14);
	a := Math.exp(3.14);
	a := Math.ln(3.14);
	a := Math.sin(3.14/4.0);
	a := Math.cos(3.14/4.0);

END ExamplesMath2.

БИТОВЫЕ СДВИГИ ЕСТЬ??? разница между x=y/2 и x=y»1; ??

ob/o7/example/math.txt · Последнее изменение: 2021/12/01 04:47 — amalgama