PL/M-51 является блочно-структурированным языком, каждый оператор в программе является, частью, по крайней мере, одного блока.
Каждая программа на PL/M-51 состоит из одного или более модулей, записанных в отдельных файлах и компилируемых отдельно. Каждый модуль может состоять из одного или более блоков. В языке программирования PL/M-51 имеется два типа блоков: блоки DO и блоки подпрограмм.
Модуль должен начинаться оператором DO с меткой перед ним, и заканчиваться оператором END. Между этими двумя операторами помещаются операторы, составляющие программу. Эти операторы объявляют переменные и выполняют необходимые действия. Модуль может содержать несколько блоков.
Блок - это соответствующим образом записанная группа операторов, начинающихся оператором DO и заканчивающаяся оператором END.
Подпрограмма начинается с объявления подпрограммы и заканчивается оператором END. Переменные, объявленные в подпрограмме и исполняемые операторы, находящиеся между операторами начала и конца подпрограммы, используются только при вызове подпрограммы.
Любая программа, написанная на языке программирования PLM-51, начинается с оператора do, при этом имя программы записывается перед этим оператором и оформляется как метка. Перед первым исполняемым оператором программы обязательно должны быть объявлены все переменные и константы, которые будут использоваться в программе. Программа, написанная на языке программирования PLM-51, заканчивается оператором end. Пример программы, написанной на языке программирования PLM-51 приведён ниже:
Primer:do; declare a byte; a=2+2; end;
Эта программа выполняет простейшие действия и содержит только один исполняемый оператор. Так как микроконтроллер не содержит встроенных средств отображения информации, то в языке программирования нет встроенных средств отображения полученного результата. Результат приведённой в примере программы можно посмотреть только во внутренней памяти микроконтроллера. То есть проверить работоспособность этой программы можно только на отладчике.
Для того, чтобы получить более полное представление о структуре программ, написанных на языке программирования PLM-51, приведём пример программы с использованием подпрограмм.
PrimerSIN:do; /*---------- Объявление переменных -------------------------*/ declare tabsin(180) byte const (0, /*sin(0)*/ 0.01745*32767, /*sin(1)*/ 0.03490*32767); /*sin(2)*/ declare a byte at(80h) register,/*переменная значения синуса*/ i byte;/*переменная аргумента в градусах*/ /*---------- Объявление подпрограмм -----------------------*/ sin:procedure(x) byte; declare x byte; return(tabsin(x)); end sin; /*--------- Начало основной программы ----------------------*/ do i=0 to 180; a=sin(i); /*вычислить очередное значение синуса*/ end; end;
В этом примере используется подпрограмма вычисления синуса с использованием табличного способа. Как видно из исходного текста программы все объявления были сделаны до первого исполняемого оператора. Переменная a в этом примере совпадает с адресом порта P0, поэтому синус можно наблюдать на выходе этого порта.