VERSION0/TPF0TVersionnumberdetails Version 276 PRJFILEHEADER0TPF0TPrjFileHeaderZpercnt@ZordxZordy Targetfilei2ckp1.c Targetpath&C:\myfiles\microchip\projects\ai2ckp1\ Templatefile)C:\WINDOWS\Desktop\picexp\templates\c.txt Targetdevice PIC16F872 TargetMimicDEFAULT Targetclock PaletteCountSciCount Notes.Strings{\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fswiss\fprq2 Arial;}{\f3\fswiss Arial;}{\f4\fswiss Arial;}{\f5\fmodern\fprq1 Courier New;}{\f6\fswiss\fprq2 System;}}{\colortbl\red0\green0\blue0;}.\deflang2057\pard\plain\f2\fs20\b Introduction\par \plain\f2\fs20 This turnkey project demonstrates an I2C 'QWERTY' keypad using the 'QWERTY 36-Keypad' sub-circuit. LED's and a 'new key' output show the status of the keypad.\par 6\par The target device is a PIC16F872 running at 10MHz\par X\par The keypad is based on the Storm 700 series rugged 36-keypad (RS Stock no. 198-292)\par \plain\f2\fs20\b \par Operation `\par \plain\f2\fs20 The keypad is scanned at regular intervals by calls made from the timer tick routine RTCC_ISR. When a key is pressed its ASCII value is stored in the shared I2CSLRAM slave ram sub-circuit at address location 0x00. In addition, the NEWKEY_PORT is set high and the NEWKEY_LED is switched on indicating the presence of a new key press.\par Q\par The master I2C device can determine the presence of a new key press by either polling location 0x00 of the I2CSLRAM for a non- zero ASCII character, or, by monitoring the NEWKEY_PORT output for a high state. The master reads the new-key press ASCII value from location 0x00, this also clears location 0x00, clears NEWKEY_PORT to low and switches off NEWKEY_LED. Subsequent reads from 0x00 result in zero until a new key is pressed. The master can get the currently pressed key by reading from I2CSLRAM location 0x01, similarly, capitals lock status is determined by reading location 0x02.\par @\par The following summarise the functions of the I2CSLRAM data:\par -\par \plain\f2\fs20\ul I2CSLRAM Address 0x00 "\par \plain\f2\fs20 New ASCII key.\par \par Reading this location returns the ASCII value of the new key. A value of zero means no new key pressed. In addition a read also clears this location to zero and resets NEWKEY_PORT output to low.\par W\par A returned value of 0xFF indicates I2C device not present or device not reponding.\par \par <\par \plain\f2\fs20\ul I2CSLRAM Address 0x01\plain\f2\fs20 \par Current pressed ASCII key.\par m\par Reading this location returns the current pressed ASCII key value. A value of zero means no key pressed.\par -\par \plain\f2\fs20\ul I2CSLRAM Address 0x02 )\par \plain\f2\fs20 Capitals lock status.\par \par Reading the location returns the capitals lock status. A value of zero means caps lock is off, a value of one means caps lock is on.\par ,\par \plain\f2\fs20\ul I2CSLRAM Address 0x03\\par \plain\f2\fs20 This location is not used but may be read and written for test purposes.\par \par  \par Example:#\par Pseudo code for reading keypad\par Z\par \pard\li360\fi-360\tx360\plain\f2\fs20 1.\tab If NEWKEY_PORT high continue, else goto'\par 2.\tab Read I2CSLRAM location 0x00+\par 3.\tab If value is equal to 0xFF goto 7\par 4.\tab Write x position 10 to I2C RAM address 0x057\par 5.\tab Write y position 20 to I2C RAM address 0x069\par 6.\tab Write pixel command 9 to I2C RAM address 0x07\par 7.\tab End\par \pard\plain\f2\fs20 \par The I2C family address has been set at design time to 10 and the device address is set by the '3-bit port' ADD_. Assuming the inputs to ADD_ are tied to ground then the I2C address resolves to 0xA0.\par \par &\par \plain\f2\fs20\b Application code \par \plain\f2\fs20 Below is the application code for this project. To use it, select and copy (ctr-insert) the code below and past it into a text editor and save as a 'C' file in your working directory. You may also need to change the build output path using 'Project | Options'\par \plain\f4\fs20 [\par \plain\f5\fs16 ///////////////////////////////////////////////////////////////////////L\par //// AI2CKP1.C ////L\par //// ////L\par //// This project demostrates the 'QWERTY 36-keypad' sub-circuit ////L\par //// with I2C interface. ////L\par //// ////L\par //// This program is an example of how your application code is ////L\par //// is organised. Note the #include "i2ckp1.c", this include ////L\par //// file was generated by QuickBuilder and contains all ////L\par //// driver code. ////L\par //// ////L\par //// This demo is intended for a PIC16F872 ////L\par //// Compile using CCS 'C' visit www.quickbuilder.co.uk/qb/ccs ////L\par ///////////////////////////////////////////////////////////////////////\par #include <16f872.H>\par ,\par #fuses hs,wdt,noprotect,put,nowrt,nolvp\par  \par #case\par \par #define PORTA 5 \par #define PORTB 6\par #define PORTC 7\par #define TRISA 0x85 \par #define TRISB 0x86\par #define TRISC 0x87\par \par #include "i2ckp1.c"\par \par \par #int_rtcc \par void RTCC_ISR()\par \{)\par QWERTY_1DO(); // scans keypad\par \}\par \par \par main() \{\par BYTE key;\par \par \par // initialise\par //------------\par INIT_SUB_CIRCUITS(); \par $\par // watch dog and timer tick\par restart_wdt();\par 2\par setup_counters(RTCC_INTERNAL,RTCC_DIV_4);'\par enable_interrupts(INT_TIMER0);%\par setup_adc_ports(NO_ANALOGS);\par "\par // set i2c device address)\par I2CSLRAM_1SETDADD( ADD_READ() );#\par enable_interrupts(GLOBAL);\par  \par // set up keypad status-\par NEWKEY_PORT_WRITE(0); // no newkey2\par NEWKEY_LED_OFF(); // newkey led oFF\par \par \par // main loop\par //----------\par while(1) \{3\par // upadte I2CSLRAM with key press data3\par //------------------------------------K\par key = QWERTY_1NEWKEY(); // I2C REG0: new key press\par if ( key ) \{)\par I2CSLRAM_1DATA[0] = key;C\par NEWKEY_PORT_WRITE(1); // set newkey lineA\par NEWKEY_LED_ON(); // newkey led on\par \}\par O\par I2CSLRAM_1DATA[1] = QWERTY_1KEY(); // I2C REG1: current key press\par O\par if ( QWERTY_1CAPS() ) \{ // I2C REG2: caps lock status(\par I2CSLRAM_1DATA[2] == 1;\par CAPS_LED_ON();\par \} else \{(\par I2CSLRAM_1DATA[2] == 0; \par CAPS_LED_OFF();\par \}\par \par // service i2c\par //------------\par I2CSLRAM_1DO(); \par %\par // monitor i2c for readsF\par if ( I2CSLRAM_1UPDATE == 1) \{ // i2c has been readE\par I2CSLRAM_1UPDATE = 0; // clear update flagG\par if ( I2CSLRAM_1ADDR == 0 ) \{ // reg0 has been readQ\par I2CSLRAM_1DATA[0] = 0; // I2C REG0: clear new key press\par F\par NEWKEY_PORT_WRITE(0); // clear new key lineC\par NEWKEY_LED_OFF(); // new key led off\par \}\par \} \par  \par // service watchdog!\par //------------------.\par restart_wdt(); // reset watch dog \par \}\par \}\plain\f2\fs20 \par \par \par \plain\f4\fs20 \par }TitleI2C QWERTY 36-KeypadKeywordsI2C;qwerty;keypad;turnkey AltTemplate SCGENERIC0tTPF0 tScGenericLibName0C:\Program Files\QuickBuilder\\data\c_sample.libcctnameRS232 Tranceiver description$RS232 serial tranceiver using MAX232keywordsRS232;Tranceiver;MAX232ScTypeiocountrefnameRS232_CctAsMetafile.Data ppX.)PT3 EMFp X   XX  ``K@0 qiqi& % 6% ( & % 6% (  RL<Arial{% T`].m7= @= @aLTVCC%&% (   & % 6 % (    & % 6< % (    & % 6 % (   0 & % 60 % (     & % '% +m   % (  % (   $ & % % 6l $ % (  RL<Arial8 h P 8 % ( % (  8 & % % 6xP % (   % TTlu= @= @ LP1% (   & % 6 % (  RL<Arial% 6l ` %( % Tx= @= @ L\T1 [??]((((((%% T`.:= @= @ LTRXi% % ( RL<Arial(   & % % 6x % (    & % 6x % % TXJQ= @= @L LP13% (   & % 6 % (  RL<Arial% Tx= @= @m L\T2 [??]((((((% (  xP & % % T`,:= @= @ LTRXo&% ( RL<Arial % 6 %     & % 6 % (   &$%  % TXJQ= @= @L LP12% (  P & % 6P % (  RL<Arial% T`/:= @= @ 1 LTTXi % ( RL<Arial{{{{% TXJQ= @= @L LP11% (   & % 6 % (  RL<Arial{{{{i% TXJQ= @= @LM LP10% (   & % 6 % (  RL<Arialb\default.htt% TTJM= @= @L LP9% (   & % 6 % (  RL<Arialfolder.htt% T`-:= @= @ } LTTXo % ( RL<Arial Q|Q:i+00#C:\1&.Windows1&DesktopDESKTOP1H+picexpPICEXP Q<Qh+&klibsourceLIBS~11W,,SerialSERIAL"2pV,u rs232.emfRS232.E!% TXJQ= @= @L] LP14% (  ` & % 6` % (  RL<ArialpDESKTOP1H+picexpPICEXP!1h+&kbsourceLIBSOU~11W,,SerialSERIAL8'QO :i+00#C:\1&.Windows1&DesktopDESKTOP1H+picexpPICEXP!1h+,% T`){:= @= @ A LTGND&%&% ( RL<Arial% TXJvQ= @= @L! LP15% (   ` & % 6l ` % (  RL<Arial% TTv= @= @ ! LP2% (    & % 6l  % (  RL<Arial% TT= @= @ LP5% (   P & % 6l P % (  RL<Arial{{{{% TT= @= @  LP6% (   & % 6l % (  RL<Arial{{{{% TT= @= @ M LP7% (   & % 6l % (  RL<Arial{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{% TT= @= @ LP8% (   & % 6l % (  RL<Arial% TT= @= @ LP4% (   & % 6l % (  RL<Arial% TT= @= @ ] LP3% (  $ & % 6$ % (  RL<Arial% T`*q:z= @= @  LTVCC%&% ( RL<Arial% TXJlQu= @= @LLP16% ( RLZArial% Tp^$k= @= @g LXMAX23222+&%&% (    & % '% +  Z % (  % (    & % '% +Z s Z % (  % (  \ $ & % % 6P $ % (    $ & % 6 $ % (   z  & % 6\ % (   z $ & % 6\  % (   z B & % 6\ $ % (   z ` & % 6\ B % (    $ & % 6 $ % (    $ & % 6P $ % (  RL<Arial{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{% T`ir= @= @ LT1uF% (    & % '% +Z  s % (  % (    & % '% +  % (  % (   P & % % 6 P % (   \ P & % 6P P % (    2 & % 6  % (    P & % 6 2 % (    n & % 6 P % (    & % 6 n % (    P & % 6P P % (    P & % 6 P % (  RL<Arial  & % 6 % (    & 6< % (  % T`= @= @ r LT1uF% (    & % '% +A % (  % (    & % '% +A  / % (  % (  | 4 & % % 6| @ % (   | & % 6| % (     & % 6 4 % (   |  & % 6 4 % (   ^  & % 6| 4 % (   @  & % 6^ 4 % (   | & % 6| % (   | | & % 6| @ % (  RL<Arial ( RL<Arial(   & % % 6x% (   % T`= @= @ LT1uF% (    & % '% +  l% (  % (    & % '% +  l% (  % (   4& % % 6 4% (    4& % 6 4% (    R& % 6 p% (    4& % 6 R% (    & % 6 4% (    & % 6 % (   \ 4& % 6 4% (   l 4& % 6 4% (  RL<Arial% T`/:@= @ 1 LTTXi% T`>G= @= @I LT1uF% (    & % '% *(:% (  % (    & % '% *m  % (  % (    & % '% *I o4 % (  % (  F$ & % % 6$ % (  RL<Arial TXJQ= @= @LM LP10% (   & %6 % (  R% Tpqz= @= @ LXTX_OUT %&% (    & % '% *I o % (  % (  F & % % 6 % (  RL<ArialRL<Arifolder.htt% Tl= @= @} LXRX_IN@& &% (  X &$% 6 % (     & % 'z% V,X X v X % (  % ( % RL<ArialQ= @= @L] LP14% (  ` & % 6% (  RL<TO% T= @= @ LlTARGET ________0 %& % (    & % 'z% V,8 h P 8 % (  % (  8 & % % 6xP % (   h & % 6xP % (  RL<Arial% TXJvQ@= @L! LP15% (   ` &% 6l ` % ( % T= @= @ LdT1 ________ % (    & % 'z% V,    % (  % (   & % % 6x % (    & % 6x % (  RL<Arial TT= @= @ L% T= @= @m LdT2 ________ % (  xP & % 6P % (   P & % 6 % (   x & % 6 % (    & % 6 % (   &$% W$  % (   & % W$vv $  $ % (   & % W,v $  $ % (   & % W, P  P % (   & % W(     P % (   & % W( P | P | % (   & % W,P ` | ` | 4l 4% (   & % W$fFfP4% (   & % W(SPfv$ $ 4% (   & % W$#PfP\ 44% (   & % W$ff | % (   & % W(Sf` ` | % (   & % W0f| | | | | % (   & % W,Sv < <$ $ % (   & % W,S x x  % (   & % W$SzxP P % (   & % W,Szx    % (   SwModuleAsStrings.Strings//
 //
PartCountPreScale? SCGENERIC0YTPF0 tScGenericLibName.C:\Program Files\QuickBuilder\\data\c_user.libcctnameQwerty 36-keypad descriptiony36-key QWERTY keypad based on the 'Storm 700 series sealed rugged keypad. Supports shift, caps and control function keys.keywordskeypad;qwerty;ScTypeiocountrefnameQWERTY_CctAsMetafile.Data 77Xg|t @/ EMF7   XX  ``K@0 qiqi  & % '% +y% (   % ( & % % 6% (  RL<Arial{{% TT@UU@6LPA% ( RL<Arial{{{{% TX@UU@LP23% (  & % 6% (  RL<Arial{{{{% TT@UU@6LPB% ( RL<Arial{{{{% TX@UU@LP22% (  8& % 68% (  RL<Arial{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{% TT@UU@6LPC{&% ( RL<Arial% TX@UU@LP21% (  t& % 6t% (  RL<Arial{% TT@UU@6ULPD&% ( RL<Arial{% TX@UU@5LP20% (    & % ' ;% *% (  % (  & % % 6% (  RL<Arial{% TX@UU@6LPE1% ( RL<Arial{% TX@UU@LP18% (    & % ' ;% *3% (  % (  (& % % 6(% (  RL<Arial% TX@UU@6 LPE2% ( RL<Arial% TX@UU@LP19% (    & % ' ;% *% (  % (  p& % % 6% (  RL<Arialu 3hPatuuP^^UeCtuuV% TT>A@UU@LP0% ( RL<Arial j_E uPL9Et}t u^_Utuuuuu uSj[EPu hPEVutNt tu?M QQPujjt:u uVuuu`uj}PuV[% TTPS@UU@4LP1% (    & % '`% *% (  % (  p& % % 6% (  RL<Arialutuu VPjj^ Utuuu u5hPu utu@uPPjjUV3utu u;EPu hPytuuuPv^USVj@% TT>A@UU@LP1% ( RL<ArialEPuuhPt)uj@tuuu uuPCtuuVWjjtWtuӋ[_^Vt$VT$ 2t'f Ff\tf/tf~:tHuDFjX^Vt$VT$ 2t# 0\t/t$% TTPS@UU@4LP2M% (    & % '`% *'F% (  % (  p8& % % 68% (  RL<Arialzt}tjju wu ]UQQEPjjPt>EVPutu uu!}t uu^UQSVWut5uuME@89sjzl3=jhX(u ׋% TT>A@UU@LP2% ( RL<Arialt$EPEj8Pj u(uu3MȉM̉HjX_^USV] MWQ=(e#EPPjuׅE u1zu&ujEtMQuu׉E } t.6e ,Wjt 6PWE } ^[% TTPS@UU@4LP3% (    & % '`% *e~% (  % (  pt& % % 6t% (  RL<Arialeu3E} EPuu q؉Dž8t+WEP$P88F VtPF(WEP$P($(((M+FF Md _^[t+uWt% TT>A@UU@ULP3% ( RL<ArialP׋;$v hE=t=t=t =t3jXËeh({PR`l% TTPS@UU@45LP4% (    & % '`% *% (  % (  p& % % 6% (  RL<Arial{;QU@*{;*hUM{;PV*@{;*UO`UUV*qUO{@P _~ % TT>A@UU@LP4% ( RL<Arial{;{;{;`q{}3}UUë*QU0 ¢3UGQU@**hUMPV**UOUUV*UO$H<% TTPS@UU@4qLP5% (    & % '`% *% (  % (  p& % % 6% (  RL<Arial{% TT>A@UU@LP5% ( RL<ArialPR`\v\\l v\|́\(% TTPS@UU@4LP6% (    & % '`% *3% (  % (  p(& % % 6(% (  RL<ArialUO{@P ߌ~ @{% TT>A@UU@ LP6% ( RL<Arial*hUMPV**UOUUV*UO$H< <*|T9 ~ % TTPS@UU@4LP7 % (    & % '`% *Sr% (  % (  pd& % % 6d% (  RL<Arial% TT>A@UU@ELP7% ( RL<Arial`K@0 qiqi  & % '% +y% (   %% TTPS@UU@4%LP8% (    & % '`% *% (  % (  p& % % 6% (  RL<ArialPA% ( RL<Arial{{% TT>A@UU@LP8% ( RL<ArialP23% ( & % 6% (  L<Arial% TTPS@UU@4aLP9% (    & % '`% *% (  % (  p& % % 6% (  RL<Arial{{% TX@UU@% TT>A@UU@LP9% ( RL<ArialArial{{{{{{{{{{{{{{{{{{{{{{{{{{{{% TXPW@UU@4LP10% (    & % '`% *'% (  % (  p& % % 6% (  RL<Arial@UU@LP21% (  t& % 6% (  RL<% TX:A@UU@LP10% ( RL<Arial% TT@UU@6ULD&% ( RL<% TXPW@UU@4LP11% (    & % '`% *@_% (  % (  pT& % % 6T% (  RL<Arial*% ( % (  & % % 6 (  RL<% TX:A@UU@5LP11% ( RL<Arial% TX@UU@6LP1% ( RL<% TXPW@UU@4LP13% (    & % '`% *% (  % (  p& % % 6% (  RL<Arial*3% ( % (  (& % % 6( (  RL<% TX:A@UU@qLP12% ( RL<Arial% TX@UU@6 LP2% ( RL<% TXPW @UU@4QLP14% (    & % '`% *% (  % (  p& % % 6% (  RL<Arial*% ( % (  p& % % 6 (  RL<% TX:A@UU@LP13% ( RL<ArialuP^^UeCtV% TT>A@UU@LP% ( RL<% TXP W@UU@4LP15% (    & % '`% *% (  % (  p& % % 6% (  RL<Arial% (  (  p& % % 6% (  RL<% TX:A$@UU@LP14% ( RL<ArialtuuuPv^USVj@% TT>A@UU@LP1 ( RL<% TXPW@UU@4LP16% (    & % '`% *4S% (  % (  pD& % % 6D% (  RL<ArialF% (  % (  p8& % % 68% ( RL<Arw% TX:%A.@UU@%LP15% ( RL<Arial9sjzl3=jhX(u ׋% TT>A@UU@LP2% ( RL<Aria% TXP W)@UU@4LP17% ( RLZArialWjt 6PWE } ^[% TTPS@UU@4LP3%    &% TX|@UU@ LPU1+&% ( RL<Arial% 6t% (  RL<Arialeu3E} EPuu q؉Dž8t+WEP$P88F V% Tl @UU@/LX74154% ( RL<ArialP3% ( RLArialP׋;$v hE=t=t=t =tjXËeh(% Tp@UU@| LXNOTES:%& % ( RL<Arial(    & % '`% *% (  % (  p&% T8t@UU@| 8'L1. U1 POWER: PIN-24 = VCC, PIN-12 = GND{ & &2&  &  &%  %  &%&% (  8& % 68T% (   T& % 6VT% (  RL<Arial}3}UUë*QU0 ¢3UGQU@hUMPV**UOUUV*UO$H<% TTPS% T`@UU@LTVCC%&% (    & % '% +G:% (  % (  (4& % % 6(% (   (& % 6(D% (     & % '% +G% (  % (  4& % % 6% (   & % 6D% (     & % '% +G% (  % (  4& % % 6% (   & % 6D% (     & % '% + GL% (  % (  84& % % 68% (   8& % 68D% (   d& % 6d% (   (& % 6% (   F6& % 66% (   ^T& % 6jT% (     & % '0% *Yl-% (  % (    & % '% *-@% (  % (    & % '% *-% (  % (    & % '% *% (  % (    & % 'z% V,s} ,   , % (  % (   , & % % 6H % (     & % 6H % (  RL<ArialTPS@UU@4%LP8% (    & % `% *%% T@UU@! L`T8 ______ % (    & % 'z% V,s}     % (  % (    & % % 6H % (     & % 6H % (  RL<Arial% ( & % 6% (  L<Arial% T{@UU@!A L`T7 ______ % (    & % 'z% V,ss}z <  $ < % (  % (   < & % % 6H$ % (     & % 6H$ % (  RL<Arial@UU@% TT>A@UU@LP9% ( L<Arial% Thq@UU@! L`T6 ______ % (    & % 'z% V,s_}g   % (  % (   & % % 6H% (    & % 6H% (  RL<ArialL<Arial@UU@LP21% (  t& % 6% % TU^@UU@!Q L`T5 ______ % (    & % 'z% V,s}   % (  % (   & % % 6H% (    & % 6H% (  RL<Arial% '`% @_% (  % (  pT&% % 6T% % T@UU@?e L`T1 ______ % (    & % 'z% V,s} P  8 P% (  % (   P& % % 6H8% (     & % 6H8% (  RL<Arial% ( RL<% TXPW@UU@4LP13% (    % T@UU@? L`T2 ______ % (    & % 'z% V,s}   % (  % (   & % % 6H% (    & % 6H% (  RL<Arial% ( RL<Arial% TX@UU@6 L% T@UU@?U L`T3 ______ % (    & % 'z% V,s} @ ( @% (  % (   @& % % 6H(% (    & % 6H(% (  RL<Arialp& % %6 (  RL<%TX:A@UU@L% T@UU@? L`T4 ______ % (   &$% 6 % (     & % 'z% V, "   % (  % ( % RL<Arial`% *% (  % (  p& % % 6% (  RLr% T@UU@ LhTARGET ______ %& % (  & % 6% (   8& % 6% (   & % 6t% (   (& % 6% (    & % 6 % (    & % 6` % (   $ & % 6% (   & % 6p% (  RL<Arial<ArialF (  % (  p8& %  68% ( % Tl*3@UU@HDLXR1-R4&&% ( RL<ArialArial9sjzl3=X(u ׋% TT>A@UU@LP2% ( RL<% T@UU@| t Lh2. R1-R4: 10K7 %& % (    & % '% + % (  % ( % RLTArial% TX@UU@ LPU1+&% ( RL<Arial% 6t% % T=@UU@ LhQWERTY KEYPAD29+,,,,,,+,,% ( RLTArial@UU@/LX754% ( RL<ArialP3% ( RLAria;% T-@UU@ Lx10-COL. x 4-ROW MATRIX&%,2%%,288,,+,% (  & % 6V % (   \ P & % 6P % (   \ ` & % 6\ P % (    ` & % 6 P % (   l ` & % 6l P % (    ` & % 6 P % (   | ` & % 6| % (    ` & % 6 % (    ` & % 6 % (    ` & % 6 P % (    ` & % 6 P % (   $ ` & % 6$ P % (   ` & % 6b ` % (    & % 6\ % (   p& % 6\ p% (   ` & % 6P % (  RL<Arial% +G% (  % (  4& % % 6% (  % TTh^mg@UU@LPQ&% ( RL<Arial% +G (  % (  4& %  6% (  % TTmrq{@UU@ LPA% ( RL<Arial% + GL%(  % (  84& % %68% (  % TThi@UU@~ LP\ % ( RL<Arial(   (& % 6% (   F6& % 66% % T`hr@UU@ LTShf % ( RL<Arial'0% *Y-% (  % (    & % '% *-% TT{^g@UU@B LPW2% ( RL<Arial% (  % (   & % '% *% (  % % TTr{@UU@`  LPS, % ( RL<Arial , & %% 6H % (     & 6H % (  % TT{@UU@B ~ LPZ% ( RL<Arial % `%*%% T@UU@! L`T8 ______ % T`{@UU@B LTCap&% ( RL<Arial  % (    & % % 6H % (    & % % TT^g@UU@ LPE% ( RL<Arial% (  L<Arial%T{@UU@!A L_% TTr{@UU@  LPD&% ( RL<ArialV,ss}z <  $ < %(  % (   < & % %6H$ % (  % TT@UU@ ~ LPX% ( RL<Arial% TT>A@UU@LP9% ( L<rial%% T`@UU@ LTCtr& % ( RL<Arial% 'z% V,s_}g   % (  % (  & % % 6% TT^g@UU@2 LPR&% ( RL<ArialArialL<Aal@UU@LP21% (  t& % 6% TTr{@UU@P  LPF% ( RL<Arial    & % 'z% V,s}   % ( % (  % TT@UU@2 ~ LPC&% ( RL<Arial(  RL<Arial% '`% @_% ( % (  pT&% Tl@UU@2 LXSpace% ( RL<Arial% (   & % 'z% V,s} P  8 P% (  %% TT^g@UU@ LPT% ( RL<Arial% 6H8% (  RL<Arial% ( RL<% TXPW% TTr{@UU@  LPG&% ( RL<Arial L`T2 ______ % (    & %'z% V,s}% TT@UU@ ~ LPV% ( RL<Arial   &% 6H% (  RL<Arial% ( RL<% TT^g@UU@" LPY% ( RL<Arial% T@?U L`T3 ______ % (   & %% TTr{@UU@@  LPH&% ( RL<Arial % 6H(% (   & % 6H(% (  RL<Arial% TT@UU@" ~ LPB% ( RL<Arial@UU@L% T@UU@? L`T4 ______ % ( % TT^g@UU@ LPU&% ( RL<Arialz% V,"   % (  % ( % RL<Aral`% *% % TTr{@UU@  LPJ% ( RL<Arialr% T@UU@ LhTARGET ______ %& % (  &% TT@UU@ ~ LPN&% ( RL<Arial & 6t% (   (& % 6% (   % TT^g@UU@ LPI % ( RL<Arial(   $  % 6% (   & % 6p% (% TTr{@UU@0  LPK% ( RL<Arial8& %  68% ( % Tl*3@UU@HDLXR1-R4% TT@UU@ ~ LPM,% ( RL<ArialTT>A@UU@LP2% ( RL<% @UU@| t L0% TT@UU@ LP, % ( RL<Arial% + % (  % ( % RLTArial% TX@UU@% TT^g@UU@ LPO&% ( RL<Arial T=@UU@ LhQWERTY KEYPAD29+,,,,,,+,,% (RLTArial@% TT@UU@ ~ LP, % ( RL<ArialAria;% T-@UU@ Lx10-COL. x 4-OW MATRIX&%,2%%% T` @UU@ LTDel% % ( RL<Arial % 6P (   \ ` & % 6\ P % (    ` &% TT^g@UU@ LPP% ( RL<Arial  ` & 6 P % (   | ` & % 6| % (   % TT@UU@ ~ LP/ % ( RL<Arial(    `  % 6 P % (    ` & % 6 P % (% T`@UU@ LTShf % (  $ p& % 6$ % (    p& % 6 % (    p& % 6 % (   p& % 6% (    p& % 6 % (    p& % 6 % (   | p& % 6| % (    p& % 6 % (   l p& % 6l % (    p& % 6 % (   \ p& % 6\ % (   & % 6` % (   B & % 6B ` % (    & % 6 ` % (   2 & % 62 ` % (    & % 6 ` % (   " & % 6" ` % (    & % 6 ` % (    & % 6 ` % (    & % 6 ` % (  RL<Arial  & % '% *-% TT{^g@UU@B LPW% T@UU@P  Ld(RS 198-292)& % ( RL<ArialPS, % ( RL<Arial , & %% H % (   % TTr {@UU@  LPL% (   & % 6 ` % (    & % 6 % (  RL<ArialT@UU@! `T8 ______ % T`{@UU@B LTCap% TTPY@UU@ 5LP3% (  $ & % 6$ % (  RL<Arial% T^g@UU@ LPE% ( RL<Arial% ( % TTKqOz@UU@ LPB% (   & % 6 % (  RL<ArialPD&% ( RLArialV,ss}z <  $ < %(  %(   < &% TTKP@UU@} LPC&% (   & % 6 % (  RL<ArialTT>A@UU@P9% ( L<rial%% TTKP@UU@ LPD&% (  P & % 6P % (  RL<Arial% (   % % 6% TT^g@UU@2 LPR&%% TTPY@UU@1 5LP4a% (   & % 6 % (  RL<Arial% TTr{@UU@P  LPF% ( RL<Arial    &% TTPY@UU@ 5LP5% (  @ & % 6@ % (  RL<Arial% ( RL<Arial(  RL<Arial% '`% @_% (% TTPY@UU@! 5LP6% (   & % 6 % (  RL<Arial% (  & % 'z% V,s} P  8P% (  %% TTPY@UU@ 5LP7% (  0 & % 60 % (  RL<ArialRL<% TXPW% TTr{@UU@  LPG&% % TTPY@UU@ 5LP8% (   & % 6 % (  RL<Arial% TT@UU@ ~ LPV% ( RL<rial   &% TTPY@UU@ 5LP9% (   & % 6 % (  RL<Arial ( RL<Arial% T@?U L`T3 _____ % ( % TXU^@UU@ ULP10 % (  ` & % 6` % (  RL<Arial   & % 6H(% (  RL<rial% T% TT{PY@UU@A 5LP2% (  & % 6% (  RL<Arial___ % ( % TT^g@UU@ LPU&% ( RL<% TThPlY@UU@5LP1% (  & % 6% (  RL<ArialTTr{@UU@  LPJ% ( RL<Arialr%T@UU@ L_% TTK^Og@UU@LPA% ( RL<ArialTT@UU@ ~ LPN&% ( RL<Arial & 6t%% T=p@UU@ L`QWERTY10X4%2 % % (    & % '% *% (  % (    & % '% * -( % (  % (    & % '% *  % (  % (    & % '% *- @ % (  % (  &$% % W(g  % (   & % W$(d(% (   & % W$dd(% (   & % W(dd(% (   & % W$ 88% (   & % W$ 88% (   & % W( (% (   & % W$ ((% (   & % W$8% (   & % W$(% (   & % W$ % (   & % W$H% (   & % W,tt8H8% (   & % W,88H% (   & % W,tt(H(% (   & % W(Z3p8 8 % (   & % W(Z3ptP tP % (   & % W(Z3p  % (   & % W(Z3p@ @ % (   & % W(Z3p( ( % (   & % W(Z3pd0 d0 % (   & % W(Z3p  % (   & % W(Z3p  % (   & % W(Z3p` ` % (   & % W(Zm3p% (   & % W$Pc4% (   & % W$ccH% (   & % W$c3c% (   & % W$Pv(4($ % (   & % W$vvH$ ($ % (   & % W$v3v$ ($ % (   & % W$P4 % (   & % W$H  % (   & % W$3  % (   & % W$P848 % (   & % W$H 8 % (   & % W$3 8 % (   SwModuleAsStrings.Strings//
//
, and function keys. All// keys are de-bounced.////// KEYPAD LAYOUT// -------------//.// 1 2 3 4 5 6 7 8 9 10-// | | | | | | | | | |-// A-- Q---W---E---R---T---Y---U---I---O---P-// \ \ \ \ \ \ \ \ \ |.// B----A---S---D---F---G---H---J---K---L | -// / / / / / / / / / |-// C---\---Z---X---C---V---B---N---M---.---/-// | | | | | | |.// D--shf-cap-ctr-spc ,--del-shf//  // Where:// 1,2,... are columns// A,B,... are rows//%// See also data sheet for RS-198-292//// Scan numbers:7// The key in column 1 row A has the scan number 0;// The key in column 1 row B has the scan number 1 etc7// The key in column 2 row A has the scan number 3;// The key in column 2 row B has the scan number 4 etc // etc.=// Scan numbers are translated to key values 'Q','A','\', etc4// Translated key values can be changed by modifying-// the 'translate__' table. (See code below).// // // Functions // ---------7// QWERTY_DO() : Key pad scan routine. Call at regular*// intervals (eg 1ms timer tick interrupt)//9// QWERTY_KEY() : returns the currently pressed ascii key// =// QWERTY_NEWKEY() : returns the most recently pressed ascii #if 0 // 1=debug#define PORT_P_ PORTB#define TRIS_P_ TRISB#endif>=1; thiskey++; }9 thiskey |= colcnt__ << 2; // insert col num= thiskey = translate__[thiskey]; // translate to asciiK if (thiskey < (scankey-1)) // function keys have low priority scankey = thiskey; } // end of scan proccess // colcnt__++;@ if ( bit_test(colcnt__,4) ) { // scan complete  colcnt__ = 0;3 if (scankey) { // key down4 if (debounce__ != 0) { // debounce  debounce__--;< } else { // debounce complete // change stateB state <<=4; // last state to hi-nibbleC if (bit_test(scankey,7) ) { // function key pressed, state |= scankey & 0x0f; } else {; if ( (scankey>='A') && (scankey<='Z') )& state |= al__; else& state |= xx__; }8 //************************************//8 // Key press state machine //8 //************************************//8 // ***** state: no key + xx_key ***** //& if ( state == xx__ ) {3 key__ = scankey; // key pressed% newkey__ = key__;; // ***** state: shift key + al_key ***** //; } else if ( state == ((sh__<<4) | al__) ) {$ key__ = scankey;9 if ( bit_test(flags__, 0)) // no caps* bit_set(key__, 5);& // togle shift bit- if ( bit_test( key__,5) )+ bit_clear(key__,5); else) bit_set(key__,5); = newkey__ = key__; : // ***** state: no key + caps key ***** //5 } else if ( state == (ca__& 0x0f) ) {# // toggle caps / if ( bit_test(flags__,0)) {: bit_clear(flags__,0); // caps on } else {; bit_set(flags__,0); // caps off }: // ***** state: ctrl key + al_key ***** //: } else if ( state == ((ct__<<4) | al__)) {8 key__ = scankey; ( bit_clear(key__, 6);9 bit_clear(key__,5); // lower case% newkey__ = key__;8 // ***** state: no key + al_key ***** //- } else if ( state == al__ ) {8 key__ = scankey; 9 if ( bit_test(flags__, 0)) // no caps* bit_set(key__, 5);% newkey__ = key__; }) // prepare for next key press scankey = 0; debounce__ = DBNC__; }  } else { debounce__ = DBNC__; state = 0; key__ = 0; } }  // select next column *P__ = colcnt__;}'//*************************************BYTE QWERTY_NEWKEY(){ int key; key = newkey__; newkey__ = 0;  return key;}'//*************************************BYTE QWERTY_KEY(){ return key__;}'//*************************************BYTE QWERTY_CAPS(){" return (!bit_test(flags__,0));}'//*************************************void QWERTY_INIT() {8 *TRISP__ = 0xf0; // D0-D2 output, D4-D7 input} //section>//
PartCountPreScale? SCGENERIC0/TPF0 tScGenericLibName2C:\Program Files\QuickBuilder\\data\c_standard.libcctname I2C slave RAM descriptionWI2C Slave mode RAM using SSP module. Use as communications interface for slave I2C PIC.keywordsI2C;slave;ssp;ramScTypeiocountrefname I2CSLRAM_CctAsMetafile.Data xxX2$rw+q84& EMFt   XX  ``K@0 qiqi  & % '% *  % (   % (  & % % 6l % (  RL<ArialG_RA3_RA2_REFADC_OFFADC_CLOCK_DIV_2ADC_CLOCK_DIV_8ADC_CLOCK_DIV_32ADC_CLOCK_INTERNALL_TO_HH_TO_L% T`8$A@UU@ LTSDA&% (    & % '0G% *  G% (  % (   4& % % 6l 4% (  RL<Arialisalphaisdigitisspaceisxdigitiscntrlisprintisgraph% T`K#T@UU@ LTSCL&% (    & % 'z% V,9A    % (  % (   & % % 6 % (    & % 6 % (  RL<ArialSTDERRSSTDOUT RS232_1IN RS232_1OUTRS232_1INCOMING% T2;@UU@ y L`T1 ______ % (    & % 'z% V,LT  L 4 % (  % (   & % % 6 4% (    L& % 6 4% (  RL<ArialrDS1820_1WRITTEdatadiDS1820_1RE_BYTEDS1820_1READ_TEMPERATUREbNI% TEN@UU@  L`T2 ______ % (  P &$% 6P % (    &$% 6P % (     & % 'z% V,hr     % (  % ( % RL<ArialENABLE I2CHW_READ I2CHW_WRITE I2CHW_ISR i2c_bytesi2c_statI2CHW_DO I2CHW_SETDADD% Thq@UU@  LdTARGET _____ %& % (   & % 6 % (   P & % 6 % (    4& % 6 4% (    4& % 6P % (  RLTArial% TZf@UU@ p LhI2C SLAVE RAM%,,%,,+,,8% (  & % W$==l  % (   & % W$PPl 4 4% (   SwModuleAsStrings.Strings//
//
// I2CSLRAM_DO() : mandatory - call at regular intervals// to clear error conditions.:// I2CSLRAM_UPDATE : 1=read occurred,2=write occured. // cleared by user.// // Example:$// if ( I2CSLRAM_UPDATE == 2) {6// I2CSLRAM_UPDATE = 0; // clear update flag// ...// your code here// ... // }// // Rev1.0://********************************************************'// (C) Copyright 2002 mTECH 2// This source code may only be used by Licensees 7// of QuickBuilder as specified in the End User License8// Agreement ("EULA")located at www.quickbuilder.co.uk. ;// No other use, reproduction or distribution is permitted 3// without specific written permission from mTECH. 7// Derivative programmes created using this software in'// object code form are not restricted.://*******************************************************>*#define RAMSIZE__ _SIZE_ // power of 2@#use i2c(slave,sda=PIN_C4,scl=PIN_C3,address=0xa0,force_hw,fast)3#define I2CADDR__ ((_FAMADDR_<<4) | (_DEVADDR_<<1))BYTE I2CSLRAM_ADDR=0;BYTE I2CSLRAM_DATA[RAMSIZE__];BYTE I2CSLRAM_UPDATE=0;##define I2CSLRAM_PIR1 0x0c##define I2CSLRAM_SSPCON 0x14$#define I2CSLRAM_SSPBUF *0x13$#define I2CSLRAM_SSPADD *0x93$#define I2CSLRAM_SSPSTAT *0x94I#define I2CSLRAM_SSPIF *I2CSLRAM_PIR1,3 // interrupt/event flagB#define I2CSLRAM_SSPOV *I2CSLRAM_SSPCON,6 // overflow flag<#define I2CSLRAM_DISABLE() bit_clear(*I2CSLRAM_SSPCON,5):#define I2CSLRAM_ENABLE() bit_set(*I2CSLRAM_SSPCON,5)*#define I2CSLRAM_READ(x) i2c_read(x)+#define I2CSLRAM_WRITE(x) i2c_write(x)'//*************************************#int_ssp noclearvoid I2CSLRAM_ISR() { static BYTE i2c_bytes=0; BYTE i2c_stat,b;  3 bit_clear(I2CSLRAM_SSPIF); // clear event flag  // determine state i2c_stat = I2CSLRAM_SSPSTAT;+ i2c_stat &= 0x25; // ignore S bit_set(i2c_stat,3); switch( i2c_stat ) {A case 0x09: // state1: master write. last byte was addressC b = I2CSLRAM_READ(1); // dummy read clears bf flag i2c_bytes = 0; break;> case 0x29: // state2: master write. last byte was data2 b = I2CSLRAM_READ(1); // get data ! if (i2c_bytes == 0) {$ I2CSLRAM_ADDR = b-1; }% else if ( i2c_bytes > 0 ) { I2CSLRAM_ADDR++;/ I2CSLRAM_ADDR &= (RAMSIZE__-1);1 I2CSLRAM_DATA[I2CSLRAM_ADDR] = b;; I2CSLRAM_UPDATE = 2; // flag data written } i2c_bytes++; break;@ case 0x0c: // state3: master read. last byte was address= case 0x2c: // state4: master read. last byte was data I2CSLRAM_ADDR++;+ I2CSLRAM_ADDR &= (RAMSIZE__-1);- b = I2CSLRAM_DATA[I2CSLRAM_ADDR];: I2CSLRAM_UPDATE = 1; // flag data read event I2CSLRAM_WRITE( b ); break;( case 0x28: // state5 master nack // no action taken break; default:6 reset_cpu(); // forbidden state, reset cpu }}'//*************************************void I2CSLRAM_DO() { BYTE b;( // check for i2c overflow condition% if (bit_test(I2CSLRAM_SSPOV) ) { " bit_clear(I2CSLRAM_SSPOV); b = I2CSLRAM_SSPBUF;" bit_clear(I2CSLRAM_SSPIF); }}'//*************************************"void I2CSLRAM_SETDADD(BYTE addr) { I2CSLRAM_SSPADD &= 0xf0;' I2CSLRAM_SSPADD |= (addr&0x7) << 1;}'//*************************************void I2CSLRAM_INIT() { I2CSLRAM_SSPADD = I2CADDR__; enable_interrupts(INT_SSP);} ///section>//
PartCountPreScale? SCGENERIC04TPF0 tScGenericLibName.C:\Program Files\QuickBuilder\\data\c_user.libcctname 1-bit port description 1-bit portkeywords1-bit;port;bitsScTypeiocountrefname PORT1BIT_CctAsMetafile.Data X1)~57) EMF   XX  ``K@0 qiqi  & % '% *  % (   % (  & % % 6l % (  RL<Arial{{% TT8A@UU@ LP0% (    & % 'z% V,9AP P  P % (  % (  P & % % 6 % (   P & % 6 % (  RL<Arial{{% T1:@UU@ s L`T1 ______ % (   &$% 6 % (     & % 'z% V,  ~ 2  % (  % ( % RL<Arial{{{{% T@UU@P } LhTARGET ______ %& % (   &$% 6 % (    & % 6 % (    & % 6 % (  RLTArial% Tmy@UU@  L`1-BIT PORT&+,+2,,% (  & % W$==l  % (   SwModuleAsStrings.Strings//
//
#define P0__ PORT_P0_, _0_#define TRISP0__ TRIS_P0_, _0_BYTE PORT1BIT_READ() { BYTE r; r=0;  bit_set(*TRISP0__);  if (bit_test(*P0__)) bit_set(r,0); return r;}void PORT1BIT_WRITE(BYTE r) {  bit_clear(*TRISP0__);  if (bit_test(r,0)) bit_set(*P0__); else bit_clear(*P0__);} ///section> PartCountPreScale? SCGENERIC0(TPF0 tScGenericLibName.C:\Program Files\QuickBuilder\\data\c_user.libcctname 3-bit port description*3-bit port built from individual port bitskeywords3-bit;port;bitsScTypeiocountrefname PORT3BIT_CctAsMetafile.Data X1)~57) EMF/   XX  ``K@0 qiqi  & % '% *  G% (   % (  4& % % 6l 4% (  RL<Arial{{% TTKT@UU@ LP1% (    & % '0G% *  % (  % (   & % % 6l % (  RL<Arial{{{% TT^g@UU@ LP2% (    & % '0G% *  % (  % (   & % % 6l % (  RL<Arial/DC:\WINDOWS\Desktopexp\libsource\frag port\3-bitport.emfO :i+00#C:\1))~Windows1) DesktoDESKTOP1,ppicexpPICEXP!1,plibsourceLIGP% TT8A@UU@ LP0% (    & % 'z% V,9AP P  P % (  % (  P & % % 6 % (   P & % 6 % (  RL<Arial% T1:@UU@ s L`T1 ______ % (    & % 'z% V,LTP P L 4P % (  % (  P & % % 6 4% (   P L& % 6 4% (  RL<Arial% TEN@UU@  L`T2 ______ % (    & % 'z% V,_gP P  P % (  % (  P & % % 6 % (   P & % 6 % (  RL<Arial% TXa@UU@ i L`T3 ______ % (   &$% 6 % (     & % 'z% V,  ~ 2  % (  % ( % RL<Arial% T@UU@P } LhTARGET ______ %& % (   &$% 6 % (    & % 6 % (    4& % 6 % (    & % 6 p% (    & % 6 % (    4& % 6 4% (    & % 6 % (  RLTArial% Tmy@UU@  L`3-BIT PORT&+,+2,,% (  & % W$==l  % (   & % W$PPl 4 4% (   & % W$ccl  % (   SwModuleAsStrings.Strings//
//
#define P0__ PORT_P0_, _0_#define TRISP0__ TRIS_P0_, _0_#define P1__ PORT_P1_, _1_#define TRISP1__ TRIS_P1_, _1_#define P2__ PORT_P2_, _2_#define TRISP2__ TRIS_P2_, _2_BYTE PORT3BIT_READ() { BYTE r; r=0;  bit_set(*TRISP0__); bit_set(*TRISP1__); bit_set(*TRISP2__);  if (bit_test(*P0__)) bit_set(r,0); if (bit_test(*P1__)) bit_set(r,1); if (bit_test(*P2__)) bit_set(r,2); return r;}void PORT3BIT_WRITE(BYTE r) {  bit_clear(*TRISP0__); bit_clear(*TRISP1__); bit_clear(*TRISP2__);  if (bit_test(r,0)) bit_set(*P0__); if (bit_test(r,1)) bit_set(*P1__); if (bit_test(r,2)) bit_set(*P2__);} ///section> PartCountPreScale? SCGENERIC0bTPF0 tScGenericLibName2C:\Program Files\QuickBuilder\\data\c_standard.libcctnameLED description Single LEDkeywords LED;singleScTypeiocountrefnameLED_CctAsMetafile.Data XC4Y% EMF X   XX  ``K@0       & % 'z% V,`sX% (   % ( & % % 6X% ( & % 6 % ( & % 6*% ( *& % 6*% ( *& % 6 % (  & % 6 % (  & % 6% ( H& % 6% ( & % 6% (  RLZArial% TX= @= @MLPD1+&% (    & % '% +~% (  % (  & % % 6% (    & % 6% (  RLZArial{% TXsVc= @= @LPR1+&% ( RL<Arial{% Tdsdm= @= @rLT100R&% (  8& % 6t% (   Xt& % 6t% (   v& % 6% (   & % 6% (     & % 'z% V,C?MG% (  % (  & % % 6% (   & % 6% (  RLHCourier New% TT4?= @= @C L`T1 ______&%&%&%&%&% (  & % W$j}jH % (   & % W$jj8% (   & % W(VCjM% (   SwModuleAsStrings.Strings//
//
#define P__ PORT_P_,_b_#define TRISP__ TRIS_P_,_b_#define LED_ON() bit_set(*P__)!#define LED_OFF() bit_clear(*P__)//******************int LED_SET(int state) { if ( bit_test(state,0) ) bit_set(*P__); else bit_clear(*P__);}//******************int LED_GET() { if (bit_test(* P__) ) return(1); else return(0);}//******************void LED_INIT() {#asm BSF _RP0 BCF TRISP__#endasm } ///SECTION>//
PartCountPreScale? CCTOBJ0QTPF0tcctobjscaleʀ?qordxMqordy-IoSelectArray.Strings-11-1-1-1-1-1-1 headertextQWERTY_1parentfrmmain.pnSheettopleftcctnameQwerty 36-keypadrefnameQWERTY_1 Annotated swincluded ScGeneric.OwnerIDEnabled SelectSheetNumPropertyValue.Strings-1-1-1-1-1-1-1-1 CCTOBJ0PTPF0tcctobjscaleʀ?qordxqordyIoSelectArray.Strings-111-1-1-1-1-1 headertext I2CSLRAM_1parentfrmmain.pnSheettopleftcctname I2C slave RAMrefname I2CSLRAM_1 Annotated swincluded ScGeneric.OwnerIDEnabled SelectSheetNumPropertyValue.Strings-1-1-1-1-11-1-1 CCTOBJ0ATPF0tcctobjscaleʀ?qordx_qordyIoSelectArray.Strings-1123-1-1-1-1 headertextADD_parentfrmmain.pnSheettopleft#cctname 3-bit portrefnameADD_ Annotated swincluded ScGeneric.OwnerIDEnabled SelectSheetNumPropertyValue.Strings-1-1-1-1-1-1-1-1 CCTOBJ0TTPF0tcctobjscaleʀ?qordxqordyIoSelectArray.Strings-115-1-1-1-1-1-1 headertext NEWKEY_PORT_parentfrmmain.pnSheettopleftvcctname 1-bit portrefname NEWKEY_PORT_ Annotated swincluded ScGeneric.OwnerIDEnabled SelectSheetNumPropertyValue.Strings-1-1-1-1-1-1-1-1 CCTOBJ0ITPF0tcctobjscaleʀ?qordx]qordyuIoSelectArray.Strings-16-1-1-1-1-1-1 headertext NEWKEY_LED_parentfrmmain.pnSheettoppleft"cctnameLEDrefname NEWKEY_LED_ Annotated swincluded ScGeneric.OwnerIDEnabled SelectSheetNumPropertyValue.Strings-1-1-1-1-1-1-1-1 CCTOBJ0FTPF0tcctobjscaleʀ?qordxfqordy1IoSelectArray.Strings-14-1-1-1-1-1-1 headertext CAPS_LED_parentfrmmain.pnSheettopleft'cctnameLEDrefname CAPS_LED_ Annotated swincluded ScGeneric.OwnerIDEnabled SelectSheetNumPropertyValue.Strings-1-1-1-1-1-1-1-1