{"id":16974,"date":"2023-07-14T12:33:58","date_gmt":"2023-07-14T12:33:58","guid":{"rendered":"https:\/\/bryceautomation.com\/?p=16974"},"modified":"2023-07-14T12:34:00","modified_gmt":"2023-07-14T12:34:00","slug":"pic-buttons-in-assembly","status":"publish","type":"post","link":"https:\/\/bryceautomation.com\/index.php\/2023\/07\/14\/pic-buttons-in-assembly\/","title":{"rendered":"PIC Buttons in Assembly"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">How to add PIC Buttons in Assembly<\/h2>\n\n\n\n<p>When adding PIC Buttons in Assembly, we need to be sure to have a port setup for inputs.  In this case, I&#8217;m using the 16F877A.  Usually, the best port to add the buttons are to port B.  This is because Port B has internal pullup resistors.  The internal pullup resistors simply hold the pin in a known state when you are not pressing the button.<\/p><div id=\"bryce-3104470624\" class=\"bryce-afterfirst bryce-entity-placement\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-8316758073402323\" crossorigin=\"anonymous\"><\/script><ins class=\"adsbygoogle\" style=\"display:block;\" data-ad-client=\"ca-pub-8316758073402323\" \ndata-ad-slot=\"7728240895\" \ndata-ad-format=\"auto\"><\/ins>\n<script> \n(adsbygoogle = window.adsbygoogle || []).push({}); \n<\/script>\n<\/div>\n\n\n\n<p>First you&#8217;ll need to create a valid assembly project.  You can follow the <a href=\"https:\/\/bryceautomation.com\/index.php\/2023\/07\/09\/programming-the-pic-microcontroller-in-assembly\/\">tutorial<\/a> on how to set up a basic project.  You&#8217;ll need to create a new project, and add the configuration.  Follow the step by step procedure to set up the reset vector, and interrupt vector in your program.  Be sure to set the custom linker objects to point to these vectors.  <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configuration for PIC Buttons in Assembly<\/h2>\n\n\n\n<p>We&#8217;ll create a new project following the <a href=\"https:\/\/bryceautomation.com\/index.php\/2023\/07\/09\/programming-the-pic-microcontroller-in-assembly\/\">tutorial<\/a> on how to set up a basic project.  I&#8217;m creating a new source file named Startup.s.  Next, we&#8217;ll set the configuration bits.  In this case, I&#8217;m using a crystal oscillator, and I&#8217;ll shut off all of the other configuration bits.  You will find this under Production | Set Configuration Bits.  Once you generate the configuration, simply copy it into your code.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"346\" height=\"217\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/07\/image-14.png\" alt=\"\" class=\"wp-image-17003 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/07\/image-14.png 346w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/07\/image-14-300x188.png 300w\" data-sizes=\"(max-width: 346px) 100vw, 346px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 346px; --smush-placeholder-aspect-ratio: 346\/217;\" \/><\/figure>\n\n\n\n<p>At this point, we&#8217;ll configure our vectors.  We&#8217;ll enter this code into our program:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"257\" height=\"116\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/07\/image-15.png\" alt=\"\" class=\"wp-image-17005 lazyload\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 257px; --smush-placeholder-aspect-ratio: 257\/116;\" \/><\/figure>\n\n\n\n<p>Next, we need to configure the customer linker options.  Go to the properties of your project, and select the pic-as Linker<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"666\" height=\"153\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/07\/image-16.png\" alt=\"\" class=\"wp-image-17006 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/07\/image-16.png 666w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/07\/image-16-300x69.png 300w\" data-sizes=\"(max-width: 666px) 100vw, 666px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 666px; --smush-placeholder-aspect-ratio: 666\/153;\" \/><\/figure>\n\n\n\n<p>Click the ellipsis (3 dots) under Custom Linker Options.  We&#8217;ll set up the RESET_VECT to start at 0h.  Likewise, we&#8217;ll configure INT_VECT to start at 04h.  (Note:  There is no space after the -p).<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"296\" height=\"97\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/07\/image-17.png\" alt=\"\" class=\"wp-image-17007 lazyload\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 296px; --smush-placeholder-aspect-ratio: 296\/97;\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Setup Routine<\/h2>\n\n\n\n<p>Next, we have a few things to set up.  Keep in mind that RES_VECT will jump to the startup label.   We need to have this startup label in our program, and this will effectively be the first block of code the PIC executes on startup.  Remember that our configuration created an include to xc.inc.  This creates labels, or aliases to memory locations to help us remember them.  For example, we can simply use a STATUS label, instead of remembering the memory location of 03h.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"486\" height=\"160\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/07\/image-18.png\" alt=\"\" class=\"wp-image-17010 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/07\/image-18.png 486w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/07\/image-18-300x99.png 300w\" data-sizes=\"(max-width: 486px) 100vw, 486px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 486px; --smush-placeholder-aspect-ratio: 486\/160;\" \/><\/figure>\n\n\n\n<p>First, we&#8217;ll switch to bank 1 with the BSF STATUS,5 (Bit Clear in File) instruction.  We&#8217;ll load our working file (W) with 00h using the MOVLW (Move Literal to W) instruction.  Then we write this 00H to the OPTION_REG with the MOVWF (Move W to File).  This enables the internal pullup resistors on PORTB.  After that, we&#8217;ll load 00h to W again, and move this into TRISD.  This is the tristate register for port D, and 00h will configure all the pins on PORTD to be outputs.<\/p>\n\n\n\n<p>At this point, we&#8217;ll move 0FFH into TRISB, configuring all of the pins on this port as INPUT.  <\/p>\n\n\n\n<p>Next, we switch back to bank 0 by shutting off status bit 5 with the Bit Clear in File (BCF) Instruction.<\/p>\n\n\n\n<p>Finally, we&#8217;ll write a 00h to PORTD to ensure all outputs are OFF before we begin.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Main Routine<\/h2>\n\n\n\n<p>At last, we are ready for the Main Routine!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"356\" height=\"101\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/07\/image-19.png\" alt=\"\" class=\"wp-image-17012 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/07\/image-19.png 356w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/07\/image-19-300x85.png 300w\" data-sizes=\"(max-width: 356px) 100vw, 356px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 356px; --smush-placeholder-aspect-ratio: 356\/101;\" \/><\/figure>\n\n\n\n<p>In the first instruction, we&#8217;ll move PORTB to our working register, which is W.   On my setup, I only have 4 buttons.  The ANDLW 0Fh (AND Literal with W) will simply look at the lower 4 bits, and set the upper 4 bits to 0.  That way they are in a known state.<\/p>\n\n\n\n<p>Next, we will set the upper 4 bits high with XORLW 0F0h.  This will shut the upper LED&#8217;s off, since the outputs are also backward (0=ON).  The lower 4 bits will pass though to the outputs as-is.<\/p>\n\n\n\n<p>Finally we, use GOTO Main to create an infinite loop.  Don&#8217;t forget the END statement at the end of your logic, so the assembler knows where the end of your code is.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summary of PIC Buttons in Assembly<\/h2>\n\n\n\n<p>In short, once you have a basic project created, you can use this as a template for other projects.  In this case, I&#8217;ve used a blink program, and just modified the SETUP and MAIN code to display the status of the lights.  The PIC is a RISC processor. (Reduced Instruction Set Computer).  This means that you don&#8217;t have many instructions to learn.  You can find the instruction set reference <a href=\"https:\/\/ww1.microchip.com\/downloads\/en\/DeviceDoc\/31029a.pdf\">here<\/a>.<\/p>\n\n\n\n<p>In the future, I&#8217;ll be adding more PIC posts to the <a href=\"https:\/\/bryceautomation.com\/index.php\/category\/pic\/\">category page!<\/a>  Feel free to visit often for updates!<\/p>\n\n\n\n<p>&#8212; Ricky Bryce<\/p>\n<div id=\"bryce-3741943059\" class=\"bryce-after-content bryce-entity-placement\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-8316758073402323\" crossorigin=\"anonymous\"><\/script><ins class=\"adsbygoogle\" style=\"display:block;\" data-ad-client=\"ca-pub-8316758073402323\" \ndata-ad-slot=\"4667596182\" \ndata-ad-format=\"auto\"><\/ins>\n<script> \n(adsbygoogle = window.adsbygoogle || []).push({}); \n<\/script>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>How to add PIC Buttons in Assembly When adding PIC Buttons in Assembly, we need to be sure to have a port setup for inputs. In this case, I&#8217;m using the 16F877A. Usually, the best port to add the buttons are to port B. This is because Port B has internal pullup resistors. The internal <a class=\"moretag btn btn-primary\" href=\"https:\/\/bryceautomation.com\/index.php\/2023\/07\/14\/pic-buttons-in-assembly\/\">Read More \u00bb<\/a><\/p>\n","protected":false},"author":1,"featured_media":17003,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[951],"tags":[952,885],"class_list":{"0":"post-16974","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-pic","8":"tag-16f877a","9":"tag-pic","10":"czr-hentry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>PIC Buttons in Assembly - Bryce Automation<\/title>\n<meta name=\"description\" content=\"How to use PIC Buttons in Assembly. We&#039;ll configure our ports, and write a program to turn on LED&#039;s when each button is presssed.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bryceautomation.com\/index.php\/2023\/07\/14\/pic-buttons-in-assembly\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PIC Buttons in Assembly - Bryce Automation\" \/>\n<meta property=\"og:description\" content=\"How to use PIC Buttons in Assembly. We&#039;ll configure our ports, and write a program to turn on LED&#039;s when each button is presssed.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bryceautomation.com\/index.php\/2023\/07\/14\/pic-buttons-in-assembly\/\" \/>\n<meta property=\"og:site_name\" content=\"Bryce Automation\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/ricky.bryce.7\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-14T12:33:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-14T12:34:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/07\/image-14.png\" \/>\n\t<meta property=\"og:image:width\" content=\"346\" \/>\n\t<meta property=\"og:image:height\" content=\"217\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ricky\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/07\\\/14\\\/pic-buttons-in-assembly\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/07\\\/14\\\/pic-buttons-in-assembly\\\/\"},\"author\":{\"name\":\"Ricky\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"headline\":\"PIC Buttons in Assembly\",\"datePublished\":\"2023-07-14T12:33:58+00:00\",\"dateModified\":\"2023-07-14T12:34:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/07\\\/14\\\/pic-buttons-in-assembly\\\/\"},\"wordCount\":764,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/07\\\/14\\\/pic-buttons-in-assembly\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/image-14.png\",\"keywords\":[\"16F877A\",\"pic\"],\"articleSection\":[\"PIC\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/07\\\/14\\\/pic-buttons-in-assembly\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/07\\\/14\\\/pic-buttons-in-assembly\\\/\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/07\\\/14\\\/pic-buttons-in-assembly\\\/\",\"name\":\"PIC Buttons in Assembly - Bryce Automation\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/07\\\/14\\\/pic-buttons-in-assembly\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/07\\\/14\\\/pic-buttons-in-assembly\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/image-14.png\",\"datePublished\":\"2023-07-14T12:33:58+00:00\",\"dateModified\":\"2023-07-14T12:34:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"description\":\"How to use PIC Buttons in Assembly. We'll configure our ports, and write a program to turn on LED's when each button is presssed.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/07\\\/14\\\/pic-buttons-in-assembly\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/07\\\/14\\\/pic-buttons-in-assembly\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/07\\\/14\\\/pic-buttons-in-assembly\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/image-14.png\",\"contentUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/image-14.png\",\"width\":346,\"height\":217,\"caption\":\"PIC Buttons in Assembly\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/07\\\/14\\\/pic-buttons-in-assembly\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bryceautomation.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PIC Buttons in Assembly\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#website\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/\",\"name\":\"Bryce Automation\",\"description\":\"Automating Home and Industry...\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/bryceautomation.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\",\"name\":\"Ricky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/a8f\\\/a8fe6bf79d292b388ffee281ccb12488x96.jpg\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/a8f\\\/a8fe6bf79d292b388ffee281ccb12488x96.jpg\",\"contentUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/a8f\\\/a8fe6bf79d292b388ffee281ccb12488x96.jpg\",\"caption\":\"Ricky\"},\"sameAs\":[\"http:\\\/\\\/bryceautomation.com\",\"https:\\\/\\\/www.facebook.com\\\/ricky.bryce.7\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/ricky-bryce-4367a416\\\/\"],\"url\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/author\\\/ricky\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PIC Buttons in Assembly - Bryce Automation","description":"How to use PIC Buttons in Assembly. We'll configure our ports, and write a program to turn on LED's when each button is presssed.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bryceautomation.com\/index.php\/2023\/07\/14\/pic-buttons-in-assembly\/","og_locale":"en_US","og_type":"article","og_title":"PIC Buttons in Assembly - Bryce Automation","og_description":"How to use PIC Buttons in Assembly. We'll configure our ports, and write a program to turn on LED's when each button is presssed.","og_url":"https:\/\/bryceautomation.com\/index.php\/2023\/07\/14\/pic-buttons-in-assembly\/","og_site_name":"Bryce Automation","article_author":"https:\/\/www.facebook.com\/ricky.bryce.7","article_published_time":"2023-07-14T12:33:58+00:00","article_modified_time":"2023-07-14T12:34:00+00:00","og_image":[{"width":346,"height":217,"url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/07\/image-14.png","type":"image\/png"}],"author":"Ricky","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bryceautomation.com\/index.php\/2023\/07\/14\/pic-buttons-in-assembly\/#article","isPartOf":{"@id":"https:\/\/bryceautomation.com\/index.php\/2023\/07\/14\/pic-buttons-in-assembly\/"},"author":{"name":"Ricky","@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"headline":"PIC Buttons in Assembly","datePublished":"2023-07-14T12:33:58+00:00","dateModified":"2023-07-14T12:34:00+00:00","mainEntityOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2023\/07\/14\/pic-buttons-in-assembly\/"},"wordCount":764,"commentCount":0,"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2023\/07\/14\/pic-buttons-in-assembly\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/07\/image-14.png","keywords":["16F877A","pic"],"articleSection":["PIC"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/bryceautomation.com\/index.php\/2023\/07\/14\/pic-buttons-in-assembly\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/bryceautomation.com\/index.php\/2023\/07\/14\/pic-buttons-in-assembly\/","url":"https:\/\/bryceautomation.com\/index.php\/2023\/07\/14\/pic-buttons-in-assembly\/","name":"PIC Buttons in Assembly - Bryce Automation","isPartOf":{"@id":"https:\/\/bryceautomation.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2023\/07\/14\/pic-buttons-in-assembly\/#primaryimage"},"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2023\/07\/14\/pic-buttons-in-assembly\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/07\/image-14.png","datePublished":"2023-07-14T12:33:58+00:00","dateModified":"2023-07-14T12:34:00+00:00","author":{"@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"description":"How to use PIC Buttons in Assembly. We'll configure our ports, and write a program to turn on LED's when each button is presssed.","breadcrumb":{"@id":"https:\/\/bryceautomation.com\/index.php\/2023\/07\/14\/pic-buttons-in-assembly\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bryceautomation.com\/index.php\/2023\/07\/14\/pic-buttons-in-assembly\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bryceautomation.com\/index.php\/2023\/07\/14\/pic-buttons-in-assembly\/#primaryimage","url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/07\/image-14.png","contentUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/07\/image-14.png","width":346,"height":217,"caption":"PIC Buttons in Assembly"},{"@type":"BreadcrumbList","@id":"https:\/\/bryceautomation.com\/index.php\/2023\/07\/14\/pic-buttons-in-assembly\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bryceautomation.com\/"},{"@type":"ListItem","position":2,"name":"PIC Buttons in Assembly"}]},{"@type":"WebSite","@id":"https:\/\/bryceautomation.com\/#website","url":"https:\/\/bryceautomation.com\/","name":"Bryce Automation","description":"Automating Home and Industry...","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bryceautomation.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7","name":"Ricky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bryceautomation.com\/wp-content\/wphb-cache\/gravatar\/a8f\/a8fe6bf79d292b388ffee281ccb12488x96.jpg","url":"https:\/\/bryceautomation.com\/wp-content\/wphb-cache\/gravatar\/a8f\/a8fe6bf79d292b388ffee281ccb12488x96.jpg","contentUrl":"https:\/\/bryceautomation.com\/wp-content\/wphb-cache\/gravatar\/a8f\/a8fe6bf79d292b388ffee281ccb12488x96.jpg","caption":"Ricky"},"sameAs":["http:\/\/bryceautomation.com","https:\/\/www.facebook.com\/ricky.bryce.7","https:\/\/www.linkedin.com\/in\/ricky-bryce-4367a416\/"],"url":"https:\/\/bryceautomation.com\/index.php\/author\/ricky\/"}]}},"_links":{"self":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts\/16974","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/comments?post=16974"}],"version-history":[{"count":0,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts\/16974\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media\/17003"}],"wp:attachment":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media?parent=16974"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/categories?post=16974"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/tags?post=16974"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}