亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? touchpanel.pas

?? Modbus code found on web. Not mine! Credit goes to the developers (see inside code)
?? PAS
字號:
///////////////////////////////////////////////////////////////////////////////////////
//                                                                                   //
// AvrCo demo project for C-More Micro touch panel (model EA1-S3ML)                  //
// You need to download associated project ModbusAVR.mgp to C-More Micro touch panel //
// MODBUS RTU communication is used to monitor and control AVR with this touch panel //
//                                                                                   //
// Zeljko Avramovic (c) 2007, avra at writeme dot com                                //
// Source is free for any use, but you take full responsibility for using it         //
//                                                                                   //
///////////////////////////////////////////////////////////////////////////////////////

program TouchPanel;

{ $BOOTRST $0F000}         {Reset Jump to $0F000}
{ $WG}                     {global Warnings off}

Device = mega128, VCC=5;

Import SysTick, SerPort, LCDport, BeepPort, Watchdog, Modbus;
From System  Import LongWord, LongInt, Float, Processes, Pipes;
From SysTick Import SystemTime32;

Define
  ProcClock      = 16000000;
  SysTick        = 10;
  StackSize      = $0100, iData;
  FrameSize      = $0100, iData;
  Scheduler      = iData;
  SerPort        = 38400, Databit8, parEven, Stop1;
  RxBuffer       = 10, iData;
  TxBuffer       = 64, iData;
  ModBus         = SerPort, 40, iData, 240;
  ModBusMode     = RTU, Timer3;
  LCDport        = PortA;  // LCD is needed just for your
  LCDtype        = 44780;  // better understanding.
  LCDrows        = 2;      // You don't need it really
  LCDcolumns     = 16;     // for this demo to work.
  BeepPort       = PortG, 4;
  WatchDog       = msec1000;
  
uses
  ModBusServRTU;

Implementation

const
  ON: char  = #6;
  OFF: char = #5;

{$IDATA}
type
  tPanelKey           = (F1=0, F2=1, F3=2, F4=3, F5=4, ESC=8, MENU=9, CLR=10, ENT=11,
                         LEFT_ARROW=12, RIGHT_ARROW=13, UP_ARROW=14, DOWN_ARROW=15);
  tSwitchesAndButtons = (SW1=0, SW2=1, SW3=2, SW4=3, SW5=4, SW6=5, SW7=6, SW8=7,
                         BT1=8, BT2=9, BT3=10, BT4=11, BT5=12, BT6=13, BT7=14, BT8=15);
  tSwitchAndButtonSet = BitSet of tSwitchesAndButtons;
  
var
  i: byte;
  scans: longword;
  Previous: boolean;
  SecTimer: SysTimer;
  LcdRow1, LcdRow2: string[16];
  
  {$MODBUS ModbusBuffer}
  MB[@ModDPR] : record                                        // word byte
                  Alarms            : mb_InpW;                // [00] 00..01
                  DummyWord0        : mb_InpW;                // [01] 02..03
                  DummyByte0        : mb_RdWrB;               // [02] 04     this is lo(ModDPR[2])
                  DummyByte1        : mb_RdWrB;               // [02] 05     this is hi(ModDPR[2])
                  CmoreScreenJump   : mb_RdWrW;               // [03] 06..07 set shown screen number
                  CmoreBeep         : mb_RdWrW;               // [04] 08..09 enable/disable and set beeper
                  CmoreColor        : mb_RdWrW;               // [05] 10..11 change background color
                  DummyString0      : array[0..1] of char;    // [06] 12..13 only multiple of 2 possible, always R/W
                  MultiStateMsg     : mb_InpW;                // [07] 14..15 what message to show on screen 5
                  ScansPerSecond    : mb_InpW32;              // [08] 16..19 calculated AVR speed
                  VersionText       : array[1..10] of char;   // [10] 20..29
                  DummyWord1        : mb_InpW;                // [15] 30..31
                  DummyWord2        : mb_InpW;                // [16] 32..33
                  DummyWord3        : mb_InpW;                // [17] 34..35
                  DummyWord4        : mb_InpW;                // [18] 36..37
                  DummyWord5        : mb_InpW;                // [19] 38..39
                  FloatEdit         : mb_InpF;                // [20] 40..43
                  IntegerEdit       : mb_InpI;                // [22] 44..45 visual bar graph like editor
                  CmoreScreenNumber : mb_InpW;                // [23] 46..47 current screen number
                  CmoreKeyPressed1  : mb_InpW;                // [24] 48..49 pressed key from keyset 1
                  CmoreKeyPressed2  : mb_InpW;                // [25] 50..51 pressed key from keyset 2
                  DummyWord6        : mb_InpW;                // [26] 52..53
                  Switches          : tSwitchAndButtonSet;    // [27] 54..55
                  DummyLong0        : mb_InpW32;              // [28] 56..59
                  DummyLong1        : mb_InpW32;              // [30] 60..63
                  DummyLong2        : mb_RdWrW32;             // [32] 64..67
                  DummyLong3        : mb_RdWrW32;             // [34] 68..71
                  DummyWord7        : mb_RdWrW;               // [36] 72..73
                  DummyWord8        : mb_RdWrW;               // [37] 74..75
                  DummyLong4        : mb_RdWrW32;             // [38] 76..79
                end;

  PanelKey    [@MB.CmoreKeyPressed1]: tPanelKey;
  FloatHex    [@MB.FloatEdit]: LongWord;
  PushButtons [@MB.Switches+1]: Byte;

  // There is no official MODBUS standard if numbers are zero-based or one-based. Comunication is
  // always zero-based, but addressing in user interface for specific device may be zero or one-based.
  // Some devices (like C-More) use one-based (just in user interface!), so everything seams shifted
  // compared to AvrCo (bits and words). Do not let this confuse you. That's the way it is. :-(

procedure Init;
begin
  DDRA := %11111111;
  PortA := 0;
  DDRD := 255;
  PortD := 255;

  // User defined characters for displaying ON/OFF bits
  LCDCharSet(OFF, $1F, $11, $11, $11, $11, $11, $11, $1F);
  LCDCharSet(ON,  $1F, $1F, $1F, $1F, $1F, $1F, $1F, $1F);

  // Init MODBUS tags
  Setbit(MB.CmoreBeep.15, 1); // enable Cmore beeper
  Incl(MB.Switches, [SW5]);   // set ON first radio button in screen 4
  MB.VersionText := StrToArr('AVR Str!'); // It's up to you to make sure there are <= 9 chars! (10 chars array - 1 for zero terminator)
  MB.FloatEdit := 283.14;
end;


procedure mb_BeforeCoilWrite(CoilNumber: word; var NewValue: boolean);
begin  // MODBUS driver callback function
  if ValueInRange(CoilNumber, 436, 439) then // only for 4 radio buttons
    Excl(MB.Switches, [SW5]);
    Excl(MB.Switches, [SW6]);
    Excl(MB.Switches, [SW7]);
    Excl(MB.Switches, [SW8]);
  endif;
end;


procedure RefreshLCD;
begin
  LCDClr;
  LCDxy(0,0);

  case MB.CmoreScreenNumber of
    1:    LcdRow1 := 'Alarms=';
          for i := 0 to 4 do
            if Bit(MB.Alarms, i) then
              LcdRow1 := LcdRow1 + Char(ON);
            else
              LcdRow1 := LcdRow1 + Char(OFF);
            endif;
          endfor;
          if Bit(MB.Alarms, 2) then
            LcdRow2 := 'Critical alarm!';
          elsif Bit(MB.Alarms, 4) then
            LcdRow2 := 'Tick alarm!';
          else
            LcdRow2 := '';
          endif;|
    2:    LcdRow1 := 'Scans='  + LongToStr(MB.ScansPerSecond);
          LcdRow2 := 'String=' + ArrToStr(MB.VersionText);| // if alarm5 is on then string will be shown on C-More display
    3:    LcdRow1 := 'Alarms=' + ByteToBin(Lo(MB.Alarms)); // editable on C-More
          LcdRow2 := 'Float='  + FloatToStr(MB.FloatEdit:7:2);| // editable on C-More
    4:    LcdRow1 := 'Switch=' + ByteToBin(LoNibble(Lo(MB.Switches))); // set in C-More
          LcdRow2 := 'Radio='  + ByteToBin(HiNibble(Lo(MB.Switches)));| // set in C-More
    5:    LcdRow1 := 'Pushbuttons= '; // set in C-More
          for i := 0 to 2 do
            if Bit(PushButtons, i) then
              LcdRow1 := LcdRow1 + Char(ON);
            else
              LcdRow1 := LcdRow1 + Char(OFF);
            endif;
          endfor;
          LcdRow2 := 'IncMsgPush3=' + IntToStr(MB.MultiStateMsg);| // incremented on each PUSH3 button press
  endcase;
  //LcdRow2 := 'Key=' + IntToStr(MB.CmoreKeyPressed1:5:0); // you can monitor C-More buttons

  Write(LCDout, LcdRow1);
  LCDxy(0,1);
  Write(LCDout, LcdRow2);
end;


process Work(16, 16: iData);
begin
  MB.IntegerEdit := ValueTrimLimit(MB.IntegerEdit, 0, 5); // C-More can increment it more then we would like
  MB.Alarms := 1 Rol (Byte(MB.IntegerEdit) - 1);
  
  if (not Previous) and PushButtons.2 then
    Previous := true;
    MB.MultiStateMsg := (MB.MultiStateMsg + 1) mod 4;
  endif;

  if Previous and (not PushButtons.2) then
    Previous := false;
  endif;
  
  Schedule;
end;

{--------------------------------------------------------------}
{ Main Program }
{$IDATA}
begin
  Init;
  mb_SetBeforeCoilWrite(@mb_BeforeCoilWrite); // initialize user's MODBUS event and enable it
  Start_Processes;
  
  loop
    Inc(scans);
    if isSysTimerZero(SecTimer) then
      SetSysTimer(SecTimer, 1000 div SysTick); // 1 second
      MB.ScansPerSecond := scans;
      RefreshLCD;
      scans := 0;
      if Bit(MB.Alarms, 4) then
        BeepClick;
      endif;
    endif;
    WatchDogTrig;
  endloop;
end TouchPanel.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀av性久久久久蜜臀aⅴ流畅 | 一区二区三区在线视频播放| 亚洲永久免费av| 国产成人一区在线| 欧美一区二区三区在| 亚洲精品伦理在线| 国产精品自拍网站| 3d成人h动漫网站入口| 国产无遮挡一区二区三区毛片日本| 欧美日韩视频在线一区二区 | 激情五月婷婷综合| 菠萝蜜视频在线观看一区| 91精品国产色综合久久不卡电影| 国产精品伦理在线| 久久99久久久欧美国产| 欧美体内she精高潮| 国产精品色一区二区三区| 九色|91porny| 日韩欧美123| 亚洲18色成人| 欧美色区777第一页| 亚洲乱码中文字幕| 97se亚洲国产综合自在线不卡| 26uuu色噜噜精品一区二区| 日韩高清不卡在线| 欧美老肥妇做.爰bbww| 亚洲大片在线观看| 欧洲一区二区三区免费视频| 国产精品天天看| 成人久久视频在线观看| 国产婷婷色一区二区三区| 国产精品69毛片高清亚洲| 精品久久久久久久久久久久久久久 | 亚洲欧美在线aaa| 99精品在线免费| 综合久久久久久久| 91婷婷韩国欧美一区二区| 亚洲欧美日韩在线不卡| 色天天综合久久久久综合片| 夜夜精品浪潮av一区二区三区 | 岛国精品在线播放| 国产精品美女一区二区| av不卡在线播放| 亚洲精品日产精品乱码不卡| 欧美体内she精高潮| 日韩有码一区二区三区| 日韩一级二级三级精品视频| 精品一二三四区| 国产免费久久精品| 91搞黄在线观看| 捆绑调教一区二区三区| 国产日韩精品一区二区三区| 99久久精品国产精品久久| 亚洲国产日韩精品| 日韩精品在线网站| 成人免费毛片a| 亚洲伊人色欲综合网| 日韩欧美在线一区二区三区| 国产成+人+日韩+欧美+亚洲| 亚洲乱码中文字幕| 日韩欧美一级在线播放| 国产99久久久国产精品潘金网站| 一区二区三区四区不卡视频| 欧美精品久久99久久在免费线| 国产一区 二区 三区一级| 成人欧美一区二区三区1314| 欧美日韩极品在线观看一区| 国产一区二区三区精品欧美日韩一区二区三区 | 99久久精品情趣| 午夜国产不卡在线观看视频| 精品国产免费人成电影在线观看四季| 国产成人啪午夜精品网站男同| 亚洲综合免费观看高清完整版 | 国内精品写真在线观看| 最新热久久免费视频| 欧美一区二区在线视频| 成人精品免费视频| 日本va欧美va精品发布| 自拍偷拍欧美激情| 精品国产欧美一区二区| 欧美在线免费播放| 成人午夜av电影| 欧美aaa在线| 一区二区三区毛片| 亚洲国产精品传媒在线观看| 91麻豆精品91久久久久久清纯 | 亚洲制服欧美中文字幕中文字幕| 精品少妇一区二区三区在线视频| 色噜噜夜夜夜综合网| 国产一区二区三区四| 亚洲h在线观看| 亚洲人吸女人奶水| 国产人成亚洲第一网站在线播放| 91精品国产综合久久小美女| 91女人视频在线观看| 成人综合在线观看| 国产美女在线精品| 狠狠色丁香久久婷婷综合_中| 亚洲成人激情自拍| 伊人婷婷欧美激情| 国产精品国产三级国产aⅴ中文| 欧美成人高清电影在线| 欧美一级二级在线观看| 欧美日韩大陆在线| 在线一区二区三区四区| 91猫先生在线| 99天天综合性| 一本色道**综合亚洲精品蜜桃冫| av网站免费线看精品| 成人性生交大片免费看视频在线| 国产精品一区二区三区乱码| 国产麻豆视频一区| 国产激情91久久精品导航| 国产精品一级在线| 国产高清精品网站| 成人一区在线看| 成人免费毛片aaaaa**| 99国产精品国产精品久久| 成人av电影免费观看| www.欧美日韩国产在线| 91久久精品一区二区三区| 欧美色综合影院| 在线成人免费视频| 在线电影一区二区三区| 精品日韩欧美在线| 日本一区二区三区视频视频| 国产精品无圣光一区二区| 亚洲三级免费电影| 亚洲国产日韩综合久久精品| 日韩精品一卡二卡三卡四卡无卡| 日韩在线播放一区二区| 国产一区美女在线| 国产盗摄视频一区二区三区| av中文字幕亚洲| 91极品视觉盛宴| 日韩欧美一区中文| 国产欧美综合在线观看第十页| 国产精品美女一区二区三区| 亚洲精品第一国产综合野| 日韩激情视频网站| 国产在线精品国自产拍免费| 成人黄色综合网站| 欧美日韩一区高清| 久久影院午夜论| 亚洲免费视频成人| 美女精品一区二区| 99久久伊人精品| 7777精品伊人久久久大香线蕉超级流畅| 日韩亚洲国产中文字幕欧美| 欧美激情一区二区三区四区| 夜夜爽夜夜爽精品视频| 精品一区二区在线看| 91影院在线免费观看| 欧美一二区视频| 国产精品国模大尺度视频| 视频一区国产视频| 国产**成人网毛片九色| 欧美精品123区| 国产精品人人做人人爽人人添| 五月天丁香久久| 成人国产亚洲欧美成人综合网| 欧美日本在线视频| 国产精品成人免费在线| 欧美aaa在线| 在线观看一区不卡| 国产清纯白嫩初高生在线观看91 | 欧美久久一二区| 国产精品私房写真福利视频| 日本成人在线看| 91免费小视频| 久久先锋资源网| 日本强好片久久久久久aaa| 99re在线精品| 国产亚洲精品免费| 久久91精品国产91久久小草| 在线观看av一区二区| 国产精品萝li| 国产一区二区日韩精品| 日韩欧美一级片| 日本vs亚洲vs韩国一区三区二区| 在线免费观看成人短视频| 国产精品不卡一区| 国产一区二区免费看| 欧美一区二区三区在线电影| 亚洲综合在线视频| 91在线丨porny丨国产| 欧美国产丝袜视频| 国产乱子伦视频一区二区三区| 日韩午夜中文字幕| 日本亚洲最大的色成网站www| 91高清在线观看| 亚洲综合一二三区| 一本大道久久a久久精品综合| 国产精品视频yy9299一区| 国产精品中文有码| 久久精品视频在线免费观看| 精品一区二区在线播放| 2020日本不卡一区二区视频| 国产永久精品大片wwwapp| 2022国产精品视频|