{"id":14411,"date":"2022-10-07T17:58:59","date_gmt":"2022-10-07T12:28:59","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/"},"modified":"2022-10-07T17:58:59","modified_gmt":"2022-10-07T12:28:59","slug":"solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/","title":{"rendered":"[Solved] Using a string array in a C++ loop to switch between PIC I\/O pins"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-25857875\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"25857875\" data-parentid=\"25857083\" data-score=\"1\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>Your root issue is that you want to send a set of port pins to a function.  <\/p>\n<h2>Port Pins are not strings<\/h2>\n<p>The identifiers <code>PORTA<\/code> and the like are not strings.  They are reserved words for the PIC compilers.  They represent an addressible location (either port or memory mapped).<\/p>\n<p>The dot notation, <code>PORTA.3<\/code>, refers to a bit number of the port.  <\/p>\n<p>The counter example would be copying a value to `&#8221;PORT_FROG.8&#8243;.<br \/>\nHave you tried using the following:  <\/p>\n<pre><code>  const char port_a_3[] = \"PORTA.3\";\n  *port_a_3 = 5;\n<\/code><\/pre>\n<p>The problem is that the last statement modifies a text literal and does&#8217;t write to the port.<\/p>\n<h2>Passing Port Pins to a function<\/h2>\n<p>You will need to look up the syntax for passing the address of a port bit, and how to pass the address of a port.  If there is no documentation or examples, things will get complex.  <\/p>\n<p>The most portable method would be to create a <code>Port<\/code> class and pass around instances of that or you could use some kind of <code>std::pair<\/code> where you supply a port ID and a bit number.  <\/p>\n<h2>More efficient hardware design<\/h2>\n<p>A more intriguing question:  Is your platform designed efficiently?<br \/>\nUsually, you can convince hardware folk to place lines of similar functionality next to each other.  This way, you can take a snapshot of their status by reading the entire port instead of reading different bits from different ports.<\/p>\n<h2>Unifying Port Bits<\/h2>\n<p>I highly suggest that you write a function that reads the specified disjoint bits into one number and another function that can write them.  In this concept, you will have all the status in one unit and can pass that status around to functions.  If you need to write to the disjoint pins as a group, you can call your <code>write<\/code> function.  <\/p>\n<h2>Summary<\/h2>\n<p>The root requirement is that you want to pass a set of port pin addresses to functions so that they can read and write to port pins.  This is not available in standard C++, so you will have to look at your PIC compiler documentation to see if it is possible.  There are other alternatives, such as passing around models of ports; port &amp; bit pairs; coding functions that read and write multiple pins into one status unit; or changing the hardware to make the software easier to develop.  Sorry, but the port identifiers are not text literals or strings and cannot be manipulated that way.  <\/p>\n<p><strong>Edit 1:<\/strong><br \/>\nYou may be able to pass a structure that is mapped to a port.  Again, look at the compiler documentation.<\/p>\n<p>Example:<\/p>\n<pre><code>  struct MyPort_Model\n  {\n     unsigned int bit_0 : 1;\n     unsigned int bit_1 : 1;\n     unsigned int bit_2 : 1;\n     unsigned int bit_3 : 1;\n  } my_port_variable @ PORTA;\n<\/code><\/pre>\n<p>Another example:<\/p>\n<pre><code>  struct Model_4_bit_HW_Item\n  {\n     unsigned int MOSI : 1;\n     unsigned int MISO : 1;\n     unsigned int clock : 1;\n     unsigned int chip_select : 1;\n     unsigned int reserved : 4;\n     void read_from_port(void)\n     {\n       MOSI = PORTA.0;\n       MISO = PORTA.1;\n       clock = PORTA.2;\n       reserved = PORTA.3;\n     }\n  };\n<\/code><\/pre>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">1<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Using a string array in a C++ loop to switch between PIC I\/O pins <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Your root issue is that you want to send a set of port pins to a function. Port Pins are not strings The identifiers PORTA and the like are not strings. They are reserved words for the PIC compilers. They represent an addressible location (either port or memory mapped). The dot notation, PORTA.3, refers &#8230; <a title=\"[Solved] Using a string array in a C++ loop to switch between PIC I\/O pins\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/\" aria-label=\"More on [Solved] Using a string array in a C++ loop to switch between PIC I\/O pins\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[361,324,3067],"class_list":["post-14411","post","type-post","status-publish","format-standard","hentry","category-solved","tag-arrays","tag-c","tag-microcontroller"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Using a string array in a C++ loop to switch between PIC I\/O pins - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Using a string array in a C++ loop to switch between PIC I\/O pins - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] Your root issue is that you want to send a set of port pins to a function. Port Pins are not strings The identifiers PORTA and the like are not strings. They are reserved words for the PIC compilers. They represent an addressible location (either port or memory mapped). The dot notation, PORTA.3, refers ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-07T12:28:59+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Using a string array in a C++ loop to switch between PIC I\/O pins\",\"datePublished\":\"2022-10-07T12:28:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/\"},\"wordCount\":450,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"arrays\",\"c++\",\"microcontroller\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/\",\"name\":\"[Solved] Using a string array in a C++ loop to switch between PIC I\/O pins - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-10-07T12:28:59+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Using a string array in a C++ loop to switch between PIC I\/O pins\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Using a string array in a C++ loop to switch between PIC I\/O pins - JassWeb","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:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Using a string array in a C++ loop to switch between PIC I\/O pins - JassWeb","og_description":"[ad_1] Your root issue is that you want to send a set of port pins to a function. Port Pins are not strings The identifiers PORTA and the like are not strings. They are reserved words for the PIC compilers. They represent an addressible location (either port or memory mapped). The dot notation, PORTA.3, refers ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/","og_site_name":"JassWeb","article_published_time":"2022-10-07T12:28:59+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Using a string array in a C++ loop to switch between PIC I\/O pins","datePublished":"2022-10-07T12:28:59+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/"},"wordCount":450,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["arrays","c++","microcontroller"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/","url":"https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/","name":"[Solved] Using a string array in a C++ loop to switch between PIC I\/O pins - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-10-07T12:28:59+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-using-a-string-array-in-a-c-loop-to-switch-between-pic-i-o-pins\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Using a string array in a C++ loop to switch between PIC I\/O pins"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/14411","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=14411"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/14411\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=14411"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=14411"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=14411"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}