Make(Delphi) Pos(0,0) Add(GlobalVar,13235828,238,119) { Name="Mode" Data=Integer(1) } Add(TabControl,15207677,140,217) { Left=15 Top=11 Width=375 Height=215 Ctl3D=1 Tabs=#4:Fuse|5:Flash|6:EEprom|4:Lock|4:Test| Bitmaps=[] Point(CurTabIndx) link(onChange,3240223:doOperation,[]) } Add(CheckBox,16442953,140,119) { Left=345 Top=231 Width=40 TabOrder=-1 Checked=0 Caption="Self" link(onCheck,5681465:doEvent1,[]) } Add(Math,3240223,189,217) { OpType=9 Op1=1 ResultType=0 link(onResult,16519073:doBits,[]) } Add(GlobalVar,3682242,350,84) { Name="Answ" } Add(HubEx,184031,406,203) { link(onEvent,14321952:doWork3,[(501,216)]) } Add(MainForm,37621,28,182) { Left=287 Top=108 Width=414 Height=295 Font=[Arial,8,0,0,1] Caption="Test-POGRAMMER" BorderStyle=3 SavePosition=2 SavePosName="Prog_1" Point(onClose) link(onCreate,12873952:doLoad,[]) link(onClose,12873952:doSave,[]) } Add(If_else,9663965,301,119) { @Hint=#32:Контроль корректности результата|33:(не было останова при SPI обмене)| Type=4 Op2=Integer(0) link(onTrue,13621187:doCompare,[]) link(Op1,13423696:Var1,[(307,107)]) } Add(MultiElementEx,11608930,532,56) { @Hint=#41:Выполнение одной команды программирования| } BEGIN_SDK Add(EditMultiEx,10227342,3,3) { WorkCount=#23:Run= Команда Write(1,0)|51:Init= Аппаратная инициализация карты + команда INIT|28:Transfer=32-битный SPI-обмен| Width=558 Height=289 link(Run,2027967:doWork1,[(228,9)]) link(Init,16488780:doEvent1,[(15,16)(15,34)]) link(Transfer,7185668:doEvent,[(3,195)]) } Add(MultiElementEx,913849,308,98) { @Hint=#55:Ввод/вывод байта данных wrData в порт (из потока) карты| link(onRead,9286391:doWork1,[(487,104)]) link(onError,9699628:doEvent1,[]) link(wrData,4332208:Data,[(314,91)(300,91)(300,140)(251,140)]) } BEGIN_SDK Add(EditMultiEx,5805214,3,3) { WorkCount=#54:doWrite=Вывести байт wrData в карту по порту из потока|46:doRead=Принять байт от карты с порта из потока| EventCount=#30:onRead=Принятый байт по doRead|37:onError=Таймаут ожидания ответа карты| DataCount=#32:wrData=Данные для записи в карту| Width=414 Height=316 link(doWrite,8265746:doEvent1,[(15,9)(15,20)]) link(doRead,390718:doEvent1,[(3,174)]) } Add(LPT,83389,350,105) { Point(doControl) Point(onSLCT) link(onSLCT,14266344:doEvent,[(387,118)(387,145)(65,145)(65,62)]) } Add(HubEx,1517966,322,112) { link(onEvent,83389:doControl,[]) } Add(HubEx,15872039,315,49) { link(onEvent,83389:doCheck,[(333,62)(333,118)]) } Add(For,10545140,77,182) { @Hint=#33:Ожидание ответа карты (0 -> SLCT)| End=10000 onBreakEnable=0 Point(onBreak) link(onEvent,15761478:doWork1,[(235,188)]) link(onStop,15996340:doWork2,[]) link(onBreak,10703777:doEvent1,[(117,202)(117,265)]) } Add(For,16084882,273,56) { @Hint=#33:Ожидание ответа карты (1 -> SLCT)| End=10000 onBreakEnable=0 link(onEvent,15872039:doWork2,[]) link(onStop,11903228:doWork2,[]) } Add(DoData,3765006,273,119) { @Hint=#18:NoReset + STR_Down|8:(1< SLCT)| End=10000 onBreakEnable=0 Point(onBreak) link(onEvent,15872039:doWork1,[(319,34)]) link(onStop,11903228:doWork1,[(396,41)]) link(onBreak,6621410:doEvent1,[]) } Add(DoData,3552883,126,175) { @Hint=#16:NoReset + STR_Up|17:(1< SLCT)| End=10000 onBreakEnable=0 link(onEvent,15761478:doWork2,[]) link(onStop,15996340:doWork3,[(221,223)]) } Add(DoData,14102703,175,259) { @Hint=#25:NoReset + STR_Up + DIR_Up|23:(1< STR_Down+DIR_Down|25:3) Ожидание 1 в бите SLCT| OutCount=4 link(onEvent1,14102703:doData,[]) link(onEvent2,15087919:doDataIn,[]) link(onEvent3,13034473:doData,[]) link(onEvent4,1548973:doFor,[(166,286)(166,216)]) } Add(Hub,390718,28,168) { @Hint=#25:1) Установить адрес порта|9:2) STR_Up|25:3) Ожидание 0 в бите SLCT| OutCount=3 link(onEvent1,15087919:doData,[(264,174)(264,251)]) link(onEvent2,3552883:doData,[]) link(onEvent3,10545140:doFor,[]) } Add(DoData,13034473,217,273) { @Hint=#29:NoReset + STR_Down + DIR_Down|8:(1< ACK)| End=10000 onBreakEnable=0 link(onEvent,7888991:doOperation,[]) link(onStop,4714327:doEvent2,[]) } Add(Hub,16488780,28,28) { link(onEvent1,2940691:doData,[]) link(onEvent2,15740803:doFor,[(70,41)(70,72)(18,72)(18,90)]) } Add(GlobalVar,13441723,91,42) { Name="Address" } Add(GlobalVar,12101480,98,63) { Name="Data" } Add(GlobalVar,5485789,84,21) { Name="Code" } Add(Message,15291904,399,203) { Message="CARD DISABLE !" Caption="LPT-Error" Icon=1 link(onMessage,15176689:doData,[]) } Add(Math,7888991,245,203) { OpType=4 Op1=64 ResultType=0 link(onResult,12008971:doEvent,[]) link(Op2,2840377:Port1,[(258,170)(405,170)]) } Add(IndexToChanel,12008971,294,203) { Count=1 link(onEvent1,3046339:doStop,[(332,209)(332,229)(186,229)(186,216)]) } Add(Icon,5577883,511,28) { @Hint=#5:#main| Icon=[ZIP9E09000078DA6360600442090906205060E8E064601003B2348018246400C48C40711000C951032C59B00005530774206108E8E9EC049BBF70EE5C0AED0199B90A09CF8462881D137BFB18BA817465452505EE3E838461767480CD6F6F6D65686E6CA4C07C907977A118D3FCBADA5A86CACA4A32CD5F053673EF822F40FA3FD40E5838753014161430E464675318FE77A166239BDF014F4B9403E4F05985918EA80312A1E62732D006C0DCBF9CC6E6AFA281D94668E61B51CD6461616124B361E6E743C5A90154B198DF0115A766B8A39BDF0AC4FC5436FB2E8364F213A4F4EF4535F3A5529F833103C32524F31B29321D61E62D20BE082DDB8E01F15E0691E083503B44C84A331073EF42CDBE0635FB38101F02E21D40BC9941C86F2B389EC94F4B30B32F2299BD176C3603C33A685C275298966061B20FEE6E88B9CBA1389181CF713685F10C0B934D50772FA74139040B93950C8309FC3F50CFF0BF411E5833F133FC8363101F280E82C7917033103342F03F0604FE0354FB83C11E48DB03F9F6107D8D407CFE3F03003665C2EE] @IsLib=True } Add(DoData,2940691,245,28) { Data=Integer(16) link(onEventData,2840377:doData,[]) } Add(GlobalVar,13235828,35,161) { Name="Mode" Data=Integer(1) } Add(GlobalVar,1204388,182,42) { Name="Mode" Data=Integer(1) } END_SDK Add(HubEx,2761117,392,245) { link(onEvent,184031:doWork3,[(410,258)]) } Add(LED,895892,483,112) { Left=320 Top=234 Width=15 Height=15 Enabled=1 ColorOn=65280 ColorOff=255 link(onChange,5331495:doWork1,[]) } Add(ChildGroupBox,15386740,350,210) { @Hint=#5:FLASH| link(onEvent1,184031:doWork2,[]) link(onEvent2,97363:doWork1,[(438,223)]) link(onEvent3,882187:doWork1,[(424,230)]) } BEGIN_SDK Add(EditMulti,10361841,3,24) { EventCount=3 WorkCount=1 Width=655 Height=569 link(doWork1,6675238:doVisible,[(3,34)]) } Add(GroupBox,6675238,28,28) { Left=25 Top=37 Width=353 Height=175 Visible=1 Caption="" } Add(Hub,3520250,196,168) { OutCount=4 link(onEvent1,14029925:doStop,[(235,174)(235,163)(123,163)(123,139)]) link(onEvent2,6375727:doClear,[(361,181)(361,97)]) link(onEvent3,11468851:doWork2,[]) link(onEvent4,9282252:doSave,[(235,195)(235,206)(17,206)(17,104)]) } Add(If_else,3694024,392,490) { Type=5 link(onTrue,10172377:doString,[]) link(onFalse,13157177:doWork1,[(431,503)]) link(Op1,14079632:Data,[]) } Add(MultiElementEx,4775718,259,77) { @Hint=#48:Чтение одного слова (word) из программной памяти| @IsLib=True link(onSend,16341808:doWork2,[]) link(onResult,8602685:doEvent1,[]) link(onStop,5386908:doStop,[(300,97)(300,118)(186,118)(186,90)]) } BEGIN_SDK Add(EditMultiEx,9615746,3,3) { WorkCount=#10:doReadWord|10:doContunue| EventCount=#6:onSend|8:onResult|6:onStop| Width=398 Height=130 link(doReadWord,9191031:doEvent1,[(12,9)(12,43)]) link(doContunue,7738347:doCompare,[(3,76)]) } Add(GlobalVar,2534486,322,30) { Name="Answ" } Add(GetDataEx,16721202,315,65) { link(Data,2534486:Var,[]) } Add(GlobalVar,7958662,147,30) { Name="Answ" } Add(DoData,16242012,70,9) { @Hint=#30:0x20 - команда ReadProgrammLow| Data=Integer(32) link(onEventData,11486766:doValue,[]) } Add(Hub,9191031,21,37) { OutCount=4 link(onEvent1,16242012:doData,[(60,43)(60,15)]) link(onEvent2,1918899:doValue,[]) link(onEvent3,1353492:doWork2,[]) link(onEvent4,12669728:doCompare,[]) } Add(If_else,12669728,147,58) { @Hint=#32:Контроль корректности результата|33:(не было останова при SPI обмене)| Type=4 Op2=Integer(0) link(onTrue,1449214:doWork1,[(305,64)]) link(onFalse,11931990:doWork3,[(187,71)(187,110)(305,110)]) link(Op1,7958662:Var,[]) } Add(GlobalVar,2387491,322,9) { Name="Code" } Add(GlobalVar,1918899,70,44) { Name="Address" } Add(DoData,2197890,266,9) { @Hint=#31:0x28 - команда ReadProgrammHigh| Data=Integer(40) link(onEventData,2387491:doValue,[]) } Add(Hub,5048974,196,72) { OutCount=3 link(onEvent1,2197890:doData,[(239,78)(239,15)]) link(onEvent2,1353492:doWork3,[(249,85)]) link(onEvent3,13287046:doCompare,[]) } Add(GlobalVar,11486766,112,9) { Name="Code" } Add(HubEx,1353492,245,44) { link(onEvent,9615746:onSend,[(383,57)(383,9)]) } Add(If_else,13287046,259,86) { @Hint=#32:Контроль корректности результата|33:(не было останова при SPI обмене)| Type=4 Op2=Integer(0) link(onTrue,1449214:doWork2,[]) link(onFalse,11931990:doWork2,[]) link(Op1,16721202:Var1,[(265,74)]) } Add(HubEx,11931990,301,86) { link(onEvent,9615746:onStop,[(401,99)]) } Add(DoData,4103176,322,86) { link(onEventData,9615746:onResult,[(391,92)(391,16)]) link(Data,16721202:Var2,[]) } Add(HubEx,1449214,301,79) { link(onEvent,4103176:doData,[]) } Add(If_else,7738347,105,70) { Op1=Integer(32) link(onTrue,5048974:doEvent1,[(163,76)(163,78)]) link(Op2,11486766:Var,[]) } END_SDK Add(Case,3871001,504,294) { Value=Integer(0) link(onTrue,10602555:doClear,[]) } Add(HubEx,3384878,364,175) { link(onEvent,10361841:onEvent3,[(658,188)]) } Add(DoData,6850564,196,126) { link(onEventData,11075358:doWork2,[]) link(Data,5386908:Position,[]) } Add(Timer,14029925,133,126) { Interval=100 Enable=1 link(onTimer,6850564:doData,[]) } Add(Thread,15883369,133,77) { Delay=0 FastStop=0 link(onExec,5386908:doFor,[]) link(onSyncExec,3520250:doEvent1,[(175,90)(175,174)]) } Add(ChildPanelEx,9282252,28,98) { @Hint=#11:Диалог READ| @IsLib=True link(onChange,2606080:doValue,[(70,104)(70,91)(18,91)(18,76)]) link(onRead,15678620:doEvent1,[]) link(IniText,2606080:Var,[]) link(Stream,10559388:Var1,[(41,72)]) } BEGIN_SDK Add(EditMultiEx,10169888,3,3) { WorkCount=#6:doSave| EventCount=#8:onChange|6:onRead| DataCount=#7:IniText|6:Stream| Width=542 Height=181 link(doSave,12669728:doCompare,[(3,139)]) } Add(Panel,15674865,70,49) { Left=20 Top=115 Width=310 Height=20 BorderWidth=0 BevelInner=0 BevelWidth=0 Point(doColor) } Add(DoData,16107520,336,126) { link(onEventData,8403444:doCopyFromStream,[]) link(Data,10169888:Stream,[(342,3)]) } Add(SDialog,16162915,280,42) { Title="Select file for save data from CHIP" Point(FileName) link(onExecute,6462441:doWork2,[]) link(FileName,9081460:Var3,[(286,12)(433,12)(433,100)]) } Add(FileStream,8403444,385,112) { Mode=1 AutoCopy=0 Point(doCopyFromStream) link(FileName,9081460:Var2,[]) } Add(GetDataEx,366085,189,98) { link(Data,9081460:Var1,[(202,100)]) } Add(Edit,14439330,385,42) { Left=80 Width=190 TabOrder=4 Hint="FileName for save result of reading from CHIP" Text="Test.bin" Point(doSelectAll) link(onChange,10169888:onChange,[(468,48)(468,9)]) link(onEnter,1136302:doEvent1,[]) } Add(Button,11412356,238,42) { Left=285 Width=25 TabOrder=5 Caption="..." link(onClick,16162915:doExecute,[]) } Add(Hub,1136302,441,49) { link(onEvent1,10549121:doWork2,[]) link(onEvent2,14439330:doSelectAll,[(481,62)(481,88)(378,88)(378,62)]) } Add(Memory,11297885,329,42) { link(onData,14439330:doText,[]) } Add(If_else,8512977,112,133) { link(onTrue,1882624:doEvent3,[]) link(onFalse,4841416:doFileExists,[]) link(Op1,11297885:Value,[(118,114)(335,114)]) } Add(GetDataEx,9081460,378,91) { link(Data,14439330:Text,[]) } Add(IndexToChanel,14416142,196,119) { Point(Data) link(onEvent1,1882624:doEvent1,[]) link(onEvent2,7364542:doExecute,[]) link(Data,366085:Var2,[]) } Add(FileTools,4841416,154,119) { link(onEnd,14416142:doEvent,[]) } Add(DoData,1280126,70,133) { link(onEventData,8512977:doCompare,[]) link(Data,366085:Var1,[(76,107)]) } Add(SDialog,7364542,238,126) { Title="Confirm for save data to existing file" FileName="" Point(FileName) link(onExecute,1882624:doEvent2,[]) } Add(Hub,1882624,280,119) { InCount=3 link(onEvent1,6462441:doWork3,[(319,125)]) link(onEvent2,16107520:doData,[]) } Add(HubEx,6462441,315,35) { link(onEvent,11297885:doValue,[]) } Add(Button,11207963,441,98) { Width=60 TabOrder=3 Caption="Read" link(onClick,10549121:doWork3,[(494,104)]) } Add(HubEx,10549121,490,42) { link(onEvent,10169888:onRead,[(545,55)]) } Add(Timer,1838464,126,49) { @Hint=#10:Start INIT| Interval=0 AutoStop=1 link(onTimer,11313998:doData,[]) } Add(DoData,11313998,175,49) { link(onEventData,14439330:doText2,[]) link(Data,10169888:IniText,[(181,16)(9,16)]) } Add(GlobalVar,7958662,21,105) { Name="Answ" } Add(If_else,12669728,21,133) { @Hint=#32:Контроль корректности результата|33:(не было останова при SPI обмене)| Type=4 Op2=Integer(0) link(onTrue,1280126:doData,[]) link(Op1,7958662:Var,[]) } END_SDK Add(Hub,15678620,77,105) { OutCount=4 link(onEvent1,1862029:doClear,[(116,111)(116,41)]) link(onEvent2,15883369:doStart,[(124,118)(124,83)]) link(onEvent3,13208559:doData,[]) link(onEvent4,14029925:doTimer,[]) } Add(Math,9489143,455,294) { OpType=8 Op2=32 ResultType=0 link(onResult,3871001:doCase,[]) } Add(ChildPanelEx,3401745,28,308) { @Hint=#19:Диалог WRITE/VERIFY| @IsLib=True link(onChange,13071240:doValue,[(68,314)(68,293)(18,293)(18,279)]) link(onLoad,15288301:doEvent1,[]) link(IniText,13071240:Var,[]) } BEGIN_SDK Add(EditMultiEx,9528119,3,3) { WorkCount=#7:doClose| EventCount=#8:onChange|6:onLoad| VarCount=#5:Value| DataCount=#7:IniText| Width=367 Height=225 link(doClose,2822212:doClose,[(3,195)(302,195)(302,146)]) link(Value,2563913:Value,[(90,228)]) } Add(Panel,4026776,182,14) { Left=20 Top=55 Width=313 Height=51 BorderWidth=0 BevelInner=0 BevelWidth=0 Point(doColor) } Add(ODialog,7871635,70,63) { Title="Select file for write data to CHIP" Point(FileName) link(onExecute,13591603:doWork2,[]) link(FileName,11700965:Var1,[(76,53)(109,53)(109,107)]) } Add(Edit,13400279,133,63) { Left=80 Width=190 TabOrder=3 Hint="Source FileName for writing to CHIP" Text="Test.bin" link(onChange,9528119:onChange,[(360,69)(360,9)]) link(onEnter,7941512:doWork1,[(174,76)(174,118)(74,118)]) } Add(HubEx,7941512,70,147) { link(onEvent,2563913:doClear,[]) } Add(Button,5195437,21,154) { Top=30 Width=60 TabOrder=2 Caption="Verify" link(onClick,7941512:doWork2,[]) } Add(GetDataEx,11700965,126,98) { link(Data,13400279:Text,[]) } Add(Button,5519636,21,112) { Width=60 TabOrder=1 Caption="Write" Data=Integer(63) link(onClick,2563913:doValue,[(68,118)(68,153)]) } Add(ODialog,6450928,217,126) { Title="Confirm for not existing file to write data to CHIP" FileName="" Point(FileName) link(onExecute,4011606:doEvent1,[]) } Add(Memory,2563913,84,147) { Default=Integer(1) link(onData,7985411:doFileExists,[]) } Add(Button,13807828,21,63) { Left=285 Width=25 TabOrder=4 Caption="..." link(onClick,7871635:doExecute,[]) } Add(HubEx,13591603,112,56) { link(onEvent,13400279:doText,[]) } Add(FileTools,7985411,133,126) { link(onEnd,6123088:doEvent,[]) link(FileName,11700965:Var2,[]) } Add(IndexToChanel,6123088,175,126) { Point(Data) link(onEvent1,6450928:doExecute,[]) link(onEvent2,4011606:doEvent2,[]) link(Data,11700965:Var3,[(181,107)]) } Add(Hub,4011606,259,126) { InCount=2 link(onEvent1,13591603:doWork3,[(303,132)(303,100)(116,100)]) link(onEvent2,2822212:doOpen,[]) } Add(FileStream,2822212,315,133) { link(onLoad,9528119:onLoad,[(370,139)]) } Add(Timer,1838464,21,14) { @Hint=#10:Start INIT| Interval=0 AutoStop=1 link(onTimer,11313998:doData,[]) } Add(DoData,11313998,70,14) { link(onEventData,13400279:doText2,[(124,20)(124,76)]) link(Data,9528119:IniText,[(76,3)]) } END_SDK Add(GetDataEx,846046,189,252) { link(Data,3401745:Value,[(202,253)(72,253)(72,350)(34,350)]) } Add(If_else,6610192,301,364) { @Hint=#21:Селектор Write/Verify| Op2=Integer(63) link(onTrue,15229612:doEvent1,[]) link(onFalse,4792910:doReadWord,[(341,377)(341,489)]) link(Op1,846046:Var3,[(307,261)]) } Add(MultiElementEx,10172377,441,490) { @Hint=#29:Формирование Текста сообщения| link(onFString,14363891:doMessage,[]) } BEGIN_SDK Add(EditMultiEx,6372940,3,3) { WorkCount=#8:doString| EventCount=#9:onFString| Width=265 Height=172 link(doString,12099981:doConvert,[(3,132)]) } Add(FormatStr,16111989,70,126) { Mask="ReadData=%2 at address: %1" link(onFString,6372940:onFString,[(268,132)]) link(Str1,16200662:GetData,[]) } Add(GlobalVar,10460780,154,37) { Name="Code" } Add(GlobalVar,13118360,112,16) { Name="Address" } Add(Convertor,12099981,28,126) { Mode=6 link(onResult,16111989:doString,[]) } Add(EventFromData,16200662,70,70) { link(onEvent,9611290:doOperation,[]) } Add(Math,9611290,112,70) { OpType=2 Op2=2 ResultType=0 link(onResult,16136594:doCompare,[]) link(Op1,13118360:Var,[]) } Add(If_else,16136594,154,70) { @Hint=#31:0x28 - команда ReadProgrammHigh| Op2=Integer(40) link(onTrue,925084:doOperation,[]) link(onFalse,7381328:doWork2,[]) link(Op1,10460780:Var,[]) } Add(Math,925084,196,70) { Op2=1 ResultType=0 link(onResult,7381328:doWork1,[(242,76)]) } Add(HubEx,7381328,238,70) { link(onEvent,1347948:doConvert,[(250,83)(250,111)(15,111)(15,76)]) } Add(Convertor,1347948,28,70) { Mode=6 Digits=4 link(onResult,16200662:doData,[]) } END_SDK Add(HubEx,6472823,385,525) { link(onEvent,14940314:doStop,[(250,538)(250,377)]) } Add(MultiElementEx,12176349,539,441) { @Hint=#13:WRITE+POLLING| link(onSend,4676022:doWork1,[(620,447)]) link(onStop,8586540:doWork2,[]) link(CODE,12546384:Result,[]) link(ADDRESS,1661110:Value,[(552,426)(503,426)]) link(DATA,2470158:Var2,[]) } BEGIN_SDK Add(EditMultiEx,3465047,3,3) { WorkCount=#9:doPolling| EventCount=#6:onSend|6:onStop| DataCount=#4:CODE|7:ADDRESS|4:DATA| Width=455 Height=186 link(doPolling,11147426:doEvent1,[(3,62)]) } Add(For,11316742,224,91) { End=1000 IncludeEnd=1 onBreakEnable=0 Point(onBreak) link(onEvent,7319317:doEvent1,[]) link(onStop,15133535:doMessage,[(273,104)(273,118)]) link(onBreak,13431585:doCompare,[(265,111)(265,146)]) } Add(HubEx,9849649,434,140) { link(onEvent,3465047:onStop,[(458,153)]) } Add(GetDataEx,6789736,343,77) { link(Data,4824769:Var,[]) } Add(Message,15133535,392,112) { Message="Таймаут контрольного чтения" Caption="Data polling Error" Icon=1 link(onMessage,9849649:doWork1,[(438,118)]) } Add(If_else,8548220,329,98) { Type=5 link(onFalse,11316742:doStop,[(377,111)(377,132)(214,132)(214,104)]) link(Op1,6789736:Var1,[(335,86)]) link(Op2,10839240:Var3,[(342,44)]) } Add(DoData,12070819,70,119) { link(onEventData,10460780:doValue,[]) link(Data,3465047:CODE,[(76,105)(9,105)]) } Add(GlobalVar,10460780,119,119) { Name="Code" } Add(If_else,13431585,350,140) { @Hint=#32:Контроль корректности результата|33:(не было останова при SPI обмене)| Type=4 Op2=Integer(0) link(onFalse,9849649:doWork2,[]) link(Op1,6789736:Var2,[]) } Add(GlobalVar,4824769,350,56) { Name="Answ" } Add(Sleep,6902398,224,49) { Delay=20000 } Add(GetDataEx,10839240,175,35) { link(Data,3465047:DATA,[(188,3)]) } Add(HubEx,1308938,322,63) { link(onEvent,3465047:onSend,[(436,76)(436,9)]) } Add(DoData,44200,70,21) { link(onEventData,13118360:doValue,[]) link(Data,3465047:ADDRESS,[(76,12)(16,12)]) } Add(GlobalVar,2159346,119,63) { Name="Code" } Add(GlobalVar,13118360,112,21) { Name="Address" } Add(GlobalVar,3123868,126,42) { Name="Answ" } Add(Hub,11147426,21,56) { OutCount=5 link(onEvent1,44200:doData,[(61,62)(61,27)]) link(onEvent2,10894866:doData,[]) link(onEvent3,1308938:doWork2,[(222,76)(222,76)]) link(onEvent4,12070819:doData,[(61,83)(61,125)]) link(onEvent5,9330825:doCompare,[]) } Add(If_else,1823706,175,84) { Op1=Integer(255) link(onTrue,6902398:doSleepMks,[(215,90)(215,55)]) link(onFalse,11316742:doFor,[]) link(Op2,10839240:Var2,[]) } Add(If_else,9330825,126,84) { @Hint=#32:Контроль корректности результата|33:(не было останова при SPI обмене)| Type=4 Op2=Integer(0) link(onTrue,1823706:doCompare,[]) link(onFalse,9849649:doWork3,[(170,97)(170,166)(438,166)]) link(Op1,3123868:Var,[]) } Add(Hub,7319317,280,91) { link(onEvent1,1308938:doWork3,[(326,97)]) link(onEvent2,8548220:doCompare,[]) } Add(DoData,10894866,70,63) { @Hint=#28:0x4C - команда WriteProgramm| Data=Integer(76) link(onEventData,2159346:doValue,[]) } END_SDK Add(For,5386908,196,77) { End=4096 IncludeEnd=1 link(onEvent,4775718:doReadWord,[]) } Add(GetDataEx,10559388,371,63) { link(Data,1862029:Stream,[]) } Add(GetDataEx,9640994,252,413) { link(Data,14940314:Position,[]) } Add(HubEx,4676022,616,476) { link(onEvent,14357848:doWork3,[(634,489)]) } Add(Math,10215371,455,434) { OpType=8 Op2=32 ResultType=0 link(onResult,9783555:doCase,[]) link(Op1,9640994:Var3,[(461,422)]) } Add(Case,9783555,497,434) { Value=Integer(31) link(onTrue,12176349:doPolling,[]) } Add(Hub,15229612,350,364) { link(onEvent1,9489143:doOperation,[(390,370)(390,300)]) link(onEvent2,6282437:doLoad,[]) } Add(GetDataEx,2470158,546,357) { link(Data,10602555:Value,[]) } Add(GlobalVar,5850486,455,336) { Name="Data" } Add(Message,14363891,490,490) { Caption="Verify-Info" Type=1 Icon=1 link(onMessage,14523011:doCompare,[]) } Add(HubEx,16341808,441,70) { link(onEvent,14357848:doWork2,[]) } Add(MemoryStream,1862029,378,28) { } Add(DoData,13208559,308,119) { Data=Integer(4096) link(onEventData,3384878:doWork1,[(368,125)]) } Add(GetDataEx,3029735,385,350) { link(Data,15534790:Var3,[(398,254)]) } Add(If_else,14523011,539,490) { Op2=Integer(2) link(onTrue,4566015:doWork2,[]) link(onFalse,13157177:doWork2,[(586,503)(586,531)]) } Add(MemoryStream,9976373,259,210) { Point(doPosition) } Add(DataToFile,14079632,392,434) { link(Stream,3029735:Var2,[]) } Add(DoData,10769897,308,182) { Data=Integer(0) link(onEventData,3384878:doWork2,[]) } Add(Hub,15288301,77,315) { OutCount=7 link(onEvent1,9976373:doCopy,[(115,321)(115,216)]) link(onEvent2,4834634:doRepeat,[]) link(onEvent3,3401745:doClose,[(122,335)(122,298)(18,298)(18,314)]) link(onEvent4,9976373:doPosition,[(131,342)(131,230)]) link(onEvent5,8434697:doOperation,[(250,349)(250,286)]) link(onEvent6,8177819:doStart,[(131,356)(131,370)]) link(onEvent7,1390965:doTimer,[(123,363)(123,440)]) } Add(Thread,8177819,147,364) { Delay=0 FastStop=0 link(onExec,14940314:doFor,[]) link(onSyncExec,11722761:doEvent1,[]) } Add(DataToFile,15714405,259,322) { link(Stream,15534790:Var2,[]) } Add(Repeat,4834634,147,322) { Type=5 Op2=Integer(0) link(onRepeat,2390921:doData,[]) link(Op1,7323519:GetData,[]) } Add(DoData,2390921,196,322) { Data=Integer(255) link(onEventData,15714405:doPut,[]) } Add(EventFromData,7323519,147,280) { link(onEvent,15291386:doOperation,[]) } Add(Math,15291386,196,280) { OpType=4 Op1=63 ResultType=0 link(onResult,7323519:doData,[(236,286)(236,301)(139,301)(139,286)]) link(Op1,846046:Var2,[]) link(Op2,11397773:Var1,[(209,268)]) } Add(MultiElementEx,4792910,350,483) { @Hint=#48:Чтение одного слова (word) из программной памяти| elink(4775718) link(onSend,4676022:doWork2,[]) link(onResult,3694024:doCompare,[]) link(onStop,6472823:doWork1,[(389,503)]) } Add(For,14940314,259,364) { IncludeEnd=1 link(onEvent,6610192:doCompare,[]) link(End,8434697:Result,[]) } Add(GetDataEx,11397773,259,259) { link(Data,9976373:Size,[]) } Add(Math,8434697,266,280) { OpType=7 Op2=2 ResultType=0 link(onResult,3384878:doWork3,[(368,286)]) link(Op1,11397773:Var2,[]) } Add(Memory,10602555,553,294) { @Hint=#51:Запоминаем данные для будующей Read-Polling команды| Default=Integer(255) } Add(Timer,1390965,196,434) { Interval=100 Enable=1 link(onTimer,3639373:doData,[]) } Add(DoData,3639373,259,434) { link(onEventData,11075358:doWork3,[(375,440)]) link(Data,9640994:Var2,[]) } Add(GetDataEx,15534790,252,245) { link(Data,9976373:Stream,[]) } Add(Hub,11722761,196,371) { link(onEvent1,11468851:doWork3,[(242,377)]) link(onEvent2,1390965:doStop,[(242,384)(242,418)(186,418)(186,447)]) } Add(HubEx,11075358,371,119) { link(onEvent,10361841:onEvent2,[(651,132)(651,37)]) } Add(HubEx,11468851,238,175) { link(onEvent,10769897:doData,[]) } Add(If_else,10069661,455,378) { Type=3 link(onTrue,1661110:doValue,[]) link(Op1,3215635:Var2,[]) link(Op2,2470158:Var1,[(468,366)]) } Add(GetDataEx,3215635,448,350) { link(Data,5850486:Var,[]) } Add(MultiElementEx,6282437,406,371) { @Hint=#39:Выполнение LOAD для одного слова (word)| link(onSend,16341808:doWork3,[(445,377)]) link(onCompare,10069661:doCompare,[(527,384)(450,384)]) link(onStop,8586540:doWork1,[(585,391)]) link(onPolling,10215371:doOperation,[(446,398)(446,440)]) link(Stream,3029735:Var3,[(412,359)]) } BEGIN_SDK Add(EditMultiEx,11759427,3,3) { WorkCount=#6:doLoad| EventCount=#6:onSend|9:onCompare|6:onStop|9:onPolling| DataCount=#6:Stream| Width=406 Height=193 link(doLoad,7263696:doEvent1,[(3,76)]) } Add(GlobalVar,9368811,133,42) { Name="Data" } Add(GlobalVar,10950519,105,21) { Name="Address" } Add(GlobalVar,3311652,133,84) { Name="Code" } Add(DoData,15949640,77,84) { @Hint=#30:0x40 - команда LoadProgrammLow| Data=Integer(64) link(onEventData,3311652:doValue,[]) } Add(DataToFile,8504478,77,42) { link(onGet,9368811:doValue,[]) link(Stream,9972942:Var2,[]) } Add(If_else,1292928,119,105) { @Hint=#32:Контроль корректности результата|33:(не было останова при SPI обмене)| Type=4 Op2=Integer(0) link(onTrue,3207407:doEvent1,[]) link(onFalse,2437338:doWork2,[(158,118)(158,160)]) link(Op1,6722940:Var,[]) } Add(DataToFile,70810,231,42) { link(onGet,12147672:doValue,[]) link(Stream,9972942:Var3,[(237,16)]) } Add(DoData,2090734,231,119) { @Hint=#31:0x48 - команда LoadProgrammHigh| Data=Integer(72) link(onEventData,10716414:doValue,[]) } Add(Hub,3207407,168,105) { OutCount=5 link(onEvent1,3734451:doWork2,[]) link(onEvent2,70810:doGet,[(212,118)(212,55)]) link(onEvent3,2090734:doData,[]) link(onEvent4,15510179:doWork3,[(221,132)]) link(onEvent5,15460070:doCompare,[(221,139)(221,146)]) } Add(GetDataEx,9972942,70,7) { link(Data,11759427:Stream,[(83,3)]) } Add(HubEx,3734451,371,98) { link(onEvent,11759427:onCompare,[(386,111)(386,16)]) } Add(Hub,7263696,21,70) { OutCount=5 link(onEvent1,10950519:doValue,[(62,76)(62,27)]) link(onEvent2,8504478:doGet,[(68,83)(68,55)]) link(onEvent3,15949640:doData,[]) link(onEvent4,15510179:doWork2,[]) link(onEvent5,1292928:doCompare,[(61,104)(61,111)]) } Add(GlobalVar,6722940,119,63) { Name="Answ" } Add(GlobalVar,12147672,280,42) { Name="Data" } Add(GlobalVar,9507748,273,98) { Name="Answ" } Add(GlobalVar,10716414,287,119) { Name="Code" } Add(If_else,15460070,273,140) { @Hint=#32:Контроль корректности результата|33:(не было останова при SPI обмене)| Type=4 Op2=Integer(0) link(onTrue,611228:doEvent1,[]) link(onFalse,2437338:doWork1,[(319,153)]) link(Op1,9507748:Var,[]) } Add(HubEx,2437338,315,147) { link(onEvent,11759427:onStop,[(397,160)(397,23)]) } Add(HubEx,15510179,217,84) { link(onEvent,11759427:onSend,[(375,97)(375,9)]) } Add(Hub,611228,329,140) { link(onEvent1,3734451:doWork3,[(375,146)]) link(onEvent2,11759427:onPolling,[(409,153)]) } END_SDK Add(Sleep,1243737,133,553) { Delay=20000 } Add(DoData,6239252,588,378) { link(onEventData,10602555:doValue,[(627,384)(627,289)(544,289)(544,300)]) link(Data,3215635:Var3,[(594,359)]) } Add(DoData,411991,133,511) { @Hint=#20:0xAC - команда ERASE| Data=Integer(172) link(onEventData,3414280:doValue,[]) } Add(InlineCode,6375727,378,84) { WorkPoints=#9:doPutByte|7:doClear| DataPoints=#6:Stream| Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|18: CntFF:integer;|9: public|21: Stream:THI_Event;|53: procedure doPutByte(var _Data:TData; Index:word);|51: procedure doClear(var _Data:TData; Index:word);|5: end;|0:|14:implementation|17:const f:byte=$FF;|0:|32:procedure THiAsmClass.doPutByte;|15:var st:PStream;|11: b:byte;|5:begin|25: b := ToInteger(_Data);|37: st := ReadStream(_Data,Stream,nil);|22: if st=nil then exit;|26: if b=$FF then inc(CntFF)|6: else|9: begin|22: while CntFF<>0 do|11: begin|21: st.Write(f,1);|18: dec(CntFF);|10: end;|19: st.Write(b,1);|8: end;|4:end;|0:|30:procedure THiAsmClass.doClear;|15:var st:PStream;|5:begin|25: if CntFF and 1 <>0 then|8: begin|39: st := ReadStream(_Data,Stream,nil);|24: if st=nil then exit;|18: st.Write(f,1);|7: end;|13: CntFF := 0;|4:end;|0:|4:end.| link(Stream,10559388:Var2,[]) } Add(GlobalVar,3414280,175,511) { Name="Code" } Add(HubEx,14357848,630,70) { link(onEvent,10361841:onEvent1,[(644,83)(644,30)]) } Add(GlobalVar,4416896,175,539) { Name="Address" } Add(HubEx,8586540,581,441) { link(onEvent,4566015:doWork1,[(592,454)]) } Add(Hub,7258178,84,532) { OutCount=4 link(onEvent1,411991:doData,[(124,538)(124,517)]) link(onEvent2,4416896:doValue,[]) link(onEvent3,4676022:doWork3,[(620,552)]) link(onEvent4,1243737:doSleepMks,[]) } Add(Memory,1661110,497,378) { @Hint=#46:Запоминаем адрес будующей Read-Polling команды| link(onData,12546384:doOperation,[]) } Add(Math,12546384,539,378) { @Hint=#44:Запоминаем код будующей Read-Polling команды| OpType=1 Op2=32 ResultType=0 link(onResult,6239252:doData,[]) link(Op1,3325206:Var,[]) } Add(Button,9505514,28,532) { @Hint=#6:0x8000| Left=20 Top=25 Width=60 TabOrder=1 Caption="Erase" Data=Integer(32768) link(onClick,7258178:doEvent1,[]) } Add(GlobalVar,3325206,539,336) { Name="Code" } Add(HubEx,13157177,427,518) { link(onEvent,4792910:doContunue,[(341,531)(341,496)]) } Add(Hub,8602685,308,84) { link(onEvent1,6375727:doPutByte,[]) link(onEvent2,4775718:doContunue,[(350,97)(350,67)(249,67)(249,90)]) } Add(GlobalVar,2606080,28,70) { Name="FRead" } Add(GlobalVar,13071240,28,273) { Name="FWrite" } Add(HubEx,4566015,588,483) { link(onEvent,6472823:doWork2,[(599,496)(599,538)]) } END_SDK Add(ChildGroupBox,1620251,350,252) { @Hint=#4:LOCK| link(onEvent1,2761117:doWork2,[]) } BEGIN_SDK Add(EditMulti,10361841,3,3) { EventCount=1 WorkCount=1 Width=462 Height=243 link(doWork1,6675238:doVisible,[(3,20)]) } Add(GroupBox,6675238,21,14) { Left=25 Top=37 Width=353 Height=175 Visible=1 Caption="" } Add(Case,13108528,119,161) { Value=Integer(6) link(onTrue,9975802:doEvent1,[]) } Add(DoData,2926910,224,133) { @Hint=#28:0xAC - команда WriteLockBits| Data=Integer(172) link(onEventData,14178628:doWork2,[]) } Add(CheckBox,11371427,336,84) { Left=195 Top=120 Width=40 TabOrder=8 Hint="Lock bit" Checked=0 Caption="LB1" } Add(CheckBox,14725939,343,91) { Left=195 Top=100 Width=40 TabOrder=7 Hint="Lock bit" Checked=0 Caption="LB2" } Add(CheckBox,1265050,350,98) { Left=80 Top=120 TabOrder=6 Hint="Boot lock bit" Checked=0 Caption="BLB01" } Add(CheckBox,11141247,357,105) { Left=80 Top=100 TabOrder=5 Hint="Boot lock bit" Checked=0 Caption="BLB02" } Add(HubEx,9151663,413,70) { link(onEvent,10361841:onEvent1,[(465,83)]) } Add(DoData,1481636,168,119) { @Hint=#27:0x58 - команда ReadLockBits| Data=Integer(88) link(onEventData,14178628:doWork1,[(270,125)]) } Add(GlobalVar,3565050,287,133) { Name="Code" } Add(GetDataEx,8553952,273,63) { link(Data,6903516:Var,[]) } Add(Button,7194295,21,161) { Left=195 Top=55 Width=60 TabOrder=-1 Caption="Write" link(onClick,7168833:doMessage,[]) } Add(Hub,9191031,70,63) { OutCount=4 link(onEvent1,1481636:doData,[(135,69)(135,125)]) link(onEvent2,1918899:doValue,[]) link(onEvent3,9151663:doWork2,[]) link(onEvent4,12669728:doCompare,[]) } Add(If_else,12669728,224,84) { @Hint=#32:Контроль корректности результата|33:(не было останова при SPI обмене)| Type=4 Op2=Integer(0) link(onTrue,5968008:doBits,[]) link(Op1,8553952:Var1,[(230,72)]) } Add(BitsToInt,16005346,336,182) { Count=6 link(onNumber,8094781:doValue,[]) link(Bit1,11371427:Checked,[]) link(Bit2,14725939:Checked,[]) link(Bit3,1265050:Checked,[]) link(Bit4,11141247:Checked,[]) link(Bit5,2011127:Checked,[]) link(Bit6,3717340:Checked,[]) } Add(GlobalVar,1918899,147,70) { Name="Address" } Add(Message,7168833,70,161) { Message="ВНИМАНИЕ !!!\n\rДанные LOCK-битов будут перезаписаны" Caption="Confirmation" Type=2 Icon=5 link(onMessage,13108528:doCase,[]) } Add(GlobalVar,11302166,266,175) { Name="Address" } Add(HubEx,14178628,266,126) { link(onEvent,3565050:doValue,[]) } Add(Hub,9975802,168,168) { OutCount=5 link(onEvent1,2926910:doData,[(207,174)(207,139)]) link(onEvent2,9728323:doData,[]) link(onEvent3,16005346:doNumber,[]) link(onEvent4,9151663:doWork3,[(417,195)]) link(onEvent5,13471379:doSleepMks,[]) } Add(GlobalVar,6903516,280,42) { Name="Answ" } Add(Button,4748360,21,63) { Left=195 Top=25 Width=60 TabOrder=-1 Caption="Read" Data=Integer(0) link(onClick,9191031:doEvent1,[]) } Add(IntToBits,5968008,280,84) { Count=6 Data_0=Integer(0) Data_1=Integer(1) link(Value,8553952:Var2,[]) link(onBit1,11371427:doCheck,[]) link(onBit2,14725939:doCheck,[]) link(onBit3,1265050:doCheck,[]) link(onBit4,11141247:doCheck,[]) link(onBit5,2011127:doCheck,[]) link(onBit6,3717340:doCheck,[]) } Add(CheckBox,2011127,364,112) { Left=80 Top=45 TabOrder=4 Hint="Boot lock bit" Checked=0 Caption="BLB11" } Add(CheckBox,3717340,371,119) { Left=80 Top=25 TabOrder=3 Hint="Boot lock bit" Checked=0 Caption="BLB12" } Add(GlobalVar,8094781,406,182) { Name="Data" } Add(Sleep,13471379,266,196) { Delay=20000 } Add(DoData,9728323,224,175) { @Hint=#6:0xE000| Data=Integer(57344) link(onEventData,11302166:doValue,[]) } END_SDK Add(ChildGroupBox,1551734,301,273) { @Hint=#4:Test| link(onEvent1,2761117:doWork3,[(396,279)]) } BEGIN_SDK Add(EditMulti,10361841,3,3) { EventCount=1 WorkCount=1 Width=371 Height=232 link(doWork1,6675238:doVisible,[(3,27)]) } Add(GroupBox,6675238,28,21) { Left=25 Top=37 Width=353 Height=175 Visible=1 Caption="" } Add(Label,553304,315,161) { Left=275 Top=15 Width=60 Caption="ANSWER" AutoSize=1 Alignment=2 } Add(Label,1590725,259,14) { Left=225 Top=15 Width=44 Height=17 Caption="DATA" AutoSize=1 Alignment=2 } Add(Label,11200208,203,14) { Left=150 Top=15 Width=70 Caption="ADDRESS" AutoSize=1 Alignment=2 } Add(Label,2072672,147,14) { Left=100 Top=15 Width=45 Caption="CODE" AutoSize=1 Alignment=2 } Add(Convertor,16419054,245,182) { Mode=6 link(onResult,2280866:doWork2,[]) link(Data,12917452:Var2,[]) } Add(DoData,10719373,252,84) { link(onEventData,12101480:doValue,[]) link(Data,9926302:Text,[]) } Add(DoData,13229782,196,119) { link(onEventData,13441723:doValue,[]) link(Data,3279095:Text,[]) } Add(DoData,14417690,140,77) { link(onEventData,5485789:doValue,[]) link(Data,2349954:Text,[]) } Add(Hub,4254866,77,105) { OutCount=5 link(onEvent1,14417690:doData,[(124,111)(124,83)]) link(onEvent2,10719373:doData,[(183,118)(183,90)]) link(onEvent3,13229782:doData,[]) link(onEvent4,10361841:onEvent1,[(374,132)]) link(onEvent5,13804220:doCompare,[(124,139)(124,188)]) } Add(Edit,2349954,140,35) { Left=100 Top=35 Width=45 TabOrder=2 Font=[Arial,8,0,0,1] Text="38" DataType=3 } Add(Edit,3279095,196,35) { Left=150 Top=35 Width=70 TabOrder=3 Font=[Arial,8,0,0,1] Text="0003" DataType=3 } Add(Edit,9926302,252,35) { Left=225 Top=35 Width=45 TabOrder=4 Font=[Arial,8,0,0,1] Text="FF" DataType=3 } Add(Label,9152464,308,182) { Left=276 Top=36 Width=60 Height=17 Color=12639424 Font=[Arial,8,0,0,1] Caption="" AutoSize=1 Alignment=2 } Add(Button,9745463,28,105) { Left=14 Top=32 Width=70 Height=25 TabOrder=1 Font=[Arial,8,0,0,1] Caption="SEND" link(onClick,4254866:doEvent1,[]) } Add(GlobalVar,5485789,189,77) { Name="Code" } Add(GlobalVar,12101480,301,84) { Name="Data" } Add(GlobalVar,13441723,245,119) { Name="Address" } Add(GlobalVar,5835958,245,140) { Name="Answ" } Add(DoData,10702784,203,189) { Data=String() link(onEventData,2280866:doWork3,[(291,195)]) } Add(GetDataEx,12917452,238,161) { link(Data,5835958:Var,[]) } Add(If_else,13804220,154,182) { @Hint=#32:Контроль корректности результата|33:(не было останова при SPI обмене)| Type=4 Op2=Integer(0) link(onTrue,16419054:doConvert,[]) link(onFalse,10702784:doData,[]) link(Op1,12917452:Var1,[(160,170)]) } Add(HubEx,2280866,287,175) { link(onEvent,9152464:doText,[]) } END_SDK Add(GlobalVar,12569799,301,28) { Name="Code" } Add(ChildGroupBox,5104613,301,231) { @Hint=#6:EEPROM| link(onEvent1,2761117:doWork1,[(396,237)]) link(onEvent2,97363:doWork2,[]) link(onEvent3,882187:doWork2,[]) } BEGIN_SDK Add(EditMulti,10361841,3,3) { EventCount=3 WorkCount=1 Width=660 Height=439 link(doWork1,6675238:doVisible,[(3,20)]) } Add(GroupBox,6675238,21,14) { Left=25 Top=37 Width=353 Height=175 Visible=1 Caption="" } Add(ChildPanelEx,8669331,21,245) { @Hint=#19:Диалог WRITE/VERIFY| elink(3401745) link(onChange,13071240:doValue,[(62,251)(62,229)(11,229)(11,216)]) link(onLoad,11399215:doEvent1,[]) link(IniText,13071240:Var,[]) } Add(ChildPanelEx,524665,28,91) { @Hint=#11:Диалог READ| elink(9282252) link(onChange,2606080:doValue,[(70,97)(70,81)(18,81)(18,62)]) link(onRead,15678620:doEvent1,[]) link(IniText,2606080:Var,[]) link(Stream,9414933:Var1,[(41,58)]) } Add(Hub,3520250,196,161) { OutCount=4 link(onEvent1,14029925:doStop,[(238,167)(238,156)(120,156)(120,132)]) link(onEvent2,6375727:doClear,[(295,174)(295,83)]) link(onEvent3,12996815:doWork2,[]) link(onEvent4,524665:doSave,[(238,188)(238,200)(17,200)(17,97)]) } Add(GetDataEx,9414933,301,49) { link(Data,15490153:Stream,[]) } Add(HubEx,3384878,315,168) { link(onEvent,10361841:onEvent3,[(663,181)]) } Add(DoData,6850564,196,119) { link(onEventData,13317714:doWork2,[]) link(Data,5386908:Position,[]) } Add(Timer,14029925,133,119) { Interval=100 Enable=1 link(onTimer,6850564:doData,[]) } Add(Thread,15883369,133,63) { Delay=0 FastStop=0 link(onExec,5386908:doFor,[]) link(onSyncExec,3520250:doEvent1,[(177,76)(177,167)]) } Add(Hub,15678620,70,98) { OutCount=4 link(onEvent1,15490153:doClear,[(113,104)(113,27)]) link(onEvent2,15883369:doStart,[(121,111)(121,69)]) link(onEvent3,13208559:doData,[]) link(onEvent4,14029925:doTimer,[]) } Add(For,5386908,196,63) { End=512 IncludeEnd=1 link(onEvent,13751154:doReadByte,[]) } Add(DoData,13208559,273,112) { Data=Integer(512) link(onEventData,3384878:doWork1,[(319,118)]) } Add(DoData,10769897,273,175) { Data=Integer(0) link(onEventData,3384878:doWork2,[]) } Add(MemoryStream,15490153,308,14) { } Add(MultiElementEx,13751154,245,63) { @Hint=#29:Чтение одного байта из EEPROM| @IsLib=True link(onSend,4467527:doWork2,[]) link(onResult,6375727:doPutByte,[]) link(onStop,5386908:doStop,[(284,83)(284,104)(186,104)(186,76)]) } BEGIN_SDK Add(EditMultiEx,9615746,3,3) { WorkCount=#10:doReadByte| EventCount=#6:onSend|8:onResult|6:onStop| Width=223 Height=127 link(doReadByte,9191031:doEvent1,[(12,9)(12,62)]) } Add(GlobalVar,2534486,77,49) { Name="Answ" } Add(DoData,4103176,77,77) { link(onEventData,12669728:doCompare,[]) link(Data,2534486:Var,[]) } Add(GlobalVar,1918899,140,42) { Name="Address" } Add(DoData,16242012,77,14) { @Hint=#25:0xA0 - команда ReadEEPROM| Data=Integer(160) link(onEventData,11486766:doValue,[]) } Add(Hub,9191031,21,56) { OutCount=4 link(onEvent1,16242012:doData,[(67,62)(67,20)]) link(onEvent2,1918899:doValue,[(128,69)(128,48)]) link(onEvent3,9615746:onSend,[(204,76)(204,9)]) link(onEvent4,4103176:doData,[]) } Add(If_else,12669728,133,77) { @Hint=#32:Контроль корректности результата|33:(не было останова при SPI обмене)| Type=4 Op2=Integer(0) link(onTrue,9615746:onResult,[(216,83)(216,16)]) link(onFalse,9615746:onStop,[(226,90)]) } Add(GlobalVar,11486766,126,14) { Name="Code" } END_SDK Add(InlineCode,6375727,308,70) { WorkPoints=#9:doPutByte|7:doClear| DataPoints=#6:Stream| Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|18: CntFF:integer;|9: public|21: Stream:THI_Event;|53: procedure doPutByte(var _Data:TData; Index:word);|51: procedure doClear(var _Data:TData; Index:word);|5: end;|0:|14:implementation|15:var f:byte=$FF;|0:|32:procedure THiAsmClass.doPutByte;|15:var st:PStream;|11: b:byte;|5:begin|25: b := ToInteger(_Data);|37: st := ReadStream(_Data,Stream,nil);|22: if st=nil then exit;|26: if b=$FF then inc(CntFF)|6: else|9: begin|22: while CntFF<>0 do|11: begin|21: st.Write(f,1);|18: dec(CntFF);|10: end;|19: st.Write(b,1);|8: end;|4:end;|0:|30:procedure THiAsmClass.doClear;|5:begin|13: CntFF := 0;|4:end;|0:|4:end.| link(Stream,9414933:Var2,[]) } Add(Hub,11399215,70,252) { OutCount=6 link(onEvent1,15271751:doCopy,[(177,258)(177,216)]) link(onEvent2,8669331:doClose,[(112,265)(112,237)(11,237)(11,251)]) link(onEvent3,15271751:doPosition,[(183,272)(183,230)]) link(onEvent4,8080543:doData,[]) link(onEvent5,8177819:doStart,[(113,286)(106,286)]) link(onEvent6,1390965:doTimer,[(111,293)(111,349)]) } Add(MemoryStream,15271751,203,210) { Point(doPosition) } Add(Thread,8177819,119,280) { Delay=0 FastStop=0 link(onExec,14940314:doFor,[]) link(onSyncExec,11722761:doEvent1,[]) } Add(For,14940314,273,280) { IncludeEnd=1 link(onEvent,6610192:doCompare,[]) link(End,7046402:Var3,[(286,254)]) } Add(Timer,1390965,210,343) { Interval=100 Enable=1 link(onTimer,3639373:doData,[]) } Add(DoData,3639373,273,343) { link(onEventData,13317714:doWork3,[(347,349)]) link(Data,14940314:Position,[]) } Add(Hub,11722761,161,287) { link(onEvent1,12996815:doWork3,[(249,293)]) link(onEvent2,1390965:doStop,[(201,300)(201,356)]) } Add(DoData,8080543,210,273) { link(onEventData,3384878:doWork3,[(319,279)]) link(Data,7046402:Var2,[]) } Add(HubEx,12996815,245,168) { link(onEvent,10769897:doData,[]) } Add(GetDataEx,7046402,203,245) { link(Data,15271751:Size,[]) } Add(HubEx,13317714,343,112) { link(onEvent,10361841:onEvent2,[(652,125)(652,16)]) } Add(If_else,6610192,322,280) { @Hint=#21:Селектор Write/Verify| Op2=Integer(63) link(onTrue,14768775:doWriteByte,[]) link(onFalse,4441287:doReadByte,[(362,293)(362,398)]) link(Op1,8669331:Value,[(328,267)(340,267)(340,326)(27,326)]) } Add(MultiElementEx,14768775,371,280) { @Hint=#28:Запись одного байта в EEPROM| link(onSend,285740:doWork1,[(571,286)]) link(onResult,1823706:doCompare,[]) link(onStop,4490098:doWork1,[(414,300)(414,273)(256,273)]) link(Stream,7852670:Var2,[]) } BEGIN_SDK Add(EditMultiEx,9615746,3,3) { WorkCount=#11:doWriteByte| EventCount=#6:onSend|8:onResult|6:onStop| DataCount=#6:Stream| Width=269 Height=148 link(doWriteByte,9191031:doEvent1,[(12,9)(12,55)]) } Add(GlobalVar,2534486,189,42) { Name="Answ" } Add(GlobalVar,6049880,133,56) { Name="Data" } Add(GlobalVar,1918899,126,28) { Name="Address" } Add(DoData,16242012,84,14) { @Hint=#26:0xC0 - команда WriteEEPROM| Data=Integer(192) link(onEventData,11486766:doValue,[]) } Add(Hub,9191031,28,49) { OutCount=6 link(onEvent1,16242012:doData,[(74,55)(74,20)]) link(onEvent2,1918899:doValue,[(79,62)(79,34)]) link(onEvent3,3729158:doGet,[(75,69)(75,69)]) link(onEvent4,9615746:onSend,[(254,76)(254,9)]) link(onEvent5,8034781:doData,[(68,83)(68,104)]) link(onEvent6,12669728:doCompare,[]) } Add(If_else,12669728,189,84) { @Hint=#32:Контроль корректности результата|33:(не было останова при SPI обмене)| Type=4 Op2=Integer(0) link(onTrue,9615746:onResult,[(262,90)(262,16)]) link(onFalse,9615746:onStop,[(272,97)]) link(Op1,2534486:Var,[]) } Add(GlobalVar,11486766,189,14) { Name="Code" } Add(DataToFile,3729158,91,56) { link(onGet,6049880:doValue,[]) link(Stream,9615746:Stream,[(97,3)]) } Add(DoData,8034781,84,98) { @Hint=#25:0xA0 - команда ReadEEPROM| Data=Integer(160) link(onEventData,10460780:doValue,[]) } Add(GlobalVar,10460780,135,98) { Name="Code" } END_SDK Add(HubEx,2693846,644,350) { link(onEvent,4490098:doWork3,[(657,363)(657,339)(256,339)]) } Add(HubEx,4467527,630,56) { link(onEvent,10361841:onEvent1,[(642,69)(642,9)]) } Add(For,11316742,476,294) { End=1000 IncludeEnd=1 onBreakEnable=0 Point(onBreak) link(onEvent,7319317:doEvent1,[]) link(onStop,15133535:doMessage,[(521,307)(521,349)]) link(onBreak,13431585:doCompare,[(513,314)(513,356)]) } Add(GetDataEx,6789736,595,280) { link(Data,4824769:Var,[]) } Add(Message,15133535,546,343) { Message="Таймаут контрольного чтения" Caption="Data polling Error" Icon=1 link(onMessage,2693846:doWork1,[(648,349)]) } Add(If_else,8548220,581,301) { Type=5 link(onFalse,11316742:doStop,[(624,314)(624,332)(467,332)(467,307)]) link(Op1,6789736:Var1,[(587,289)]) link(Op2,6323654:Var3,[(594,275)]) } Add(If_else,13431585,602,350) { @Hint=#32:Контроль корректности результата|33:(не было останова при SPI обмене)| Type=4 Op2=Integer(0) link(onFalse,2693846:doWork2,[]) link(Op1,6789736:Var2,[]) } Add(GlobalVar,4824769,602,259) { Name="Answ" } Add(Sleep,6902398,490,252) { Delay=20000 } Add(If_else,1823706,427,287) { Op2=Integer(255) link(onTrue,6902398:doSleepMks,[(474,293)(474,258)]) link(onFalse,11316742:doFor,[]) link(Op1,6323654:Var2,[]) } Add(Hub,7319317,525,294) { link(onEvent1,285740:doWork2,[(569,300)(570,300)]) link(onEvent2,8548220:doCompare,[]) } Add(GlobalVar,349369,427,252) { Name="Data" } Add(GetDataEx,6323654,420,266) { link(Data,349369:Var,[]) } Add(HubEx,285740,567,287) { link(onEvent,4467527:doWork3,[(634,300)]) } Add(If_else,3694024,420,399) { Type=5 link(onTrue,142919:doString,[]) link(Op1,14079632:Data,[]) } Add(MultiElementEx,142919,469,399) { @Hint=#29:Формирование Текста сообщения| link(onFString,14363891:doMessage,[]) } BEGIN_SDK Add(EditMultiEx,6372940,3,3) { WorkCount=#8:doString| EventCount=#9:onFString| Width=139 Height=144 link(doString,12099981:doConvert,[(3,104)]) } Add(FormatStr,16111989,70,98) { Mask="ReadData=%2 at address: %1" link(onFString,6372940:onFString,[(142,104)]) link(Str1,16200662:GetData,[]) } Add(Convertor,1347948,28,49) { Mode=6 Digits=4 link(onResult,16200662:doData,[]) link(Data,13118360:Var,[]) } Add(GlobalVar,13118360,28,16) { Name="Address" } Add(Convertor,12099981,28,98) { Mode=6 link(onResult,16111989:doString,[]) } Add(EventFromData,16200662,70,49) { link(onEvent,1347948:doConvert,[(113,55)(113,70)(18,70)(18,55)]) } END_SDK Add(HubEx,6472823,623,392) { link(onEvent,2693846:doWork3,[(648,405)]) } Add(DataToFile,14079632,420,350) { link(Stream,7852670:Var3,[(426,268)]) } Add(Message,14363891,525,399) { Caption="Verify-Info" Type=1 Icon=1 link(onMessage,14523011:doCompare,[]) } Add(If_else,14523011,581,399) { Op2=Integer(2) link(onTrue,6472823:doWork2,[]) } Add(MultiElementEx,4441287,371,392) { @Hint=#29:Чтение одного байта из EEPROM| elink(13751154) link(onSend,285740:doWork3,[(571,398)]) link(onResult,3694024:doCompare,[]) link(onStop,6472823:doWork3,[(627,412)]) } Add(GetDataEx,7852670,364,259) { link(Data,15271751:Stream,[(377,261)(209,261)]) } Add(HubEx,4490098,252,280) { link(onEvent,14940314:doStop,[]) } Add(GlobalVar,2606080,28,56) { Name="ERead" } Add(GlobalVar,13071240,21,210) { Name="EWrite" } END_SDK Add(HubEx,15453009,70,21) { link(onEvent,13760620:doData,[]) } Add(IntToBits,16519073,238,217) { Count=5 Data_0=Integer(0) Data_1=Integer(1) link(onBit1,11389347:doWork1,[(283,223)(283,195)]) link(onBit2,15386740:doWork1,[(289,230)(289,216)]) link(onBit3,5104613:doWork1,[]) link(onBit4,1620251:doWork1,[(289,244)(289,258)]) link(onBit5,1551734:doWork1,[(283,251)(283,279)]) } Add(Hub,1435078,483,245) { link(onEvent1,9898232:doVisible,[]) link(onEvent2,9898232:doMax,[]) } Add(Timer,1838464,28,119) { @Hint=#10:Start INIT| Interval=0 AutoStop=1 link(onTimer,457845:doData,[]) } Add(DoData,13760620,91,28) { @Hint=#29:0xAC - команда ProgrammEnable| Data=Integer(172) link(onEventData,11575534:doEvent1,[]) } Add(GetDataEx,13423696,343,98) { link(Data,3682242:Var,[]) } Add(If_else,8636507,189,56) { @Hint=#32:Контроль корректности результата|33:(не было останова при SPI обмене)| Type=4 Op2=Integer(0) link(onTrue,5405391:doEvent1,[]) link(Op1,7958662:Var,[]) } Add(DoData,12622129,301,63) { @Hint=#6:0x53A5| Data=Integer(21413) link(onEventData,4662786:doValue,[]) } Add(Message,3029968,413,126) { Message="command PROG_ENABLE have not response !!!" Caption="CARD - Error" Icon=1 link(onMessage,8152432:doWork2,[]) } Add(If_else,13621187,350,119) { @Hint=#4:0xA5| Op2=Integer(165) link(onTrue,895892:doOn,[]) link(onFalse,3029968:doMessage,[]) link(Op1,13423696:Var2,[]) } Add(GlobalVar,4662786,343,63) { Name="Address" } Add(HubEx,14321952,497,63) { link(onEvent,11608930:Transfer,[]) } Add(GlobalVar,7958662,189,28) { Name="Answ" } Add(Hub,11575534,140,28) { OutCount=5 link(onEvent1,7958662:doValue,[]) link(onEvent2,100656:doWork1,[(459,41)]) link(onEvent3,11608930:Init,[(478,48)(478,69)]) link(onEvent4,13449772:doWork1,[]) link(onEvent5,8636507:doCompare,[]) } Add(Hub,5405391,238,56) { OutCount=4 link(onEvent1,12569799:doValue,[(290,62)(290,34)]) link(onEvent2,12622129:doData,[]) link(onEvent3,14321952:doWork2,[]) link(onEvent4,9663965:doCompare,[(290,83)(290,125)]) } Add(Button,12116410,28,28) { @Hint=#14:кнопочка RESET| Left=230 Top=232 Width=40 TabOrder=-1 Font=[Arial,8,0,0,1] Caption="Reset" link(onClick,15453009:doWork2,[]) } Add(ChildPanel,5331495,532,112) { @Hint=#15:кнопочка DEVICE| link(onEvent1,14321952:doWork1,[(575,118)(575,48)(501,48)]) } BEGIN_SDK Add(EditMulti,6769800,3,3) { EventCount=1 WorkCount=1 Width=325 Height=186 link(doWork1,5918436:doWork2,[(3,153)]) } Add(Panel,8735311,21,14) { Left=21 Top=232 Width=105 Height=20 BorderWidth=0 BevelInner=0 BevelWidth=0 Point(doColor) } Add(GetDataEx,12917452,175,70) { link(Data,7958662:Var,[]) } Add(For,5386908,70,70) { End=2 onBreakEnable=0 Point(onBreak) link(onEvent,9191031:doEvent1,[]) link(onStop,12594257:doConvert,[(118,83)(118,139)]) link(onBreak,5918436:doWork1,[(109,90)]) } Add(InlineCode,10316224,231,91) { @Hint=#47:Принимаем байт с верхней точки Byte и вдвигаем |25:его результат Data справа| WorkPoints=#28:AddByte=Добавить байт справа| VarPoints=#3:Res| DataPoints=#25:Byte=Добавляемое значение| Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|9: private|17: FData:integer;|8: public|18: Byte:THI_Event;|50: procedure AddByte(var _Data:TData; Index:word);|46: procedure Res(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|30:procedure THiAsmClass.AddByte;|5:begin|53: FData := (FData shl 8) + ReadInteger(_Data,Byte,0);|4:end;|0:|26:procedure THiAsmClass.Res;|5:begin|30: _Data.data_type := data_int;|23: _Data.idata := FData;|13: FData := 0;|4:end;|0:|4:end.| link(Byte,12917452:Var3,[(237,79)]) } Add(GlobalVar,7958662,182,56) { Name="Answ" } Add(GlobalVar,11486766,231,14) { Name="Code" } Add(Hub,9191031,126,70) { OutCount=4 link(onEvent1,2197890:doData,[(166,76)(166,20)]) link(onEvent2,1918899:doValue,[(172,83)(172,41)]) link(onEvent3,6769800:onEvent1,[(328,90)]) link(onEvent4,12669728:doCompare,[]) } Add(If_else,12669728,182,91) { @Hint=#32:Контроль корректности результата|33:(не было останова при SPI обмене)| Type=4 Op2=Integer(0) link(onTrue,10316224:AddByte,[]) link(onFalse,5386908:doStop,[(223,104)(223,128)(63,128)(63,83)]) link(Op1,12917452:Var2,[]) } Add(DoData,2197890,182,14) { @Hint=#32:0x30 - команда ReadSignatureByte| Data=Integer(48) link(onEventData,11486766:doValue,[]) } Add(GlobalVar,1918899,231,35) { Name="Address" } Add(Label,15145004,287,133) { Left=45 Top=2 Width=55 Font=[Courier New,10,1,16711680,204] Caption="" AutoSize=1 Alignment=1 } Add(Convertor,12594257,231,133) { Mode=6 Digits=6 link(onResult,4194234:doWork2,[]) link(Data,10316224:Res,[]) } Add(Button,12116410,21,70) { Width=45 Align=1 TabOrder=-1 Font=[Arial,8,0,0,1] Caption="Device" link(onClick,5386908:doFor,[]) } Add(HubEx,4194234,273,126) { link(onEvent,15145004:doText,[]) } Add(DoData,10702784,182,147) { Data=String() link(onEventData,4194234:doWork3,[(277,153)]) } Add(HubEx,5918436,105,140) { link(onEvent,10702784:doData,[]) } Add(Icon,1116983,70,14) { @Hint=#5:#main| Icon=[ZIP5E07000078DA636060044209090610C9E0C1CEC020C6C0C0A001C4402106030688380828B0338C8251800A6EDDBA95473AC06ACE3C120191E640C4E16C38499239584D1854E6A0194267F7502B9C29897732C068FE1DE1E03F0EF080811D889989C2F800000DD16FBA] @IsLib=True } END_SDK Add(ChildPanel,13449772,413,49) { @Hint=#12:кнопочка RUN| link(onEvent1,100656:doWork2,[]) link(onEvent2,11608930:Run,[]) } BEGIN_SDK Add(EditMulti,6769800,3,3) { EventCount=2 WorkCount=1 Width=335 Height=148 link(doWork1,8636507:doCompare,[(3,41)]) } Add(Panel,8735311,21,49) { Left=276 Top=232 Width=35 Height=20 BorderWidth=0 BevelInner=0 BevelWidth=0 Point(doColor) } Add(Button,12116410,238,35) { Width=30 Align=5 TabOrder=-1 Font=[Arial,8,0,0,1] Enabled=1 Caption="Run" Data=Integer(0) Point(doEnabled) link(onClick,11311975:doEvent1,[]) } Add(Math,3351761,175,35) { OpType=1 Op1=1 ResultType=0 link(onResult,7166386:doWork2,[]) link(Op2,13235828:Var,[]) } Add(Hub,11311975,287,35) { OutCount=3 link(onEvent1,6769800:onEvent1,[(328,41)(328,9)]) link(onEvent2,6769800:onEvent2,[(338,48)]) link(onEvent3,14505771:doWork3,[(329,55)(329,84)(109,84)]) } Add(GlobalVar,7958662,63,7) { Name="Answ" } Add(If_else,8636507,63,35) { @Hint=#32:Контроль корректности результата|33:(не было останова при SPI обмене)| Type=4 Op2=Integer(0) link(onTrue,3351761:doOperation,[]) link(onFalse,14505771:doWork2,[]) link(Op1,7958662:Var,[]) } Add(HubEx,7166386,217,28) { link(onEvent,12116410:doEnabled,[]) } Add(DoData,3449693,126,42) { Data=Integer(0) link(onEventData,7166386:doWork3,[(221,48)]) } Add(HubEx,14505771,105,35) { link(onEvent,3449693:doData,[]) } Add(Icon,9578789,21,98) { @Hint=#5:#main| elink(1116983) } Add(GlobalVar,13235828,182,7) { Name="Mode" Data=Integer(1) } END_SDK Add(DoData,457845,91,119) { link(onEventData,16442953:doCheck,[]) link(Data,13235828:Var,[(97,109)(180,109)(180,159)(244,159)]) } Add(HubEx,100656,455,42) { link(onEvent,8152432:doWork1,[(466,55)]) } Add(HubEx,882187,420,238) { link(onEvent,1435078:doEvent1,[]) } Add(HubEx,97363,434,231) { link(onEvent,9898232:doPosition,[]) } Add(ChildGroupBox,11389347,301,189) { @Hint=#4:FUSE| link(onEvent1,184031:doWork1,[(410,195)]) } BEGIN_SDK Add(EditMulti,10361841,3,3) { EventCount=1 WorkCount=1 Width=627 Height=271 link(doWork1,6675238:doVisible,[(3,20)]) } Add(GroupBox,6675238,28,14) { Left=25 Top=37 Width=353 Height=175 Caption="" } Add(CheckBox,11371427,518,84) { Left=15 Top=150 Width=85 TabOrder=8 Hint="Select Reset Vector" Checked=0 Caption="BOOTRST" } Add(CheckBox,14725939,525,91) { Left=15 Top=130 Width=85 TabOrder=7 Hint="Select Boot Size" Caption="BOOTSZ0" } Add(CheckBox,1265050,532,98) { Left=15 Top=110 Width=85 TabOrder=6 Hint="Select Boot Size" Caption="BOOTSZ1" } Add(CheckBox,11141247,539,105) { Left=15 Top=90 Width=85 TabOrder=5 Hint="EEPROM memory is preserved" Checked=0 Caption="EESAVE" } Add(CheckBox,9125818,399,112) { Left=145 Top=150 Width=85 TabOrder=16 Hint="Select Clock source" Checked=0 Caption="CKSEL0" } Add(DoData,1481636,140,21) { @Hint=#27:0x58 - команда ReadFuseHigh| Data=Integer(88) link(onEventData,11486766:doValue,[]) } Add(If_else,13287046,287,112) { @Hint=#32:Контроль корректности результата|33:(не было останова при SPI обмене)| Type=4 Op2=Integer(0) link(onTrue,3003066:doBits,[]) link(Op1,4683012:Var1,[(293,72)]) } Add(GlobalVar,7958662,182,42) { Name="Answ" } Add(DoData,16242012,287,21) { @Hint=#26:0x50 - команда ReadFuseLow| Data=Integer(80) link(onEventData,2387491:doValue,[]) } Add(Hub,9191031,77,56) { OutCount=4 link(onEvent1,1481636:doData,[(116,62)(116,27)]) link(onEvent2,2197890:doData,[]) link(onEvent3,9151663:doWork2,[]) link(onEvent4,12669728:doCompare,[(116,83)(116,90)]) } Add(If_else,12669728,182,84) { @Hint=#32:Контроль корректности результата|33:(не было останова при SPI обмене)| Type=4 Op2=Integer(0) link(onTrue,5048974:doEvent1,[]) link(Op1,7958662:Var,[]) } Add(GlobalVar,2387491,336,21) { Name="Code" } Add(GlobalVar,1918899,196,63) { Name="Address" } Add(DoData,2197890,140,63) { @Hint=#5:0x800| Data=Integer(2048) link(onEventData,1918899:doValue,[]) } Add(Hub,5048974,224,84) { OutCount=5 link(onEvent1,5968008:doBits,[]) link(onEvent2,8779384:doValue,[]) link(onEvent3,16242012:doData,[(270,104)(270,27)]) link(onEvent4,15835245:doWork2,[]) link(onEvent5,13287046:doCompare,[]) } Add(GlobalVar,11486766,182,21) { Name="Code" } Add(HubEx,8758994,273,63) { link(onEvent,10361841:onEvent1,[(630,76)]) } Add(GlobalVar,6903516,336,42) { Name="Answ" } Add(Button,4748360,28,56) { Left=270 Top=15 Width=60 TabOrder=-1 Caption="Read" Data=Integer(0) link(onClick,9191031:doEvent1,[]) } Add(IntToBits,5968008,469,84) { Data_0=Integer(0) Data_1=Integer(1) link(Value,4683012:Var3,[(475,72)]) link(onBit1,11371427:doCheck,[]) link(onBit2,14725939:doCheck,[]) link(onBit3,1265050:doCheck,[]) link(onBit4,11141247:doCheck,[]) link(onBit5,2011127:doCheck,[]) link(onBit6,3717340:doCheck,[]) link(onBit7,7156379:doCheck,[]) link(onBit8,2200962:doCheck,[]) } Add(CheckBox,2011127,546,112) { Left=15 Top=70 Width=85 TabOrder=4 Hint="Oscillator options" Checked=0 Caption="CKOPT" } Add(CheckBox,3717340,553,119) { Left=15 Top=50 Width=85 TabOrder=3 Hint="Enable Serial Program and Data" Caption="SPIEN" } Add(CheckBox,7156379,560,126) { Left=15 Top=30 Width=85 TabOrder=2 Hint="WDT always on" Checked=0 Caption="WDTON" } Add(CheckBox,2200962,567,133) { Left=15 Top=10 Width=85 TabOrder=1 Hint="Select if PC6 is I/O pin or RESET pin" Checked=0 Caption="RSTDISBL" } Add(IntToBits,3003066,336,112) { Data_0=Integer(0) Data_1=Integer(1) link(Value,4683012:Var2,[]) link(onBit1,9125818:doCheck,[]) link(onBit2,9925660:doCheck,[]) link(onBit3,7375440:doCheck,[]) link(onBit4,15300972:doCheck,[]) link(onBit5,10546946:doCheck,[]) link(onBit6,12170608:doCheck,[]) link(onBit7,1927081:doCheck,[]) link(onBit8,8998189:doCheck,[]) } Add(CheckBox,9925660,406,119) { Left=145 Top=130 Width=85 TabOrder=15 Hint="Select Clock source" Caption="CKSEL1" } Add(CheckBox,7375440,413,126) { Left=145 Top=110 Width=85 TabOrder=14 Hint="Select Clock source" Caption="CKSEL2" } Add(CheckBox,15300972,420,133) { Left=145 Top=90 Width=85 TabOrder=13 Hint="Select Clock source" Caption="CKSEL3" } Add(CheckBox,10546946,427,140) { Left=145 Top=70 Width=85 TabOrder=12 Hint="Select start-up time" Caption="SUT0" } Add(CheckBox,12170608,434,147) { Left=145 Top=50 Width=85 TabOrder=11 Hint="Select start-up time" Checked=0 Caption="SUT1" } Add(CheckBox,1927081,441,154) { Left=145 Top=30 Width=85 TabOrder=10 Hint="Brown out detector enable" Checked=0 Caption="BODEN" } Add(CheckBox,8998189,448,161) { Left=145 Top=10 Width=85 TabOrder=9 Hint="Brown out detector trigger level" Checked=0 Caption="BODLEVEL" } Add(GlobalVar,8779384,308,91) { Name="Address" } Add(GetDataEx,4683012,329,63) { link(Data,6903516:Var,[]) } Add(BitsToInt,16005346,518,182) { Count=8 link(onNumber,8094781:doValue,[]) link(Bit1,11371427:Checked,[]) link(Bit2,14725939:Checked,[]) link(Bit3,1265050:Checked,[]) link(Bit4,11141247:Checked,[]) link(Bit5,2011127:Checked,[]) link(Bit6,3717340:Checked,[]) link(Bit7,7156379:Checked,[]) link(Bit8,2200962:Checked,[]) } Add(BitsToInt,10441131,399,210) { Count=8 link(onNumber,14755107:doValue,[]) link(Bit1,9125818:Checked,[]) link(Bit2,9925660:Checked,[]) link(Bit3,7375440:Checked,[]) link(Bit4,15300972:Checked,[]) link(Bit5,10546946:Checked,[]) link(Bit6,12170608:Checked,[]) link(Bit7,1927081:Checked,[]) link(Bit8,8998189:Checked,[]) } Add(GlobalVar,8094781,588,182) { Name="Data" } Add(GlobalVar,14755107,469,210) { Name="Data" } Add(Button,7194295,28,105) { Left=270 Top=45 Width=60 TabOrder=-1 Caption="Write" link(onClick,7168833:doMessage,[]) } Add(HubEx,15835245,266,98) { link(onEvent,8758994:doWork3,[(277,111)]) } Add(GlobalVar,14750498,182,154) { Name="Answ" } Add(Hub,9975802,77,168) { OutCount=5 link(onEvent1,2926910:doData,[(131,174)(131,139)]) link(onEvent2,9728323:doData,[]) link(onEvent3,16005346:doNumber,[]) link(onEvent4,9151663:doWork3,[(123,195)]) link(onEvent5,6261249:doCompare,[]) } Add(If_else,6261249,182,196) { @Hint=#32:Контроль корректности результата|33:(не было останова при SPI обмене)| Type=4 Op2=Integer(0) link(onTrue,6182381:doEvent1,[]) link(Op1,14750498:Var,[]) } Add(GlobalVar,11302166,196,175) { Name="Address" } Add(DoData,9728323,140,175) { @Hint=#6:0xA800| Data=Integer(43008) link(onEventData,11302166:doValue,[]) } Add(GlobalVar,3565050,182,133) { Name="Code" } Add(HubEx,9151663,119,63) { link(onEvent,8758994:doWork2,[]) } Add(GlobalVar,6827164,329,203) { Name="Address" } Add(DoData,8158389,287,203) { @Hint=#6:0xA000| Data=Integer(40960) link(onEventData,6827164:doValue,[]) } Add(Hub,6182381,224,196) { OutCount=5 link(onEvent1,5113887:doWork1,[(277,202)]) link(onEvent2,8158389:doData,[]) link(onEvent3,10441131:doNumber,[]) link(onEvent4,15835245:doWork3,[(270,223)]) link(onEvent5,5113887:doWork2,[]) } Add(Sleep,13471379,336,224) { Delay=20000 } Add(HubEx,5113887,273,217) { link(onEvent,13471379:doSleepMks,[]) } Add(Message,7168833,77,105) { Message="ВНИМАНИЕ !!!\n\rДанные FUSE-битов будут перезаписаны" Caption="Confirmation" Type=1 Icon=5 link(onMessage,13108528:doCase,[(116,111)(116,146)(18,146)(18,167)]) } Add(Case,13108528,28,161) { Value=Integer(1) link(onTrue,9975802:doEvent1,[]) } Add(DoData,2926910,140,133) { @Hint=#24:0xAC - команда WriteFuse| Data=Integer(172) link(onEventData,3565050:doValue,[]) } END_SDK Add(GVarContainer,12873952,91,217) { Section="Options" FilleName="Prog_1.ini" VarList=#4:Mode|5:ERead|6:EWrite|5:FRead|6:FWrite| } Add(StyleXP,16277615,532,168) { } Add(Hub,5681465,189,119) { link(onEvent1,13235828:doValue,[]) link(onEvent2,15453009:doWork3,[(229,132)(229,97)(74,97)]) } Add(HubEx,8152432,462,119) { link(onEvent,895892:doOff,[]) } Add(ProgressBar,9898232,532,238) { Left=15 Top=231 Width=375 Height=21 Ctl3D=1 Visible=1 Max=4096 Smooth=1 ProgressColor=32768 Point(doVisible) Point(doMax) }