
Tv
============

LDmicro̓_[}PIC16Atmel AVR̃lCeBuR[h𐶐c[łB
}CR̐\tgEFA͒ʏAZuCABASICȂǂ̃vO~Oŏ܂B͖ߕׂ邱Ƃœ`܂B͋@Bꖽ߂ԂɎsƂ}CNvZbT̎dĝ݂܂ܔf̂Ƃ܂B

AvO}uWbNRg[ (PLC)̓_[WbNƂ̂găvO܂BႦ΁APȃvÔ͎悤Ȃ̂łB

   ||                                                                    ||
   ||    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]---------------------------------------------------------||
   ||                                                                    ||
   ||                                                                    ||

--[TON]-- ̓I^C}[\܂B莞1͂1o͂܂B
--[TOF]-- ̓It^C}[\܂B莞0͂1o͂܂B
--] [-- ͓͂\AH̐ړ_(XCb`)̂悤ɓ܂B}CR̓̓sɑΉ܂B
--( )-- ͏o͂\AH̃RĈ悤ɓ܂B}CȐo̓sɑΉ܂B

EɓnH̐̈{{OƌĂт܂B}ɂ̓O2{܂B
MeOEɐi݁A߂ʂĂ䂫܂B
e߂͍͐M󂯎AEɏo͐Mo܂B߂͕Ⓖɕׂ邱Ƃł܂B
}̍[͏ɘ_l1̐M͂܂B1̐M͒ʓdA0̐M͐≏ɂƂ܂B̖߂1̐M󂯎Ɠ삵A0̐M̓͂󂯎ƒ~܂B
̎AME̒[qɏo͂قɁAsɏo͂sAϐݒ肷Ȃǂ̕Iȓs߂܂B

߂̏ڍׂ͂̃}jAŌq܂B
_[WbN̏ڂ͑Web̃y[WȂǂɂ䂸܂B

ڂɖ炩ȈႢ͎̂悤Ȃ̂łB

    *\tvO̓eLXgł͂ȂłȂ悤Ȑ}Ƃĕ\܂B
\t̐l͂̕₷Ɗ܂B

    *\tvOXCb`()ƃRC(o)̒PȂ̂Ȃ
\t̂܂܉H}̂悤ɓǂ߂܂B
\tfW^H̒m͒IɊł傤B

    *\tAǂvZ邩̓_[}̃RpCf܂B
\tϐČvZ^C~OɓY܂Kv͂܂񂵁A
\tvZ̏ԂŔYނƂ܂BPLCc[
\tlĂ܂B

LDmicroPIC16Atmel AVR̃vO𐶐邱Ƃł܂B
݈ȉ̃vZbTɑΉĂ܂B

\tE PIC16F877
\tE PIC16F628
\tE PIC16F876 (eXg)
\tE PIC16F88 (eXg)
\tE PIC16F819 (eXg)
\tE PIC16F887 (eXg)
\tE PIC16F886 (eXg)
\tE ATmega128
\tE ATmega64
\tE ATmega162 (eXg)
\tE ATmega32 (eXg)
\tE ATmega16 (eXg)
\tE ATmega8 (eXg)

ΉvZbT𑝂₷̂͊ȒPłAɂ̓eXg܂B
ɑΉĂق̂΂AB

LDmicroł̓_[}ŃvOƂł܂B܂AWbNPCŃV~[gĎƂł܂Bł܂ƂmFłAo̓s蓖Ăă}CRpɃRpC܂Bo͂HEXt@C͂̂܂܃}CRɏނƂł܂B

LDmicro͈ʓIPLCvO~OɂȂׂĂ܂BO͂܂Ap̂̂łǂ݂̂܂KiʂȂ킯ł͂܂B悭mĂƎvꍇłAe߂̐nǂĂB͓̕ǎ҂Ƀ_[EWbNPLC̊{IȒm邱ƂOƂĂ܂ (-vZ-o͂̃TCNȂ)B

ǉ̃^[Qbg
==================

RpCANSI C̃R[ho͂邱Ƃł܂BCRpCɑΉvZbTł΂găvOł܂A^C[UpӂKv܂B̓Iɂ́ALDmicro PlcCycle() Ƃ֐̃R[h𐶐܂BO疈TCNĂԕKv܂B܂APlcCycle() ̎go͂̕Kv܂Bڂ͐R[h̃RgB

܂ALDmicro̓vZbTˑ̃oCgR[h𐶐邱Ƃł܂B
̓_[EWbNs邽߂̉z}V(VM)ΏۂƂ̂ŁAsp̃C^v^̃Tv𓯍Ă܂B̓|[^uCŏĂ܂BVM[UA͂ǂ̂悤ȃ}Vł͂łBprƂẮA_[EWbÑXNvgƂđ傫ȃvOɑgݍŎgƂl܂Bڂ̓TṽC^v^̃RgB

R}hCIvV
====================

ldmicro.exe ͒ʏIvVȂŋN܂B܂Aʏ͒PɃV[gJbgȂǂ_uNbNŋNāAGUIő삵܂B

"ldmicro.exe asd.ld" ̂悤Ƀt@Cw肵ċNꍇ́ALDmicro͂̃t@Cǂݍŗオ܂Bt@Cǂݍ߂Ȃꍇ̓G[\܂B.ldgqLDmicroɊ֘Atƃ_[}̃t@C_uNbN邾ŊĴŕ֗łB

"ldmicro.exe /c src.ld dest.hex" ̂悤Ɉ^ċNƁAsrc.ld RpC dest.hex Ɍʂo܂Bǂɂ炸ALDmicro̓RpCセ̂܂܏I܂BbZ[W̓R\[ɏo͂܂B̃[h̓R}hCs邱Ƃz肵Ă܂B

{
======

LDmicro_uNbNŋNƁÃvO\܂B
t@C^ċNƂ̃t@CǂݍŋN܂B
LDmicrõvO̕ۑ`(.LD)͓Ǝ̂̂ŁǍ`C|[g@\͂܂B

Ԃ́ÃOЂƂ邾̃vOłBɖ߂ǉ邱Ƃł܂BႦ΁Aj[[]->[}: ړ_]IԂ Xnew ƂO̐ړ_ǉ܂B߂̑}ʒu̓J[\Ŏw肵܂BEɑ}ƒɁA㉺ɑ}ƕɂȂ܂B
XnewXƂ̂́A̐ړ_}CR̓̓sɊ蓖ĂƂӖłBo͐ړ_͎ۂ̃sɊ蓖ĂOɃ}CR̎ނIŖOKv܂Bs蓖Ăɂ́Aʉ̕ϐꗗ\_uNbN܂B
X̑ɂFXȓAϐ̎ނ\Ă܂BႦ΁F

\tEX -- }CR̓̓s
\tEY -- }CȐo̓s
\tER -- [B1rbg̓
\tET -- ^C}[BIAItAώZ3
\tEC -- JE^[B㏸A~Az3
\tEA -- ADϊ킩ǂ݂l
\tEȂ -- ėp̃̐lϐ

ǉɂ "name" ̕ "new" ɂȂĂ܂B̂߂̕ϐȂ̂킩₷悤ɖOĂB[̖߂_uNbN邩AJ[\킹ă^[ƕҏWł܂B
vOœO̕ϐ͏ɓ̂w܂BႦ΁AI^C}(TON) Tdelay ƂϐgȀɂIt^C}(TOF) Tdelay ƂϐgƂ͂ł܂B
AώZ^C}(RTO) Tdelay ƖOĂRESET߂ Tdelay w肵Ă肠܂B̏ꍇ͑Ώۂ̃^C}͓̂łB

ϐ̓At@xbgAA (_) gƂł܂BɐgƂ͂ł܂B܂A啶Ə͋ʂ܂BXDogXdOg͕ʂ̕ϐłB

ϐʂ̖ (MOV, ADD, EQU Ȃ) ͂ǂ̎ނ̕ϐɑ΂Ă܂B܂A^C}[JE^vZɎgƂłƂƂłB͗Ⴆ΁AJE^̒l͈͓ɂ邩ǂ𒲂ׂ邽߂Ɏg܂B

SĂ̕ϐ16rbgtłBl͈̔͂ -32768  32767 łBl10i (0, 1234, -56) ŎwłقAASCIIR[h ('A', 'z') w肷邱Ƃł܂B̏ꍇ̓VONH[g (') ŕĉB

ʉɂ̓vO̕ϐ̈ꗗ\\܂B̕\̓vO玩Iɍ܂BقƂǂ̕ϐ͐ݒ肷邱Ƃ͂܂񂪁A X (̓s), Y (o̓s), A (ADϊl) ̂̂̓}CR̃sԍ蓖ĂKv܂B_uNbNƃs̐ݒ肪J܂B

vO̕ҏẂA_[}ɖ߂}폜邱Ƃōs܂BvOʂœ_łĂJ[\́AIĂ閽߂ƁA߂̑}ʒuĂ܂BJ[\]ޏꏊɂȂꍇ́A<Tab>Đ؂ւ邩A}EXŖ߂IŉB<Delete>Ɩ߂폜ł܂B_uNbN<Enter>Ɩ߂̐ݒ肪ł܂B

߂}Ƃ́AJ[\̖_̏oő}ʒuς܂B߂̍Eɑ}ƒɁA߂̏㉺ɑ}ƕɂȂ܂B̏㉺E̎w͖L[Ő؂ւ܂B߂̑}ʒuɂ͂[܂BႦ΁ARC̉Eɖ߂uƂ͂ł܂B

vOVK쐬ɂ́ÃOЂƂ܂Bj[[ҏW][O}]ŐVO㉺ɑ}ł܂B_Iɂ́A߂Sĕɔzu邱ƂŋȃO邾̃vO邱Ƃł܂BA_IȒPʂƂɃO𕪂čقXƂ₷ł傤B

vOAV~[^ŃeXg邱Ƃł܂B܂A}CRɏނ߂HEXt@CɃRpC邱Ƃł܂B

V~[^
==========

V~[V[hɓɂ́Aj[[V~[^][V~[V[h]IԂA<Ctrl+M>܂BēxƃV~[V[h𔲂܂B

V~[V[hł̓vO̕\̎dς܂BJ[\AʓdĂ閽߂͐ԂnCCg܂BłȂ߂̓O[ɂȂ܂B<Space>ƃV~[V1TCNi߂܂B

A^CV~[Vsɂ́Aj[[V~[^][A^CV~[VJn]IԂA<Ctrl+R>܂B̃[hłSpaceL[悤ɃTCNŐił䂫܂BvȌԂςƑɔf܂B

ʉ̕ϐꗗ\AvO̓͏ԂmFł܂Bڂ_uNbNƁA͂؂ւ邱Ƃł܂B̓_[}̖߂_uNbN邱Ƃłs܂BA^C̏ꍇ͓͂̕ω͑ɔf܂BłȂꍇ<Space>ăTCNi߂Ɣf܂B

lCeBuR[hւ̃RpC
========================

ǂ̂悤ȃvOɓIɂ.hext@Cɂă}CRɏނ߂ɂ܂BRpCɂ́A܂Ώۂ̃}CRIт܂B̓j[[ݒ][^[Qbg}CR]s܂B̌ASĂ̐ړ_ (X̕ϐ)ARC (Y̕ϐ)AAiOϊ (A̕ϐ)Ƀ}CR̓o̓|[g蓖ĂKv܂B͉ʉ̕ϐꗗ_uNbNčs܂BϐIԂƃs̈ꗗ\̂ŁA̒I܂B

̐ݒƂẮATCN()ƃ}CR̓g܂B̓j[[ݒ][}CRݒ]Œ܂BقƂǂ̏ꍇTCNԂ10msύXKv͂܂Bg̗ɂ̓}CRƂƂɎgUq(Z~bN)̎gLĉB

̐ݒ肪I΃RpCł܂Bj[[RpC][RpC]Iт܂B[OăRpC]IԂƃRpCʂ̏o͐ύXł܂BRpCG[ȂIntel IHEX`ŋ@Bo܂BłHEXt@Cg̃C^[Ń`bvɏŉB

삳ۂ́A`bv̓ݒ(q[YƂĂ΂܂)ɒӂĉB
PIC16ł͐ݒ胏[hƂHEXt@CɊ܂߂Ă̂ŁAC^[FĐݒ肵܂B
AVRłHEXt@Cɂ͊܂܂Ac[gĐݒ肵܂B

߃t@X
======================

> CONTACT, NORMALLY OPEN        Xname           Rname          Yname
                             ----] [----     ----] [----    ----] [----
  ړ_ (ʏ), Jړ_, aړ_, CNړ_

    ̖߂gēo̓s[̒l𒲂ׂ邱Ƃł܂B
    ʏĂāAƉHJXCb`ɗႦ܂B

    ̖߂0͂ƁA0o͂܂B
    ̖߂1͂ƁA֘Atꂽo̓s[1̂ƂA1o͂܂B
    ̖߂1͂ƁA֘Atꂽo̓s[0̂ƂA0o͂܂B
    ܂A֘Atꂽo̓s[ƓMo͂܂B

    ̖߂͓ R  X  Y ̕ϐɊ֘At܂B
    Ȑꍇ͓[AX̏ꍇ̓śAY̏ꍇ̓so͂łB
    ̏ꍇl01̘_lłB

> CONTACT, NORMALLY CLOSED      Xname           Rname          Yname
                             ----]/[----     ----]/[----    ----]/[----
  ړ_ (]), ړ_, bړ_, uCNړ_

    ̖߂gēo̓s[̒l𒲂ׂ邱Ƃł܂B
    ʏĂāAƉHJXCb`ɗႦ܂B

    ̖߂0͂ƁA1o͂܂B
    ̖߂1͂ƁA֘Atꂽo̓s[1̂ƂA0o͂܂B
    ̖߂1͂ƁA֘Atꂽo̓s[0̂ƂA1o͂܂B
    ܂A֘Atꂽo̓s[Ƌt̐Mo͂܂B
    ͊Jړ_Ƌt̓łB

    ̖߂͓ R  X  Y ̕ϐɊ֘At܂B
    Ȑꍇ͓[AX̏ꍇ̓śAY̏ꍇ̓so͂łB
    ̏ꍇl01̘_lłB

> COIL, NORMAL                  Rname           Yname
                             ----( )----     ----( )----
  RC (ʏ), ʏRC

    ̖߂͏o̓s[̒l̐ݒɎg܂B

    ̖߂0͂ƁA֘Atꂽo̓s[0ɃZbg܂B
    ̖߂1͂ƁA֘Atꂽo̓s[1ɃZbg܂B
    ܂A֘Atꂽo̓s[ɐMƓlݒ肵܂B

    ̖߂͓ R  Y ̕ϐɊ֘At܂B
    Ȑꍇ͓[AY̏ꍇ̓}CR̃so͂łB
    ̏ꍇl01̘_lłB

    ̖߂̓ỎE[ɂzuł܂B

> COIL, NEGATED                 Rname           Yname
                             ----(/)----     ----(/)----
  RC (]), ]RC

    ̖߂͏o̓s[̒l̐ݒɎg܂B

    ̖߂0͂ƁA֘Atꂽo̓s[1ɃZbg܂B
    ̖߂1͂ƁA֘Atꂽo̓s[0ɃZbg܂B
    ܂A֘Atꂽo̓s[ɐMƋt̒lݒ肵܂B

    ̖߂͓ R  Y ̕ϐɊ֘At܂B
    Ȑꍇ͓[AY̏ꍇ̓}CR̃słB

    ̖߂̓ỎE[ɂzuł܂B

> COIL, SET-ONLY                Rname           Yname
                             ----(S)----     ----(S)----
  RC (Zbĝ), ZbgRC

    ̖߂͏o̓s[̒l̐ݒɎg܂B

    ̖߂0͂ƁAȂɂ܂B
    ̖߂1͂ƁA֘Atꂽo̓s[1ɃZbg܂B

    ̃RCɂďԂ0ɃZbg邱Ƃ͂܂B
    ̏ꍇAZbgRCƃyAŎg܂B

    ̖߂͓ R  Y ̕ϐɊ֘At܂B
    Ȑꍇ͓[AY̏ꍇ̓}CR̃so͂łB

    ̖߂̓ỎE[ɂzuł܂B

> COIL, RESET-ONLY              Rname           Yname
                             ----(R)----     ----(R)----
  RC (Zbĝ), ZbgRC

    ̖߂͏o̓s[̒l̐ݒɎg܂B

    ̖߂0͂ƁAȂɂ܂B
    ̖߂1͂ƁA֘Atꂽo̓s[0ɃZbg܂B

    ̃RCɂďԂ1ɃZbg邱Ƃ͂܂B
    ̏ꍇAZbgRCƃyAŎg܂B

    ̖߂͓ R  Y ̕ϐɊ֘At܂B
    Ȑꍇ͓[AY̏ꍇ̓}CR̃so͂łB

    ̖߂̓ỎE[ɂzuł܂B

> TURN-ON DELAY                 Tdon
                           -[TON 1.000 s]-
  I^C}[, IfBC^C}[, x, 쑦ACNړ_

    ̖߂̓JEglݒ肳ꂽbȏɂȂ0o͂܂B
    b̓_CAOŒ߂ł܂B

    ̖߂͏ԂAo͂ێ܂B
    ̖߂11bԓ͂ƁA1o͂͂߂܂B
    ̖߂0͂ƁA0o͂͂߂܂B
    Ԃł0o͂܂B

    JEgl1͂0ɃZbgꑱ܂B
    0.8b1͂āA0.2b0͂āA0.3b1͂Ă
    ̖߂邱Ƃ͂܂B

    ̖߂͓ T ̕ϐɊ֘At܂B
    l̓^C}[̃JEglłB
    1͂ꂽbTCNԂPʂƂĐ܂B

    ϐ̒lMOV߂Ȃǂő̂Ƃ납ύX邱Ƃł܂B

> TURN-OFF DELAY                Tdoff
                           -[TOF 1.000 s]-
  It^C}[, ItfBC^C}[, x, 쑦AuCNړ_

    ̖߂̓JEglݒ肳ꂽbȏɂȂ0o͂܂B
    b̓_CAOŒ߂ł܂B

    ̖߂͏ԂAo͂ێ܂B
    ̖߂01bԓ͂ƁA0o͂͂߂܂B
    ̖߂1͂ƁA1o͂͂߂܂B
    Ԃł0o͂܂B

    JEgl1͂0ɃZbgꑱ܂B
    0.8b0͂āA0.2b1͂āA0.3b0͂Ă
    ̖߂邱Ƃ͂܂B

    ̖߂͓ T ̕ϐɊ֘At܂B
    l̓^C}[̃JEglłB
    0͂ꂽbTCNԂPʂƂĐ܂B

    ϐ̒lMOV߂Ȃǂő̂Ƃ납ύX邱Ƃł܂B

> RETENTIVE TIMER               Trto
                           -[RTO 1.000 s]-
  ώZ^C}[, ώZI^C}[

    ̖߂1͂ꂽb𐔂܂B
    ܂łɒʎZ1bԈȏ1͂Ă1o͂܂B

    ̖߂͏ԂAo͂ێ܂B
    ̖߂1ʎZ1bԓ͂ƁA1o͂͂߂܂B
    ̖߂0͂ƁA0o͂͂߂܂B
    Ԃł0o͂܂B

    ͂1bԂ͘AĂKv͂܂B
    Ⴆ΁A0.6b1͂āA2.0b0͂āA0.4b1͂
    ̖߂1o͂͂߂܂B

    x1o͂n߂ƁA̖߂͓͂0ɂȂĂ1o͂܂B
    JEgZbgɂ́ARESET߂g܂B

    ̖߂͓ T ̕ϐɊ֘At܂B
    l̓^C}[̃JEglłB
    1͂ꂽώZ̕bTCNԂPʂƂĐ܂B
    ̖߂̓JEglݒ肳ꂽbȏɂȂ1o͂܂B

    ϐ̒lMOV߂RESET߂Ȃǂő̂Ƃ납ύX邱Ƃł܂B

> RESET                        Trto             Citems
                           ----{RES}----     ----{RES}----
  Zbg, JE^Zbg, ^C}[Zbg

    ^C}JE^Zbg閽߂łB

    ̖߂0͂ƁAȂɂ܂B
    ̖߂1͂ƁA֘Atꂽ^C}JE^̃JEgl0ɃZbg܂B

    TONTOF͓͂ɂăZbg邽߁A̖߂͕Kv܂B
    RTOCTU/CTD͒PƂł̓ZbgȂ̂ŁA̖߂Ƒgݍ킹Kv܂B

    ̖߂̓ỎE[ɂzuł܂B

> ONE-SHOT RISING               _    _
                           --[_/ OSR/ \_]--
  オ, ㏸pX, DIFU, PLS, Vbgオ

    ̗͂オmăpXMo͂܂B
    Cxg̒ʒm⏈sȂǂɗLpłB

    ÕTCNł̓͂0ŁÃ݂TCNł̓͂1̂ƂɌA1o͂܂B
    ȊȌꍇ0o͂܂B

> ONE-SHOT FALLING            _      _
                           --[ \_OSF/ \_]--
  , ~pX, DIFD, PLF, Vbg

    ̗͂măpXMo͂܂B
    Cxg̒ʒm⏈sȂǂɗLpłB

    ÕTCNł̓͂1ŁÃ݂TCNł̓͂0̂ƂɌA1o͂܂B
    ȊȌꍇ0o͂܂B

> SHORT CIRCUIT, OPEN CIRCUIT
                           ----+----+----      ----+     +----
  H/JH, Z/J, V[g/I[v

    H̏o͂͏ɓ͂ƓɂȂ܂B
    JH̏o͓͂͂Ɋւ炸0łB
    fobO⃉OO[vɂ܂Ƃ߂ۂɗLpłB

> MASTER CONTROL RELAY
                           -{MASTER RLY}-
  }X^[Rg[[, }X^[䃊[

    SOւ̓͐M\܂B
    vO̓쒆͒ʏASẴO̓͂͏1łB
    ̖߂0͂ƁASẴO̓͂0ɂȂ܂B
    ̏Ԃ͍ēx̖߂1͂܂ő܂B

    ̏ꍇA̖߂̓yAŎg܂B
    ŜItɂ̂ƁAꂩ畜A邽߂̂̂łB

> MOVE                      {destvar :=  }      {Tret :=     }
                           -{ 123     MOV}-    -{ srcvar  MOV}-
  , ], [u

    ϐɒlݒ肷閽߂łB

    ̖߂0͂ƁAȂɂ܂B
    ̖߂1͂ƁA̕ϐɑ̕ϐ̒lݒ肵܂B

    ɂׂ͂Ă̎ނ̕ϐwł܂B
    ɂ̓^C}[ϐ (T)ƃJE^[ϐ (C)܂݂܂B
    Ⴆ0悤ɂ΁ARESET߂Ɠl̓ɂȂ܂B

    ̖߂̓ỎE[ɂzuł܂B

> ARITHMETIC OPERATION       {ADD  kay  :=}       {SUB  Ccnt :=}
                            -{ 'a' + 10   }-     -{ Ccnt - 10  }-

>                            {MUL  dest :=}       {DIV  dv :=  }
                            -{ var * -990 }-     -{ dv / -10000}-
  lZ (揜)

    ̖߂͉揜̌vZsAʂϐɐݒ肵܂B

    ̖߂0͂ƁAȂɂ܂B
    ̖߂1͂ƁA̕ϐɌvZʂ܂B
    1͂AvZƑ𖈃TCNJԂs܂B

    Eӂ̍ɂ͕ϐlw肵܂B
    l10i (0, 1234, -56) ŎwłقAASCIIR[h ('A', 'z') w肷邱Ƃł܂B
    ̏ꍇ̓VONH[g (') ŕĉB

    vZ16rbgtōs܂B
    l͈̔͂ -32768  32767 łB

    JԂɒӂĉBႦ΁Aa = a + 100Ƃ߂
    OɒuƂƁAϐa̒l͖TCN100オĂ܂B
    vZ̃XebvƂ1Pɑ̏ꍇ́AOSR/OSFȂ
    gݍ킹āAvZƑ1xsȂ悤ɂĂB

    Z͒[؂藎Ƃ܂B8 / 3 = 2ɂȂ܂B

    ̖߂̓ỎE[ɂzuł܂B

> COMPARE               [var ==]        [var >]        [1 >=]
                       -[ var2 ]-      -[ 1   ]-      -[ Ton]-

>                       [var !=]       [-4 <   ]       [1 <=]
                       -[ var2 ]-     -[ vartwo]-     -[ Cup]-
  r (l, 񓙒l, , , ȏ, ȉ)

    ̖߂͐lϐ̔rɎg܂B

    ̖߂0͂ƁAȂɂ܂B
    ̖߂1͂ƁAݒ肳ꂽs^ł鎞1AUłƂ0o͂܂B

    vZ16rbgtōs܂B
    l͈̔͂ -32768  32767 łB

    l10i (0, 1234, -56) ŎwłقAASCIIR[h ('A', 'z') w肷邱Ƃł܂B
    ̏ꍇ̓VONH[g (') ŕĉB

> COUNTER                      Cname          Cname
                           --[CTU >=5]--  --[CTD > -5]--
  JE^ (AbvJE^, _EJE^)

    M̗オmĐl1グ閽߂łB

    ÕTCNł̓͂0ŁA
    ݂̃TCNł̓͂1̂ƂɌAJEgω܂B
    ȊȌꍇAȂɂ܂B

    AbvJE^̓JEglCNg(1)܂B
    _EJE^̓JEglfNg(1)܂B
    JEgl5ȏȂ1AłȂ0o͂܂B
    r鐔l̓_CAOŒł܂B

    ̖߂͓ C ̕ϐɊ֘At܂B
    l̓JEglłB
    ϐ̒lRESET߂MOV߂Ȃǂő̂Ƃ납ύX邱Ƃł܂B
    ܂Aϐɑ΂CTUCTD̗zu邱Ƃł܂B
    ɂāAϐグ邱Ƃł܂B

> CIRCULAR COUNTER             Cname
                           --{CTC 0:7}--
  zJE^

    M̗オmĐl1グĂ䂭߂łB
    ll𒴂0ɖ߂܂B

    ÕTCNł̓͂0ŁÃ݂TCNł̓͂1̂ƂɌAJEgω܂B
    ȊȌꍇAȂɂ܂B

    ʏ̓JEglCNg܂B
    JE^l7̏ꍇ́ACNg0ɃZbg܂B
    ȊȌꍇAȂɂ܂B

    Ƃ΍ől7̏ꍇApX𑗂邽уJE^̒l
      0, 1, 2, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 2,....
    ̂悤ɂȂ܂B

    ől̓_CAOŒł܂B
    JɐlJԂ̂ŁAV[PT̂悤ɎgƂł܂B

    ̖߂͓ C ̕ϐɊ֘At܂B
    l̓JEglłB
    ϐ̒lRESET߂MOV߂Ȃǂő̂Ƃ납ύX邱Ƃł܂B

    ̖߂̓ỎE[ɂzuł܂B

> SHIFT REGISTER            {SHIFT REG   }
                           -{ reg0..3    }-
  VtgWX^, SFT, SFL

    ̖߂͒ʂԍϐxɗpӂ̂łB
    }̗ł́Areg0, reg1, reg2, reg34̕ϐ܂B
    ϐXe[WƌĂԂƂ܂B

    ÕTCNł̓͂0ŁÃ݂TCNł̓͂1̂ƂɌAeϐ̒lVtg܂B
    ȊȌꍇAȂɂ܂B

    ϐ̃VtgƂ́Aȉ̂悤ɕϐ̒l1炷łB
      reg3 := reg2
      reg2 := reg1
      reg1 := reg0
    reg0̒l͂̂܂܎c܂B

    ȃVtgWX^̓邱Ƃ̂ŒӂĉB

    ̖߂͒ʂԍ̂̔ėpϐɊ֘At܂B
    ̖߂̓ỎE[ɂzuł܂B

> LOOK-UP TABLE             {dest :=     }
                           -{ LUT[i]     }-
  bNAbve[u

    ̖߂͐lLĂAʂԍŎQƂ̂łB
    Lf[^̓_CAOŐݒł܂B

    ̖߂0͂ƁAȂɂ܂B
    ̖߂1͂ƁAiԖڂ̃f[^QƂĕϐdestɑ܂B
    ϐîƂYƌĂт܂B

    Y͈̔͂0vf-1łB
    Y͈͊Ȍꍇ͖̓`łB

    ̖߂͔ėpϐɊ֘At܂B
    ̖߂̓ỎE[ɂzuł܂B

> PIECEWISE LINEAR TABLE    {yvar :=     }
                           -{ PWL[xvar]  }-
  `Azz

    ̖߂͐Ɛ̑Ή (XYl)LĂAQƂ̂łB
    Lf[^̓_CAOŐݒł܂B

    ̖߂0͂ƁAȂɂ܂B
    ̖߂1͂ƁAxvarɑΉf[^vZĕϐyvarɑ܂B
    ϐ̓_CAOŐݒł܂B

    ̖߂͌vZGȊ֐\ߌvZĂ̂ɗLpłB
    Ⴆ΁AZT[̏o͓d舵₷PʂɃLu[V邽߂Ɏg܂B

    lɑΉf[^ȂꍇAo͂͑O̐l`Ԃ܂B
    Ⴆ΁A֐ f ̂悤ȒlƂƂ܂B

        f(0)   = 2
        f(5)   = 10
        f(10)  = 50
        f(100) = 100

    ́AOtœ_łƎ̂悤4̓_ƂƂłB

        (x0, y0)   = (  0,   2)
        (x1, y1)   = (  5,  10)
        (x2, y2)   = ( 10,  50)
        (x3, y3)   = (100, 100)

    PLTɋLĂāAႦ55QƂƂ܂B
    X=55̓_(10, 50)(100, 100)̒_(55, 75)Ȃ̂ŁA75Ƃl܂B

    X̐l͒PɂȂ悤͂Kv܂B

    ⊮̌vZ͕t16rbgōs߁A⊮̌vZŌ덷邱Ƃ܂B
    Ⴆ΁Â悤ȃGg̓RpCɃG[ɂȂ܂B

        (x0, y0)    = (  0,   0)
        (x1, y1)    = (300, 300)

    ̏ꍇA_Ɠ_̋k߂悤ɂΉł܂B

        (x0, y0)    = (  0,   0)
        (x1, y1)    = (150, 150)
        (x2, y2)    = (300, 300)

    5A6̓_Βʏ̗prɂ͏[łBȏ̃Gg͌vZׂ̕ɂȂ鋰ꂪ܂B

    xvar̒lGg͈̔͊O(ŏXl艺AőXl)̏ꍇ͖̓`łB

    ̖߂͔ėpϐɊ֘At܂B
    ̖߂̓ỎE[ɂzuł܂B

> A/D CONVERTER READ           Aname
                           --{READ ADC}--
  AiO͓ǂݍ, ADϊǂݍ

    LDmicro̓}CRADϊ@\𗘗p邱Ƃł܂B

    ̖߂0͂ƁAȂɂ܂B
    ̖߂1͂ƁAs͓̓dADϊsΉϐ (A) ɑ܂B
    ̕ϐ͑̌vZ(rAlZ)ɎgƂł܂B

    ̓s̐ݒ͉ʉ̕ϐꗗ_uNbN邱Ƃōs܂B
    ̃}CRł́AAiO͂ɑΉsɂ͐܂B
    }CRAVRg̏ꍇ́AAREFsVddƐڑĉB

    ̖߂͓ A ̕ϐɊ֘At܂B
    l̓AiO̓s̓d\lłB
    0V0ƂlɁAQƓdɂƓd̓͂1023ƂlɑΉ܂B
    vZ߂gƂŒl͈͖̔͂]ނ悤ɉHł܂A
    ZS16rbgł邱ƂɗӂĂB

    ̖߂̓ỎE[ɂzuł܂B

> SET PWM DUTY CYCLE          duty_cycle
                           -{PWM 32.8 kHz}-
  PWMf[eBݒ

    LDmicro̓}CRPWM@\𗘗p邱Ƃł܂B
    ̖߂PWM̃f[eBϐɍ킹Đݒ肵܂B

    ̖߂0͂ƁAȂɂ܂B
    ̖߂1͂ƁAPWM̃f[eBϐduty_cycle̒lɐݒ肵܂B

    f[eB̒l͈̔͂0100łB
    0ݒ肷ƏɃ[A100ݒ肷ƏɃnCɂȂ܂B
    (NbNȂǂ̕ϊ̌vZLDmicros܂)

    _CAOPWMgHzŐݒł܂B
    g╪Ƃ̌ˍŎۂɖ]݂̎gɂȂƂ͌܂񂪁A
    LDmicro͂Ƃ߂lɂȂ悤ݒ𒲐܂B
    덷܂ɑ傫ꍇ̓RpCɌxo܂B
    x]ɑƉ𑜓x鋰ꂪ܂B

    }CRPWM@\̓^C}[@\Ɋ֘AtĂ܂B
    LDmicro̓TCN̊Ǘ̂߃^C}[L܂B
    ̂߁A}CRɂ͍Œ2̃^C}[KvɂȂ܂B

    o̓sPIC16łCCP1ł͂ȂCCP2AAVRłOC1Ał͂ȂOC2Ag܂B

    ̖߂͔ėpϐɊ֘At܂B
    ̖߂̓ỎE[ɂzuł܂B

> MAKE PERSISTENT            saved_var
                           --{PERSIST}--
  iϐ, i, EEPROMۑ

    ̖߂͕ϐEEPROMɕۑ܂B

    ̖߂0͂ƁAȂɂ܂B
    ̖߂1͂ƁAw肵ϐ̒lEEPROMɕۑ܂B
    ɂāA}CR̓d؂ꂽłlۑ܂B

    l̕ۑ╜͎Iɍs܂B
    ϐ̒lωɏ݁AdI̊荞ݎɓǂݏo܂B

    EEPROM͏ݕۏ؉񐔂Ȃ(100000x)̂ŁA
    pɂɕωϐw肷͔̂ق悢ł傤B

    ̖߂͔ėpϐɊ֘At܂B

    ̖߂̓ỎE[ɂzuł܂B

> UART (SERIAL) RECEIVE          var
                           --{UART RECV}--
  UARTM

    LDmicro̓}CRUART@\𗘗p邱Ƃł܂B
    ̖߂UART1Mĕϐɐݒ肵܂B

    ̖߂0͂ƁAȂɂ܂B
    ̖߂1͂ƁAUART1M悤Ƃ܂B
    MTCN1o͂܂B
    M͊֘Atꂽϐɕۑ܂B
    ȊȌꍇ0o͂܂B

    AVR̕UARTg@ł́AUART0ł͂ȂUART1݂̂ɑΉĂ܂B
    ʐM̃{[[g̓j[[ݒ][}CRݒ]ݒł܂B
    gɂĂ̓{[[głȂꍇ܂B
    ̏ꍇLDmicro͌x\܂B

    UART߂xɋNꂽꍇ͖̓`łB

    ̖߂͔ėpϐɊ֘At܂B
    l͎MłB

> UART (SERIAL) SEND             var
                           --{UART SEND}--
  UARTM

    LDmicro̓}CRUART@\𗘗p邱Ƃł܂B
    ̖߂͕ϐ̒lUART1𑗐M܂B

    ̖߂0͂ƁAȂɂ܂B
    ̖߂1͂ƁAUART1𑗐M悤Ƃ܂B
    𑗐M̂Ƃ1o͂܂B
    ȊȌꍇ0o͂܂B

    AVR̕UARTg@ł́AUART0ł͂ȂUART1݂̂ɑΉĂ܂B
    ʐM̃{[[g̓j[[ݒ][}CRݒ]ݒł܂B
    gɂĂ̓{[[głȂꍇ܂B
    ̏ꍇLDmicro͌x\܂B

    UART߂xɋNꂽꍇ͖̓`łB

    ̖߂͔ėpϐɊ֘At܂B
    l͑M邽߂̕łB
    MOV߂LUT߂Ȃǂݒ肷邱Ƃł܂B

    ]ɂ͕TCNɂ킽ĎԂ邱ƂɒӂĉB
    ̕𑗂ɂ́Ao̗͂Ď邩A
    ^C}[gĊԊu܂B
    1͂Ă(M)̖̂͂߂0o͂Ă(ʐMłȂ)ƂłB

    ̏ꍇ͎FORMAT߂gقeՂłB

> FORMATTED STRING OVER UART                var
                                   -{"Pressure: \\3\\r\\n"}-
  UARTM

    LDmicro̓}CRUART@\𗘗p邱Ƃł܂B
    ̖߂͕ϐ̒lUARTŕ𑗐M܂B

    ̖߂0͂ƁAȂɂ܂B
    ̖߂1͂ƁAOTCN̓͂0̎ɌA
    UARTŕ̑MJn܂B
    𑗐M̂Ƃ1o͂܂B
    ȊȌꍇ0o͂܂B

    AVR̕UARTg@ł́AUART0ł͂ȂUART1݂̂ɑΉĂ܂B
    ʐM̃{[[g̓j[[ݒ][}CRݒ]ݒł܂B
    gɂĂ̓{[[głȂꍇ܂B
    ̏ꍇLDmicro͌x\܂B

    UART߂xɋNꂽꍇ͖̓`łB

    ݒ肵 '\\3' ƂGXP[vV[PX܂ޏꍇA
    ̕ɕϐvar̒lƂĒu܂B
    ̏ꍇK3ɒu܂B
    Ⴆvar̒l35̏ꍇA"Pressure: \\3\\r\\n" Ƃ
    "Pressure:  35\\r\\n" ̂悤ɂȂ܂B
    var1432Ƃ4̒lꍇA͖`łB
    ̉\ꍇ '\\3' ̑ '\\4' gق悢ł傤B

    ܂Al̉\ꍇA`\\-3d' (邢 `\\-4d') ̂悤
    w肵ĉB邽߂̋󔒂mۂ܂B

    ϐ𖄂ߍ܂APɌŒ蕶𑗐M邱Ƃł܂B
    ̏ꍇ̓GXP[vV[PXgKv͂܂B

    '\\' ̑ɁÂ悤ȃRg[LN^gƂł܂B

\tE \\\\  -- obNXbV
\tE \\r   -- LbW^[
\tE \\n   -- CtB[h
\tE \\f   -- tH[tB[h
\tE \\b   -- obNXy[X
\tE \\t   -- horizontal tab
\tE \\v   -- vertical tab
\tE \\a   -- alert
\tE \\xAB -- 16i 0xAB

    ̓_ł̖߂͂܂Ił͂܂BœKɂLDmicroŜɂ킽KvłB

Zp߂̏ڍ
====================

LDmicrǒvZ16rbgtōs܂Bl͈̔͂ -32768  32767 łB
́AvZʂ𓾂邽߂ɂ́AvZr̒l͈̔͂Ɏ߂Kv邱ƂӖ܂B
Ⴆ΁Ay = (1/x)*1200 ƂvZƂ܂Bx͈̔͂[1, 20]ƂƁAy[60, 1200]Ƃ͈͂ɂȂ܂B
̌vZɂ͓ʂ̎肦܂Bx̋tĂ1200@łB

   ||         {DIV  temp  :=}          ||
   ||---------{ 1 / x       }----------||
   ||                                  ||
   ||          {MUL  y  :=  }          ||
   ||----------{ temp * 1200}----------||
   ||                                  ||

́Ax𒼐1200Ŋ܂B

   ||           {DIV  y  :=}           ||
   ||-----------{ 1200 / x }-----------||

wIɂ͂̓͓ӖłB̓ƁAO҂̌ʂy=0ɂȂĂ܂܂BȂȂAvZrtempŃA_[t[N邩łBႦx = 3̋t0.333ŁAł͂ȂȂ܂BZ͐؂̂ĂȂ̂ŁAʂ0ɂȂ܂B1200|Ă0̂܂܂łB҂̏ꍇ̓A_[t[͋N܂B

ɃI[o[t[̖肪܂Bt̎dgݏA32767 + 1 = -32768̂悤ɏz܂B

̖hɂ́AႦΕϐ͈̔͂-100100̊ԂɂƂǂ߂Ȃǂ̃[߂ĂƂ悢ł傤B

̒PʂϊꍇA|Z̎ɊZsƂ悢ł傤B
y = 1.8*x ̂悤ȕΐAy = (9/5)*x̂悤ɏāAy = (9*x)/5ƂĎ܂B

   ||         {MUL  temp  :=}          ||
   ||---------{ x * 9       }----------||
   ||                                  ||
   ||           {DIV  y  :=}           ||
   ||-----------{ temp / 5 }-----------||

̎ |x| < (32767 / 9) = 3640 ͈̔͂œ܂A͈͊ȌꍇtempI[o[t[܂B

R[fBOX^C
============

͈ȉ̂悤ɁA̃OɕRCgƂ܂B

   ||       Xa               Ya        ||
 1 ||-------] [--------------( )-------||
   ||                                  ||
   ||       Xb               Yb        ||
   ||-------] [------+-------( )-------||
   ||                |                 ||
   ||                |       Yc        ||
   ||                +-------( )-------||
   ||                                  ||

̃RCg킸ɏƁÂ悤ɂȂ܂B

   ||       Xa               Ya        ||
 1 ||-------] [--------------( )-------||
   ||                                  ||
   ||                                  ||
   ||                                  ||
   ||                                  ||
   ||       Xb               Yb        ||
 2 ||-------] [--------------( )-------||
   ||                                  ||
   ||                                  ||
   ||                                  ||
   ||                                  ||
   ||       Xb               Yc        ||
 3 ||-------] [--------------( )-------||
   ||                                  ||

_Iɂ́ÃOgKv͑S܂B߂Sĕɔzu邱ƂŁAȃO邾̃vO邱Ƃł܂BAvOGɂȂɂăWbN̕ύXȂĂ䂭ł傤BVȋ@\ǉ邽߂ɑ啝ɏKvɂȂ邩܂B

Kxł΁AOO[v̂͂悢ƂłBHRC[ɓĖ߂ɔzu邱ƂŃO𑩂˂邱Ƃł܂BȂׂ֌W̐[̂܂Ƃ߁A_IȒPʂƂɃO𕪂Đ݌v܂傤BƂĂ̓O𑩂˂݌vꍇƕς肠܂񂪁A_[}nƂA_IȂ܂Ƃ܂oIɔc₷Ȃ܂B

                  *                 *                  *

O̗D揇Ɉˑ郍WbŃȀꍇN܂BႦ΁Â悤Ȑ݌vXaXbɕꍇɂYc1ɂȂ܂AIł͂܂B

   ||       Xa         {v  :=       }  ||
 1 ||-------] [--------{ 12      MOV}--||
   ||                                  ||
   ||       Xb         {v  :=       }  ||
   ||-------] [--------{ 23      MOV}--||
   ||                                  ||
   ||                                  ||
   ||                                  ||
   ||                                  ||
   ||      [v >]             Yc        ||
 2 ||------[ 15]-------------( )-------||
   ||                                  ||

AO̗D揇܂gƃWbNZLqłꍇ܂B
Xb3`Xb0Ƃ4̃rbg2iɕϊ鏈ƂÂ悤ɂ܂B

   ||                                   {v  :=       }  ||
 3 ||-----------------------------------{ 0       MOV}--||
   ||                                                   ||
   ||       Xb0                  {ADD  v  :=}           ||
   ||-------] [------------------{ v + 1    }-----------||
   ||                                                   ||
   ||       Xb1                  {ADD  v  :=}           ||
   ||-------] [------------------{ v + 2    }-----------||
   ||                                                   ||
   ||       Xb2                  {ADD  v  :=}           ||
   ||-------] [------------------{ v + 4    }-----------||
   ||                                                   ||
   ||       Xb3                  {ADD  v  :=}           ||
   ||-------] [------------------{ v + 8    }-----------||
   ||                                                   ||

̎MOV߂ŏȊOɔzuƁAʂ͑傫ς܂B
Ɛ䂵ꍇɕKvȖ߂̐lƁA͂̕@ȂƎv܂B

oO
====

LDmicro̓R[hقǍœK܂Bs͒xAeʂH܂B^PICAVR͏[Ȑ\̂ŁA^PLCx̗p𑫂ɂ͂ł悢Ǝ͍lĂ܂B

ϐ̒ɂ͂܂B̓_[}̕\Ɏ߂邽߂łB悢@͍̂Ƃ댩܂B

ptH[}XvOAf[^Ȃǂ̓_Ŗ肪ĂARpCɑSČo邱Ƃ͂ł܂BǂŎۓɂ킩܂B

t@C̓o͂̎KȂ̂ŁANbVt@Cꂽ肷邱Ƃ܂B

oO@\̗v]΍҂ɂAB

Thanks to:
    * Marcelo Solano, for reporting a UI bug under Win98
    * Serge V. Polubarjev, for not only noticing that RA3:0 on the
      PIC16F628 didn't work but also telling me how to fix it
    * Maxim Ibragimov, for reporting and diagnosing major problems
      with the till-then-untested ATmega16 and ATmega162 targets
    * Bill Kishonti, for reporting that the simulator crashed when the
      ladder logic program divided by zero
    * Mohamed Tayae, for reporting that persistent variables were broken
      on the PIC16F628
    * David Rothwell, for reporting several user interface bugs and a
      problem with the "Export as Text" function

COPYING, AND DISCLAIMER
=======================

DO NOT USE CODE GENERATED BY LDMICRO IN APPLICATIONS WHERE SOFTWARE
FAILURE COULD RESULT IN DANGER TO HUMAN LIFE OR DAMAGE TO PROPERTY. THE
AUTHOR ASSUMES NO LIABILITY FOR ANY DAMAGES RESULTING FROM THE OPERATION
OF LDMICRO OR CODE GENERATED BY LDMICRO.

This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License along
with this program. If not, see <http://www.gnu.org/licenses/>.

Jonathan Westhues

Rijswijk      -- Dec 2004
Waterloo ON   -- Jun, Jul 2005
Cambridge MA  -- Sep, Dec 2005
                 Feb, Mar 2006
                 Feb 2007
Seattle WA    -- Feb 2009

Email: user jwesthues, at host cq.cx
