<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: LCD1602+908JL16 in 8-bit Microcontrollers</title>
    <link>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133574#M3450</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hello,&lt;BR /&gt;&lt;BR /&gt;ist no problem to delay longer than nedded in the initilisation phase. So try a long delay.&lt;BR /&gt;Another way is to call the ROM routine delnus, should be at $FD35, to delay a defined number ob microseconds.&lt;BR /&gt;After initialisation you can check the Busy Flag if you have the R/W pin connected.&lt;BR /&gt;Try to use Delays that are longer than needed and if it works make the delay shorter until you get errors.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Eckhard&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 11 May 2007 18:36:59 GMT</pubDate>
    <dc:creator>eckhard</dc:creator>
    <dc:date>2007-05-11T18:36:59Z</dc:date>
    <item>
      <title>LCD1602+908JL16</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133568#M3444</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi,all&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I need to port LCD1602 to 908JL16CPE.&lt;/DIV&gt;&lt;DIV&gt;For we don't have many pins on JL16CPE, I need to configure LCD1602 as 4bit dataline,2 lines display,5*7 dot character.&lt;/DIV&gt;&lt;DIV&gt;I followed AN2940 "LCD Driver for the HC08/HCS08 Family" but it didn't work.&lt;/DIV&gt;&lt;DIV&gt;It appears not well initialized or I don't know any other possibilities.&lt;/DIV&gt;&lt;DIV&gt;Afer power on, the first line of LCD1602 displays all black blocks.&amp;nbsp;and no chars displayed.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I assume this is the result of insufficient initialization,is it right? or what?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;If anyone would provide me a tested LCD1602 subroutine example for HC908mcu, that will be great thanks.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Regard,&lt;/DIV&gt;&lt;DIV&gt;popup&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 11 May 2007 07:52:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133568#M3444</guid>
      <dc:creator>popup</dc:creator>
      <dc:date>2007-05-11T07:52:47Z</dc:date>
    </item>
    <item>
      <title>Re: LCD1602+908JL16</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133569#M3445</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi again popup,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I am looking at a returned product right now with exactly this symptom.&lt;/DIV&gt;&lt;DIV&gt;All the dots on in the top row is what you get if you simply power up one of these modules and don't talk to it. So you are correct in assuming that you are not initialising it correctly.&lt;/DIV&gt;&lt;DIV&gt;I obviously have some working code here but for 8-bit access and in assembler, you probably want C?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 11 May 2007 08:13:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133569#M3445</guid>
      <dc:creator>peg</dc:creator>
      <dc:date>2007-05-11T08:13:46Z</dc:date>
    </item>
    <item>
      <title>Re: LCD1602+908JL16</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133570#M3446</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Hello popup,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Initialising the display for a 4-bit interface mode&amp;nbsp;can be a little tricky.&amp;nbsp; One thing I would check is that the time delay after sending each command is adequate.&amp;nbsp; If this is bus rate dependent, you might need to adjust.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;In addition to AN2940, there is also AN1774 and AN1775.&amp;nbsp; The code associated with these application notes is in assembly,&amp;nbsp;for devices other than the HC908, and therefore not particularly useful to you.&amp;nbsp; However, they do give a more detailed description of the steps required for the display initialisation process, including the time delays necessary.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Regards,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Mac&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 11 May 2007 10:55:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133570#M3446</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2007-05-11T10:55:07Z</dc:date>
    </item>
    <item>
      <title>Re: LCD1602+908JL16</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133571#M3447</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hello,&lt;BR /&gt;&lt;BR /&gt;maybe this could helt you a little bit.&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://www.eckhard-gosch.de/download/ZwobLCD.zip" target="test_blank"&gt;http://www.eckhard-gosch.de/download/ZwobLCD.zip&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;Eckhard&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 11 May 2007 14:27:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133571#M3447</guid>
      <dc:creator>eckhard</dc:creator>
      <dc:date>2007-05-11T14:27:43Z</dc:date>
    </item>
    <item>
      <title>Re: LCD1602+908JL16</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133572#M3448</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Hi, mac&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I agree&amp;nbsp;with that, the time delay should be carefully checked.&lt;/DIV&gt;&lt;DIV&gt;In&amp;nbsp;fact, I usually use the TIM module to generate a&amp;nbsp;exact time, but never use a software delay subrutine for this. It's somewhat because of I don't know how long a delay subrutine really lasts.&lt;/DIV&gt;&lt;DIV&gt;I know that I should calculate the cpu cycles and the delay time=cycles/Fbus, but how can I "see" how many cycles for a&amp;nbsp;delay rutine in "C"?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;for instance,the following rutines were written in C for avr atmega8 uc under 8M OSC.&lt;/DIV&gt;&lt;DIV&gt;If I want to use such similar rutines, how can&amp;nbsp;I "see" the cycles and adjust the times of loops,so after that I can rewrite it to 908mcu?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="msg_source_code"&gt;&lt;SPAN class="text_smallest"&gt;Code:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;PRE&gt;for AVR atmega8cpu clock ：8M-----------------------------------------------------------------------*/#include "delay.h"void delay_1us(void)                 //1us delay  {   asm("nop");  }void delay_nus(unsigned int n)       //N us delay  {   unsigned int i=0;   for (i=0;i&amp;lt;n;i++)   delay_1us();  }  void delay_1ms(void)                 //1ms delay  {   unsigned int i;   for (i=0;i&amp;lt;1140;i++);  }  void delay_nms(unsigned int n)       //N ms delay  {   unsigned int i=0;   for (i=0;i&amp;lt;n;i++)   delay_1ms();  }&lt;/PRE&gt;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;Regards,&lt;/DIV&gt;&lt;DIV&gt;popup&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;&lt;BLOCKQUOTE&gt;&amp;nbsp;&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 11 May 2007 16:12:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133572#M3448</guid>
      <dc:creator>popup</dc:creator>
      <dc:date>2007-05-11T16:12:23Z</dc:date>
    </item>
    <item>
      <title>Re: LCD1602+908JL16</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133573#M3449</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi popup,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Quickest way is probably to run the code in the true time simulator and watch the cycle counter, then calculate the delay from there.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 11 May 2007 18:12:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133573#M3449</guid>
      <dc:creator>peg</dc:creator>
      <dc:date>2007-05-11T18:12:11Z</dc:date>
    </item>
    <item>
      <title>Re: LCD1602+908JL16</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133574#M3450</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hello,&lt;BR /&gt;&lt;BR /&gt;ist no problem to delay longer than nedded in the initilisation phase. So try a long delay.&lt;BR /&gt;Another way is to call the ROM routine delnus, should be at $FD35, to delay a defined number ob microseconds.&lt;BR /&gt;After initialisation you can check the Busy Flag if you have the R/W pin connected.&lt;BR /&gt;Try to use Delays that are longer than needed and if it works make the delay shorter until you get errors.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Eckhard&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 11 May 2007 18:36:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133574#M3450</guid>
      <dc:creator>eckhard</dc:creator>
      <dc:date>2007-05-11T18:36:59Z</dc:date>
    </item>
    <item>
      <title>Re: LCD1602+908JL16</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133575#M3451</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Hi, eckhard&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks a lot for help.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I noticed that this project is target to 908JK8. Does JL16 have a ROM-resident delay routine? I checked JL16 datasheet and didn't find any.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I will try to force every delay operation longer then expect period. It's a good idea!!!&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Anyway, do you know how to count the cycles from the .lst file?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Regards,&lt;/DIV&gt;&lt;DIV&gt;popup&lt;BR /&gt;&lt;/DIV&gt;&lt;BLOCKQUOTE&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 11 May 2007 18:54:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133575#M3451</guid>
      <dc:creator>popup</dc:creator>
      <dc:date>2007-05-11T18:54:48Z</dc:date>
    </item>
    <item>
      <title>Re: LCD1602+908JL16</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133576#M3452</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Hello popup,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Whether you use the timer, or count cycles, to generate a delay, the actual delay will still be dependent on the bus frequency, which might differ from that assumed for the application note.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;The DELNUS routine probably does exist for the JL16, but I cannot find any documentation that lists its address.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Another quite simple way of generating&amp;nbsp;relatively short delays, using the timer, is to -&lt;/FONT&gt;&lt;/DIV&gt;&lt;OL&gt;&lt;LI&gt;&lt;FONT size="2"&gt;Read the high byte of the timer counter register.&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT size="2"&gt;Increase the value by the amount of the delay required - this is then used as a reference value.&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT size="2"&gt;Within a tight loop,&amp;nbsp;wait for the high byte of the timer counter to exceed the reference value.&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT size="2"&gt;When the condition is met, exit the loop.&lt;/FONT&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;The timing resolution will&amp;nbsp;be 1/256 the timer overflow period (assuming default TMOD value of $FFFF), or 256 timer clock cycles.&amp;nbsp; In this case, the maximum delay cannot exceed the timer overflow period.&amp;nbsp; Note that, for the HC908 TIM module, after reading the high byte of the counter, you will also need a dummy read of the low byte to clear a read latch.&amp;nbsp; The timer must be running, but no interrupt is required.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Regards,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Mac&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 11 May 2007 22:28:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133576#M3452</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2007-05-11T22:28:44Z</dc:date>
    </item>
    <item>
      <title>Re: LCD1602+908JL16</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133577#M3453</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hello,&lt;BR /&gt;&lt;BR /&gt;when I had to delay by hand I did it this way :&lt;BR /&gt;&lt;BR /&gt;void delayt() {&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;_asm("\&lt;BR /&gt;lda #30 \n\&lt;BR /&gt;__dhbl:deca \n\&lt;BR /&gt;nop \n\&lt;BR /&gt;bne __dhbl \n\&lt;BR /&gt;");&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;so you have to count only the cycles of this few assembler statements.&lt;BR /&gt;&lt;BR /&gt;Eckhard&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 12 May 2007 05:07:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133577#M3453</guid>
      <dc:creator>eckhard</dc:creator>
      <dc:date>2007-05-12T05:07:56Z</dc:date>
    </item>
    <item>
      <title>Re: LCD1602+908JL16</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133578#M3454</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Hello,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;For those interested, the following code is that associated with the ROM based DELNUS sub-routine.&amp;nbsp; It is simple enough to place within your own code, if required (when you don't know the address of the ROM version).&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="Courier New" size="2"&gt;* NAME: _DELNUS&lt;BR /&gt;* PURPOSE: Delay N us&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="Courier New" size="2"&gt;* ENTRY CONDITIONS:&lt;BR /&gt;* X = Delay(us) / 12&lt;BR /&gt;* ACC = CPUbus(MHz) * 4 (= oscillator frequency)&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="Courier New" size="2"&gt;* SIZE: 10 BYTES&lt;BR /&gt;* STACK USED (INCLUDING CALL): 3 bytes&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="Courier New" size="2"&gt;* REMARKS:&lt;BR /&gt;* fop &amp;gt;= 1 MHz, minimum delay = 12 us (+5 cycles)&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="Courier New" size="2"&gt;************************************************************&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="Courier New" size="2"&gt;_DELNUS:&amp;nbsp; DECA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 1 cycle&lt;BR /&gt;NXTX:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PSHA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DECA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DECA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBNZA&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 3 Execute ACC-3 times&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PULA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBNZX&amp;nbsp; NXTX&amp;nbsp;&amp;nbsp; ; 3 Loop X times - X*(3*(ACC-3)+ 9)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RTS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 4&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Total delay = X*(3*ACC-9+9)+ 5 + Call&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 3*X*ACC + 5 + Call&lt;/FONT&gt;&lt;/DIV&gt;&lt;P&gt;&lt;FONT size="2"&gt;&lt;BR /&gt;The interesting point about the routine is its ability to allow for different bus rates by simply setting the value in ACC - and this consumes a total of only 10 bytes.&amp;nbsp; The maximum possible delay is a little over 3 ms.&lt;BR /&gt;&lt;BR /&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;Regards,&lt;BR /&gt;Mac&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;BR /&gt;&lt;BR /&gt;Message Edited by bigmac on &lt;SPAN class="date_text"&gt;2007-05-12&lt;/SPAN&gt; &lt;SPAN class="time_text"&gt;01:08 PM&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 12 May 2007 10:01:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133578#M3454</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2007-05-12T10:01:11Z</dc:date>
    </item>
    <item>
      <title>Re: LCD1602+908JL16</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133579#M3455</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi, all&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks a lot for all of you! With your help, I have successfully initialised and displayed chars on the LCD1602.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Again, many thanks to you all.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Regards,&lt;/DIV&gt;&lt;DIV&gt;popup&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 12 May 2007 12:13:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133579#M3455</guid>
      <dc:creator>popup</dc:creator>
      <dc:date>2007-05-12T12:13:26Z</dc:date>
    </item>
    <item>
      <title>Re: LCD1602+908JL16</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133580#M3456</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi, bigmac&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I use the tim module to generate exact delay for most applications.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I will try to use the method you suggest.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;But how did you know there is such ROM-residents routines outside of the datasheet? Maybe I need a list of that so I can use that in further design.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Regard,&lt;/DIV&gt;&lt;DIV&gt;popup&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 12 May 2007 12:16:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133580#M3456</guid>
      <dc:creator>popup</dc:creator>
      <dc:date>2007-05-12T12:16:30Z</dc:date>
    </item>
    <item>
      <title>Re: LCD1602+908JL16</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133581#M3457</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi, peg&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;In most cases I use In-circuit debugging, I&amp;nbsp;have not &amp;nbsp;found a register named cycles or such similiarity.&lt;/DIV&gt;&lt;DIV&gt;If&amp;nbsp;it is only in full chip simulation,&amp;nbsp;do you mean that I set a breakpoint before&amp;nbsp;calling of the delay subrutine and record the&amp;nbsp;CPU cycles counter as C1, and&amp;nbsp;set another breakpoint right after finishing calling this delay subrutine, then record the counter as C2.&amp;nbsp;So C2-C1=cycles of the delay rutine?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Regard,&lt;/DIV&gt;&lt;DIV&gt;popup&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 12 May 2007 12:23:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133581#M3457</guid>
      <dc:creator>popup</dc:creator>
      <dc:date>2007-05-12T12:23:30Z</dc:date>
    </item>
    <item>
      <title>Re: LCD1602+908JL16</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133582#M3458</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi popup,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The ROM resident routines are described in AN1831. They exist for flash programming but of course can be used for anything you like.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 12 May 2007 16:27:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133582#M3458</guid>
      <dc:creator>peg</dc:creator>
      <dc:date>2007-05-12T16:27:47Z</dc:date>
    </item>
    <item>
      <title>Re: LCD1602+908JL16</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133583#M3459</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi popup,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;In CW debugger or simulator (just a different mode of the same thing) the register window has a "CPU Cycles:" display. This does not exist on the device but is simulated in the programme. You can use the cycles x command in the command window to set it. (e.g. cycles 0 will reset it) then you either run to a breakpoint or step through all of your delay routine. Now multiply the cycles counter by the period and Whalaa!&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 12 May 2007 16:40:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133583#M3459</guid>
      <dc:creator>peg</dc:creator>
      <dc:date>2007-05-12T16:40:18Z</dc:date>
    </item>
    <item>
      <title>Re: LCD1602+908JL16</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133584#M3460</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Hello popup,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Perhaps you could tell us how the original problem was caused, and what you needed to do to fix it.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Regards,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Mac&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 12 May 2007 21:43:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/LCD1602-908JL16/m-p/133584#M3460</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2007-05-12T21:43:37Z</dc:date>
    </item>
  </channel>
</rss>

