{"id":14012,"date":"2022-10-23T20:27:30","date_gmt":"2022-10-23T20:27:30","guid":{"rendered":"https:\/\/bryceautomation.com\/?p=14012"},"modified":"2022-10-23T20:27:33","modified_gmt":"2022-10-23T20:27:33","slug":"cosmac-1802-lcd-timer","status":"publish","type":"post","link":"https:\/\/bryceautomation.com\/index.php\/2022\/10\/23\/cosmac-1802-lcd-timer\/","title":{"rendered":"COSMAC 1802 LCD Timer"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction to the COSMAC 1802 LCD Timer<\/h2>\n\n\n\n<p>In this section, we&#8217;ll build a COSMAC 1802 LCD Timer.  I&#8217;m using the CDP1802 Microprocessor kit for this with an LCD display.  The code will also display the value of the timer (up to 255) on the LED indicators.  Basically, to run the watch, just go to memory location 8000, and press GO.   In the future I&#8217;ll add new features to this stop watch using the EF1 and EF2 inputs for start and stop control.  For now, we&#8217;ll just keep things simple.  I&#8217;m just learning the COSMAC myself, so I&#8217;m sure there are better ways of doing this, but projects like this help us all to learn.  Every programmer has different methods.<\/p><div id=\"bryce-1374894056\" 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<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"337\" height=\"354\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/10\/cosmac3.png\" alt=\"\" class=\"wp-image-14014 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/10\/cosmac3.png 337w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/10\/cosmac3-286x300.png 286w\" data-sizes=\"(max-width: 337px) 100vw, 337px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 337px; --smush-placeholder-aspect-ratio: 337\/354;\" \/><\/figure>\n\n\n\n<p>I&#8217;m using the A18 Assembler to give us an Intel Hex file.  After that, we can load that hex file onto the COSMAC.  I&#8217;m using the LST file below as an example, and you can use the object code if you prefer keypad entry.<\/p>\n\n\n\n<p>For the LCD control, I used the CDP1802 Microprocessor Kit workbook as an example.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Create Aliases<\/h2>\n\n\n\n<p>Before we begin, there are a few things we need to do.   We&#8217;ll create some aliases that will help us with the logic later on.  Additionally, we need to set the files origin at 8000H.  As I said before, you may need to manipulate the code for it to work on your own COSMAC unit.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>   7200                 LCD_CWR:\tEQU\t7200H\n   7201                 LCD_DWR:\tEQU\t7201H\n   7202                 LCD_CRD:\tEQU\t7202h\n   7203                 LCD_DRD:\tEQU\t7203H\n                        \n   8000                 \torg\t8000H\n   0000                 R0\tEQU\t0\n   0001                 R1\tEQU\t1\n   0002                 R2\tEQU\t2\n   0003                 R3\tEQU\t3\n   0004                 R4\tEQU\t4\n   0005                 R5\tEQU\t5\n   0006                 R6\tEQU\t6\n   0007                 R7\tEQU\t7\n   0008                 R8\tEQU\t8\n   0009                 R9\tEQU\t9\n   000a                 RA\tEQU\t10\n   000b                 RB\tEQU\t11\n   000c                 RC\tEQU\t12\n   000d                 RD\tEQU\t13\n   000e                 RE\tEQU\t14\n   000f                 RF\tEQU\t15<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Initialize the Registers for the COSMAC 1802 LCD Timer<\/h2>\n\n\n\n<p>At this point, we need to put some initial values into the registers.  That way, our display is sure to start at zero.  At the end of this section, we&#8217;ll simply jump to the main loop.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>   8000   f8 00         \t\tLDI\t00H\n   8002   5b                            STR\tRB\n   8003   f8 70         \t\tLDI\t70H\n   8005   ba            \t\tPHI\tRA\n   8006   f8 00         \t\tLDI\t00H\n   8008   aa            \t\tPLO\tRA\n   8009   bb            \t\tPHI     RB\n   800a   ab            \t\tPLO     RB\n   800b   b7            \t\tPHI\tR7\n   800c   a7            \t\tPLO\tR7\n   800d   b8            \t\tPHI\tR8\n   800e   a8            \t\tPLO\tR8\n   800f   b9            \t\tPHI\tR9\n   8010   a9            \t\tPLO\tR9\n   8011   5a                            STR     RA\n   8012   30 1c                         BR\tMAIN<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Create the LCD Subroutine<\/h2>\n\n\n\n<p>Next, we need a way to handle the LCD, and wait until it&#8217;s ready.  Keep in mind that we are initially skipping over this subroutine.  Later on, though, our logic will set the program counter to R3 to execute this routine.  This subroutine is from the CDP1802 workbook.  Basically, we enter the subroutine at memory cell 8015  We load R5, and AND this value with 80H.  In other words, we check bit 3 to be high.  If it&#8217;s not high, then the result is zero.  Therefore, we continue to loop through this subroutine until the LCD is ready.  Once it&#8217;s ready, then we branch up to 8014 where we set the program counter back to zero.  This causes our logic to resume.  This is a typical method in the COSMAC for calling subroutines.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  ;LCD DRIVERS\n   8014   d0            RET_LCD1:\tSEP\tR0\n   8015   05            LCD_READY:\tLDN\tR5\n   8016   fa 80         \t\tANI\t80H\n   8018   3a 15         \t\tBNZ     LCD_READY\n   801a   30 14         \t\tBR\tRET_LCD1<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Initialize the LCD Registers<\/h2>\n\n\n\n<p>Keep in mind that the COSMAC uses a lot of indirect addressing.  We need to set some registers to point to the command and data registers for the LCD.  Later on, when we store values with the STR command, those values do not go to the registers themselves.  They go to the memory location the register contains.  After setting up the registers to point to the correct memory locations, we place the value of 1 into register 4 to enable the LCD and set it up to receive data.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>   801c   f8 72 b4 f8   MAIN:\tLOAD\tR4, LCD_CWR\n   8020   00 a4         \n   8022   f8 72 b5 f8   \t\tLOAD\tR5, LCD_CRD\n   8026   02 a5         \n   8028   f8 72 b6 f8   \t\tLOAD    R6, LCD_DWR\n   802c   01 a6         \n   802e   f8 80 b3 f8   \t\tLOAD\tR3, LCD_READY\n   8032   15 a3         \n   8034   d3            \t\tSEP\tR3\n   8035   f8 01         \t\tLDI\t01H\n   8037   54            \t\tSTR\tR4\n   8038   d3            \t\tSEP\tR3<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Write to the LCD<\/h2>\n\n\n\n<p>Later in this post, we&#8217;ll have counters in register 8 and 9.  To optimize usage of the registers, I used both the high and low bytes to store each digit we need to send to the LCD.  The R9 High byte contains the data for the most significant digit (on the left).  After that, R9 Low, contains the next digit, R8 High contains the third digit, and R8 Low contains the last digit.  This gives us the ability to count to 9999 seconds.<\/p>\n\n\n\n<p>Because the LCD displays data in ASCII, we need to add 30H to each digit to get into the numerical section of the ASCII code.  After we write each digit to the R6 register, we need to set the program counter back to R3.  This will execute the subroutine that waits for the LCD to become ready again.  Remember, once the LCD is ready, our routine sets the program counter back to R0.  This allows the COSMAC to resume execution where we left off.  After we write all four digits to the display, we&#8217;ll branch down to the TIMER logic.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>   8039   99            \t\tGHI\tR9\n   803a   fc 30                         ADI     30H\n   803c   56            \t\tSTR\tR6\n   803d   d3            \t\tSEP\tR3\n   803e   89            \t\tGLO\tR9\n   803f   fc 30         \t\tADI     30H\n   8041   56            \t\tSTR\tR6\n   8042   d3            \t\tSEP\tR3\n   8043   98            \t\tGHI\tR8\n   8044   fc 30         \t\tADI     30H\n   8046   56            \t\tSTR\tR6\n   8047   d3            \t\tSEP\tR3\n   8048   88            \t\tGLO\tR8\n   8049   fc 30         \t\tADI     30H\n   804b   56            \t\tSTR\tR6\n   804c   d3            \t\tSEP\tR3\n   804d   30 4f         \t\tBR\tTIMER<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Set up your Delays for  the COSMAC 1802 LCD Timer<\/h2>\n\n\n\n<p>In order to increment our seconds, we need to keep the processor busy until one second passes.  Here, I am creating 4 delay loops.  I&#8217;m nesting three of the loops.  By adjusting any one of the values in INIT0, INIT1, or INIT2, you are performing a &#8220;Course Adjust&#8221; to the time delay.  The value of INIT3 is for a FINE adjust.   If you find that you need even more fine tuning, you can simply add some NOP&#8217;s to the fine adjust loop.  For very fine tuning, you can add NOPS after the loop.  I could have used the 10ms tick as a timer, but not everyone will have that available.  That&#8217;s why I chose to use the delay loops.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>                        ;R8 is two LSDS\n                        ;R9 is two MSDS\n                        ;RA is for the GPIO\n                        ;RB is the counter\n                        ;RC is loop 0\n                        ;RD is loop 1\n                        ;RE is loop 2\n                        ;RF is loop 3 fine tune\n   804f   d0            TIMER:\t\tSEP\tR0\n   8050   f8 10         INIT0:\t\tLDI\t010H\n   8052   ac            DLY0:\t\tPLO\tRC\n   8053   f8 10         INIT1:\t\tLDI\t010H\n   8055   ad            DLY1:\t\tPLO\tRD\n   8056   f8 de         INIT2:\t\tLDI\t0DEH\n   8058   ae            DLY2:\t\tPLO\tRE\n   8059   2e            \t\tDEC\tRE\n   805a   8e            \t\tGLO\tRE\n   805b   3a 58         \t\tBNZ\tDLY2\n   805d   2d            \t\tDEC\tRD\n   805e   8d            \t\tGLO\tRD\n   805f   3a 55         \t\tBNZ\tDLY1\n   8061   2c            \t\tDEC\tRC\n   8062   8c            \t\tGLO\tRC\n   8063   3a 52         \t\tBNZ\tDLY0\n   8065   f8 f0         INIT3:\t        LDI\t0F0H\n   8067   af            DLY3:\t        PLO\tRF\n   8068   2f            \t\tDEC\tRF\n   8069   8f            \t\tGLO\tRF\n   806a   c4            \t\tNOP\n   806b   3a 67         \t\tBNZ\tDLY3<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Separate out the Digits<\/h2>\n\n\n\n<p>Remember, for the LCD display, we need all of the digits to be separate.    Keep in mind that R9 High\/Low contain the most significant digits.  R8 High\/Low contain the least significant digits.   To begin, we get the value of RB add 1, and store this value back to RB.  The problem, though, is that we don&#8217;t have a DECIMAL mode like we have on the 6502.  For this reason, after the ONES place gets to 0AH, we need to branch to the TENS.  This will reset the ONES portion of R8, and increment the TENS portion.  We repeat this for all four digits.<\/p>\n\n\n\n<p>After we reach 9999 seconds, we&#8217;ll just have it roll over.  You can extend this to as many digits as you need.  In this case, four was enough for me.<\/p>\n\n\n\n<p>After that, we go back to MAIN.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>   806d   8b            \t\tGLO\tRB\n   806e   fc 01         \t\tADI\t01H\n   8070   ab            \t\tPLO\tRB\n   8071   5a            \t\tSTR\tRA\n   8072   88            ONES:\t\tGLO\tR8\n   8073   fc 01         \t\tADI\t01H\n   8075   a8            \t\tPLO\tR8\n   8076   88            \t\tGLO\tR8\n   8077   fb 0a         \t\tXRI\t0AH\n   8079   3a 1c         \t\tBNZ\tMAIN\n   807b   30 7d         \t\tBR\tTENS\n   807d   f8 00         TENS:\t\tLDI\t00H\n   807f   a8            \t\tPLO\tR8\n   8080   98            \t\tGHI     R8\n   8081   fc 01         \t\tADI\t01H\n   8083   b8            \t\tPHI\tR8\n   8084   98            \t\tGHI\tR8\n   8085   fb 0a         \t\tXRI\t0AH\n   8087   3a 1c         \t\tBNZ\tMAIN\n   8089   30 8b         \t\tBR\tHUNDREDS\n   808b   f8 00         HUNDREDS:\tLDI\t00H\n   808d   b8            \t\tPHI\tR8\n   808e   89            \t\tGLO\tR9\n   808f   fc 01         \t\tADI\t01H\n   8091   a9            \t\tPLO\tR9\n   8092   89            \t\tGLO\tR9\n   8093   fb 0a         \t\tXRI\t0AH\n   8095   3a 1c         \t\tBNZ\tMAIN\n   8097   30 99         \t\tBR\tTHOUSANDS\n   8099   f8 00         THOUSANDS:\tLDI\t00H\n   809b   a9            \t\tPLO\tR9\n   809c   99            \t\tGHI\tR9\n   809d   fc 01         \t\tADI\t01H\n   809f   b9            \t\tPHI\tR9\n   80a0   99            \t\tGHI\tR9\n   80a1   fb 0a         \t\tXRI\t0AH\n   80a3   3a 1c         \t\tBNZ\tMAIN\n   80a5   30 a7         \t\tBR\tZERO\n   80a7   f8 00         ZERO:\t\tLDI\t00H\n   80a9   a9            \t\tPLO\tR9\n   80aa   30 1c         \t\tBR\tMAIN\n   80ac                 \t\tEND<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Run Your Code<\/h2>\n\n\n\n<p>Once you have the logic into the unit, you can go back to the programs starting address.  In this case, that is 8000H.  Press GO, and your timer should run!<\/p>\n\n\n\n<p>For more information, check out the <a href=\"https:\/\/bryceautomation.com\/index.php\/category\/vintage-computers\/cosmac\/\">COSMAC Category page!<\/a><\/p>\n\n\n\n<p>&#8212; Ricky Bryce<\/p>\n<div id=\"bryce-1206851476\" 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>Introduction to the COSMAC 1802 LCD Timer In this section, we&#8217;ll build a COSMAC 1802 LCD Timer. I&#8217;m using the CDP1802 Microprocessor kit for this with an LCD display. The code will also display the value of the timer (up to 255) on the LED indicators. Basically, to run the watch, just go to memory <a class=\"moretag btn btn-primary\" href=\"https:\/\/bryceautomation.com\/index.php\/2022\/10\/23\/cosmac-1802-lcd-timer\/\">Read More \u00bb<\/a><\/p>\n","protected":false},"author":1,"featured_media":14014,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[821,727],"tags":[291],"class_list":{"0":"post-14012","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-cosmac","8":"category-vintage-computers","9":"tag-timer","10":"czr-hentry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>COSMAC 1802 LCD Timer - Bryce Automation<\/title>\n<meta name=\"description\" content=\"Creating a COSMAC 1802 LCD Timer. We&#039;ll display the total number of seconds on the LCD attached to a CDP1802 Microprocessor kit\" \/>\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\/2022\/10\/23\/cosmac-1802-lcd-timer\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"COSMAC 1802 LCD Timer - Bryce Automation\" \/>\n<meta property=\"og:description\" content=\"Creating a COSMAC 1802 LCD Timer. We&#039;ll display the total number of seconds on the LCD attached to a CDP1802 Microprocessor kit\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bryceautomation.com\/index.php\/2022\/10\/23\/cosmac-1802-lcd-timer\/\" \/>\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=\"2022-10-23T20:27:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-10-23T20:27:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/10\/cosmac3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"337\" \/>\n\t<meta property=\"og:image:height\" content=\"354\" \/>\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\\\/2022\\\/10\\\/23\\\/cosmac-1802-lcd-timer\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/10\\\/23\\\/cosmac-1802-lcd-timer\\\/\"},\"author\":{\"name\":\"Ricky\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"headline\":\"COSMAC 1802 LCD Timer\",\"datePublished\":\"2022-10-23T20:27:30+00:00\",\"dateModified\":\"2022-10-23T20:27:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/10\\\/23\\\/cosmac-1802-lcd-timer\\\/\"},\"wordCount\":1021,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/10\\\/23\\\/cosmac-1802-lcd-timer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/10\\\/cosmac3.png\",\"keywords\":[\"timer\"],\"articleSection\":[\"COSMAC\",\"Vintage Computers\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/10\\\/23\\\/cosmac-1802-lcd-timer\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/10\\\/23\\\/cosmac-1802-lcd-timer\\\/\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/10\\\/23\\\/cosmac-1802-lcd-timer\\\/\",\"name\":\"COSMAC 1802 LCD Timer - Bryce Automation\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/10\\\/23\\\/cosmac-1802-lcd-timer\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/10\\\/23\\\/cosmac-1802-lcd-timer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/10\\\/cosmac3.png\",\"datePublished\":\"2022-10-23T20:27:30+00:00\",\"dateModified\":\"2022-10-23T20:27:33+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"description\":\"Creating a COSMAC 1802 LCD Timer. We'll display the total number of seconds on the LCD attached to a CDP1802 Microprocessor kit\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/10\\\/23\\\/cosmac-1802-lcd-timer\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/10\\\/23\\\/cosmac-1802-lcd-timer\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/10\\\/23\\\/cosmac-1802-lcd-timer\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/10\\\/cosmac3.png\",\"contentUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/10\\\/cosmac3.png\",\"width\":337,\"height\":354,\"caption\":\"COSMAC 1802 LCD Timer\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/10\\\/23\\\/cosmac-1802-lcd-timer\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bryceautomation.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"COSMAC 1802 LCD Timer\"}]},{\"@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":"COSMAC 1802 LCD Timer - Bryce Automation","description":"Creating a COSMAC 1802 LCD Timer. We'll display the total number of seconds on the LCD attached to a CDP1802 Microprocessor kit","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\/2022\/10\/23\/cosmac-1802-lcd-timer\/","og_locale":"en_US","og_type":"article","og_title":"COSMAC 1802 LCD Timer - Bryce Automation","og_description":"Creating a COSMAC 1802 LCD Timer. We'll display the total number of seconds on the LCD attached to a CDP1802 Microprocessor kit","og_url":"https:\/\/bryceautomation.com\/index.php\/2022\/10\/23\/cosmac-1802-lcd-timer\/","og_site_name":"Bryce Automation","article_author":"https:\/\/www.facebook.com\/ricky.bryce.7","article_published_time":"2022-10-23T20:27:30+00:00","article_modified_time":"2022-10-23T20:27:33+00:00","og_image":[{"width":337,"height":354,"url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/10\/cosmac3.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\/2022\/10\/23\/cosmac-1802-lcd-timer\/#article","isPartOf":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/10\/23\/cosmac-1802-lcd-timer\/"},"author":{"name":"Ricky","@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"headline":"COSMAC 1802 LCD Timer","datePublished":"2022-10-23T20:27:30+00:00","dateModified":"2022-10-23T20:27:33+00:00","mainEntityOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/10\/23\/cosmac-1802-lcd-timer\/"},"wordCount":1021,"commentCount":0,"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/10\/23\/cosmac-1802-lcd-timer\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/10\/cosmac3.png","keywords":["timer"],"articleSection":["COSMAC","Vintage Computers"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/bryceautomation.com\/index.php\/2022\/10\/23\/cosmac-1802-lcd-timer\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/10\/23\/cosmac-1802-lcd-timer\/","url":"https:\/\/bryceautomation.com\/index.php\/2022\/10\/23\/cosmac-1802-lcd-timer\/","name":"COSMAC 1802 LCD Timer - Bryce Automation","isPartOf":{"@id":"https:\/\/bryceautomation.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/10\/23\/cosmac-1802-lcd-timer\/#primaryimage"},"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/10\/23\/cosmac-1802-lcd-timer\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/10\/cosmac3.png","datePublished":"2022-10-23T20:27:30+00:00","dateModified":"2022-10-23T20:27:33+00:00","author":{"@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"description":"Creating a COSMAC 1802 LCD Timer. We'll display the total number of seconds on the LCD attached to a CDP1802 Microprocessor kit","breadcrumb":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/10\/23\/cosmac-1802-lcd-timer\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bryceautomation.com\/index.php\/2022\/10\/23\/cosmac-1802-lcd-timer\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/10\/23\/cosmac-1802-lcd-timer\/#primaryimage","url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/10\/cosmac3.png","contentUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/10\/cosmac3.png","width":337,"height":354,"caption":"COSMAC 1802 LCD Timer"},{"@type":"BreadcrumbList","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/10\/23\/cosmac-1802-lcd-timer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bryceautomation.com\/"},{"@type":"ListItem","position":2,"name":"COSMAC 1802 LCD Timer"}]},{"@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\/14012","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=14012"}],"version-history":[{"count":0,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts\/14012\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media\/14014"}],"wp:attachment":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media?parent=14012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/categories?post=14012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/tags?post=14012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}