Professional Documents
Culture Documents
LDmicro genera cdigo nativo para cierta PIC16 de Microchip y Atmel AVR
microcontroladores. Por lo general, el software para estos microcontroladores
est escrito en un lenguaje de programacin como ensamblador, C o BASIC.
Un programa en una de idiomas comprende una lista de instrucciones. Estos
lenguajes son potente y bien adaptado a la arquitectura del procesador, que
internamente ejecuta una lista de instrucciones.
||
||
|| Xbutton1 Tdon Rchatter
Yred ||
1 ||-------]/[---------[TON 1.000 s]-+-------]/[----------
----( )-------||
|| |
||
|| Xbutton2 Tdof |
||
||-------]/[---------[TOF 2.000 s]-
+ ||
||
||
||
||
||
||
|| Rchatter Ton Tnew
Rchatter ||
2 ||-------]/[---------[TON 1.000 s]----[TOF 1.000 s]-----
----( )-------||
||
||
||
||
||
||
||------[END]-------------------------------------------
--------------||
||
||
||
||
* PIC16F877
* PIC16F628
* PIC16F876
* PIC16F88
* PIC16F819
* PIC16F887
* PIC16F886
* ATmega128
* ATmega64
* ATmega162
* ATmega32
* ATmega16
* ATmega8
LDmicro est diseado para ser algo similar a la mayora de PLC comercial
y sistemas de programacin. Hay algunas excepciones, y un montn de
cosas No son estndar en la industria de todos modos. Lea cuidadosamente la
descripcin de cada instruccin, incluso si parece familiar. Este documento
asume conocimiento bsico de la lgica de escalera y de la estructura de
software PLC (El ciclo de ejecucin: leer entradas, clculo, escribir salidas).
OBJETIVOS ADICIONALES
Tambin es posible generar un cdigo ANSI C. Usted podra utilizar esto con
cualquier
procesador para el que tenga un compilador C, pero usted es responsable de
suministrar el tiempo de ejecucin. Esto significa que solo genera el fuente para
un PlcCycle funcin(). Usted es responsable de llamar PlcCycle cada tiempo de
ciclo, y usted es responsable de la implementacin de todas las E/S (Lectura /
escritura de entrada digital, etc.) funciones que el PlcCycle() llama.
LO ESENCIAL
Elija el resto del nombre para que describa lo que hace el objeto,
y de manera que es nico dentro del programa. El mismo nombre se refiere
siempre
al mismo objeto dentro del programa. Por ejemplo, sera un error
tener un retraso de encendido (TON) llamado Tdelay y un retardo de
desconexin (TOF)
Tdelay llamado en el mismo programa, ya que cada uno necesita su propio
contador
memoria. Por otra parte, sera correcto para tener un temporizador retentivo
(RTO) llamado Tdelay y una instruccin de restablecimiento (RES) asociado
con
Tdelay, ya que ese caso se desea que ambas instrucciones para trabajar con
el mismo temporizador.
Las instrucciones generales variables (MOV, ADD, EQU, etc.) pueden trabajar
en variables con cualquier nombre. Esto significa que pueden acceder
temporizador y acumuladores mostrador. Esto a veces puede ser til; por
ejemplo, se podra comprobar si el recuento de un contador de tiempo est en
un intervalo particular.
Las variables son siempre enteros de 16 bits. Esto significa que pueden ir de -
32768 a 32767. Las variables siempre se tratan como firmado. Usted
puede especificar literales como nmeros decimales normales (0, 1234, -56).
Tambin puedes especificar los valores de caracteres ASCII ('A', 'z'), poniendo
el carcter de comillas simples. Se puede utilizar un cdigo de caracteres
ASCII en la mayora de los lugares que se puede utilizar un nmero decimal.
SIMULACIN
INSTRUCCIONES DE REFERENCIA
RNAME Yname
----( )---- ----( )----
RNAME Yname
----(/)---- ----(/)----
RNAME Yname
----(S)---- ----(S)----
RNAME Yname
----(R)---- ----(R)----
Tdon
-[ton 1.000 s]-
Tdoff
-[tof 1.000 s]-
> RESET
Trto Citems
----{RES}---- ----{RES}----
_
-[OSR_/ ]-
-{MASTER RLY}-
> MOVE
{destvar := } {Tret := }
-{ 123 MOV}- -{ srcvar MOV}-
> COMPARAR
> CONTADOR
Cname Cname
-[CTU >= 5]- -[CTD >= 5]-
Cname
-{CTC 0: 7}-
{SHIFT REG}
-{Reg0..3 }-
{dest := }
-{LUT[i] }-
{yvar := }
-{PWL[xvar] }-
f (0) = 2
f (5) = 10
f (10) = 50
f (100) = 100
Puede corregir estos errores al hacer la distancia entre los puntos de la tabla
pequea. Por ejemplo, esta tabla es equivalente a la dado anteriormente, y que
no produce un error:
Debe casi nunca ser necesario utilizar ms de cinco o seis puntos. La adicin
de ms puntos hace su cdigo ms grande y ms lento para ejecutar. El
comportamiento si se pasa un valor de `xvar 'mayor que los ms grandes
coordenada x en la tabla o menor que la ms pequea x de coordenadas en la
tabla no est definido. Esta instruccin debe ser el instruccin de ms a la
derecha en su peldao.
Aname
-{READ ADC}-
Duty_Cycle
-{PWM 32,8 kHz}-
saved_var
--{PERSIS}--
var
-{UART RECV}-
var
-{"Presin: \3 \r \n"}-
LDmicro puede generar cdigo para utilizar las UART integradas en cierta
microcontroladores. En AVRS De con mltiples UARTs solamente UART1
(no UART0) es compatible. Configurar la velocidad de transmisin utilizando
Configuracin -> MCU Parmetros. Ciertas velocidades de transmisin
pueden no ser alcanzables con cierta frecuencias de los cristales; LDmicro le
avisar si este es el caso.
Si la variable puede ser negativo, a continuacin, usar `\-3d '(o` \ -4d' etc.) en
su lugar. Eso har que LDmicro para imprimir un espacio inicial para nmeros
positivos y un signo menos para los nmeros negativos.
Tambin es posible utilizar esta instruccin a la salida de una cadena fija, sin
interpolar el valor de una variable entera en el texto que es enviada por serie.
En ese caso, simplemente no incluyen el especial secuencia de escape.
Use `\\ ' para una barra invertida literal. Adems de la secuencia de
escape para interpolar una variable entera, el siguiente control caracteres estn
disponibles:
* \ R - retorno de carro
* \ N - salto de lnea
* \ F - formfeed
* \ B - retroceso
* \ XAB - carcter con el valor ASCII 0xAB (hex)
Cuando tenga que escalar una variable por algn factor, hacerlo mediante una
multiplicacin y una divisin. Por ejemplo, a escala y = 1,8 * x, calcular y = (9/5)
* x (Que es el mismo, ya que 1.8 = 9/5), y el cdigo de esto como y = (9 * x) /
5, la realizacin de la multiplicacin primero:
Esto funciona para todo x <(32767/9), o <x 3640. Para valores grandes de x, la
variable `temperatura 'se desbordara. Hay un lmite ms bajo similar de x.
ESTILO DE CODIFICACIN
|| Xa Ya ||
1 ||-------] [--------------( )-------||
|| ||
|| Xb Yb ||
||-------] [------+-------( )-------||
|| | ||
|| | Yc ||
|| +-------( )-------||
|| ||
En lugar de esto:
|| Xa Ya ||
1 ||-------] [--------------( )-------||
|| ||
|| ||
|| ||
|| ||
|| Xb Yb ||
2 ||-------] [--------------( )-------||
|| ||
|| ||
|| ||
|| ||
|| Xb Yc ||
3 ||-------] [--------------( )-------||
|| ||
An as, a menudo es una buena idea para la lgica relacionada con el grupo
en conjunto como una sola peldao. Esto genera cdigo casi idntica a si ha
realizado peldaos separados, pero muestra que se relacionan cuando nos
fijamos en ellos en la escalera
diagrama.
* * *
En general, se considera forma pobre para escribir cdigo de una manera tal
que su produccin depende del orden de los peldaos. Por ejemplo, este
cdigo no es muy buena si tanto Xa y Xb pueden nunca ser verdad:
|| Xa {v := } ||
1 ||-------] [--------{ 12 MOV}--||
|| ||
|| Xb {v := } ||
||-------] [--------{ 23 MOV}--||
|| ||
|| ||
|| ||
|| ||
|| [v >] Yc ||
2 ||------[ 15]-------------( )-------||
|| ||
Voy a romper esta regla si, al hacerlo, puedo hacer una pieza de
cdigo significativamente ms compacto, sin embargo. Por ejemplo, aqu es
cmo lo hara convertir una magnitud binario de 4 bits en xB3: 0 en un entero:
|| {v := } ||
3 ||-----------------------------------{ 0 MOV}--||
|| ||
|| Xb0 {ADD v :=} ||
||-------] [------------------{ v + 1 }-----------||
|| ||
|| Xb1 {ADD v :=} ||
||-------] [------------------{ v + 2 }-----------||
|| ||
|| Xb2 {ADD v :=} ||
||-------] [------------------{ v + 4 }-----------||
|| ||
|| Xb3 {ADD v :=} ||
||-------] [------------------{ v + 8 }-----------||
|| ||