<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=12&amp;t=8081&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-08-11T15:31:10+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=12&amp;t=8081&amp;mode</id>
<entry>
<author><name><![CDATA[WoodPaker]]></name></author>
<updated>2014-08-11T15:31:10+01:00</updated>
<published>2014-08-11T15:31:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=91090#p91090</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=91090#p91090"/>
<title type="html"><![CDATA[Re: Plik z rozszerzeniem ASM na Bascom]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=91090#p91090"><![CDATA[
A jak się dzisiaj będę nudził to dopisze resztę!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1425">WoodPaker</a> — 11 sie 2014, o 15:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[WoodPaker]]></name></author>
<updated>2014-08-10T23:36:34+01:00</updated>
<published>2014-08-10T23:36:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=91004#p91004</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=91004#p91004"/>
<title type="html"><![CDATA[Re: Plik z rozszerzeniem ASM na Bascom]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=91004#p91004"><![CDATA[
Jako, że mam chwilę czasu i mi się nudzi (nie mam weny twórczej) postanowiłem trochę pomóc i przetłumaczyć część programu. Nie będzie tego dużo bo oprócz nudzenia się to mam lenia ale na początek zawsze coś, a potem będę w miarę możliwości tłumaczył dalej <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />No to od początku<br /><br />Na początku mamy ustawienie zmiennych, z których korzysta program. Instrukcja asemblera EQU to nic innego jak przypisanie danej cyfry/liczby do zmiennej<br /><br />np <br /><br /><strong>.EQU</strong> jasiu = 400<br />jest równoznaczne z C<br /><strong>int</strong> jasiu=4;<br /><br /><br />Czyli w tej części mamy przypisanie zmiennych<br /><br />[syntax=asm].EQU    LowFrekv = 1667<br />    .EQU    HiFrekv =  1333<br />    .EQU    GuardFrekv = 2083<br />     <br />     <br />     <br />    ;* UBR=INT(clk/(16*Baud)-1+0.5)<br />     <br />    .EQU    BaudRate = 207          ;1200 Baud @4.000MHz<br />     <br />     <br />    ;**************************************************************************<br />    ;* Hardware Def.<br />     <br />     <br />    .EQU    FSKPort = PORTD<br />    .EQU    FSKPortDIR = DDRD<br />    .EQU    FSKBit = 4[/syntax]<br /><br />Następnie mamy segment danych .DSEG i segment danych EEPROM .ESEG<br /><br />[syntax=asm];***************************************************************************<br />    ;**** VARIABLES<br />    .DSEG<br />     <br />    ;***************************************************************************<br />    .ESEG<br />                    .DB     &quot;TriTone Modem &#91;2002.03.22.&#93; &quot;<br />                    .DB     &quot;Latest Upd.: 2002.05.29.&quot;<br />                    .DB     &quot;Rev:1.3.0 Final&quot;[/syntax]<br /><br />To czas na segment kodu czyli miejsce gdzie znajduje się właściwy program. Na początek zgodnie z opisem datasheeta str 44 tablica wektorów przerwań czyli informacje co powinno się wykonać (w tym wypadku skok do odpowiedniej funkcji ale może też być instrukcja RETI - powrót z przerwania)<br /><br />[syntax=asm]rjmp RESET              ;Reset Handle<br />                    rjmp EXT_INTO           ;IRQ0 Handle<br />                    rjmp EXT_INT1           ;IRQ1 Handle<br />                    rjmp TIM_CAPT1          ;Timer1 capture Handle<br />                    rjmp TIM_COMP1          ;Timer1 compare Handle<br />                    rjmp TIM_OVF1           ;Timer1 overflow Handle<br />                    rjmp TIM_OVF0           ;Timer0 overflow Handle<br />                    rjmp UART_RXC           ;UART RX Complete Handle<br />                    rjmp UART_DRE           ;UDR Empty Handle<br />                    rjmp UART_TXC           ;UART TX Complete Handle<br />                    rjmp ANA_COMP           ;Analog Comparator Handle[/syntax]<br /><br /><br />Czyli teraz czas na pierwszą funkcję wywoływaną zgodnie z opisem z PDF po resetowaniu procesora. W tym wypadku jest to funkcja nazwana RESET, a skok do niej mamy ustawiony w tablicy wektorów przerwań.<br /><br /><span style="color: #FF0000">OBSŁUGA RESET. Czyli co ma się uruchamiać zaraz po resecie</span>[syntax=asm]RESET:          CLI                     ;GLOBAL INTERRUP DIS.[/syntax]<br /><span style="color: #FF0000">     Ustawienie adresu stosu na koniec programu</span><br />[syntax=asm]ldi R16, low(RAMEND) <br />                    out SPL,R16[/syntax]<br /><span style="color: #FF0000">     USTAWIENIE Przerwań i tym podobnych. Zgodnie z opisem obok i na str 64 </span><br />[syntax=asm]LDI     R16,0b00101010  ;Sleep enable, Idle mode,INT0, INT1 edge sens.<br />                    OUT     MCUCR,R16       ;7. = 1 SRE External SRAM Enabled<br />                                            ;6. = 1 SRW Ext. SRAM Wait State Enabled<br />                                            ;5. = 1 Sleep Enable<br />                                            ;4. = 0 SLEEP =&gt; Idle Mode<br />                                            ;     1 SLEEP =&gt; Power Down Mode<br />                                            ;3:2 = Inerrupt Sense Control for INT1<br />                                            ; 00 -&gt; Low Level INT1<br />                                            ; 01 -&gt; Reserved<br />                                            ; 10 -&gt; Falling Edge INT1<br />                                            ; 11 -&gt; Rising Edge INT1<br />                                            ;1:0 = Inerrupt Sense Control for INT0<br />                                            ; 00 -&gt; Low Level INT0<br />                                            ; 01 -&gt; Reserved<br />                                            ; 10 -&gt; Falling Edge INT0<br />                                            ; 11 -&gt; Rising Edge INT0[/syntax]     <br /><span style="color: #FF0000">     Tego nie znalazlem w pdf</span><br />        [syntax=asm]LDI     R16,0b00000000  ;INT0, INT1 Disabled<br />                    OUT     GIMSK,R16       ;7. = 1 EXT INT1 ACTIVE<br />                                            ;6. = 1 EXT INT0 ACTIVE[/syntax]<br /><span style="color: #FF0000">     Ustawienie przerwań zegara zgodnie z opisem na stronie 70 PDF'a</span><br />[syntax=asm]LDI     R16,0b01000000<br />                    OUT     TIMSK,R16       ;7. = 1 TC1 OWRF EN.  *<br />                                            ;6. = 1 TC1 COMP MATCH EN.<br />                                            ;3. = 1 TC1 INP CAPTURE EN.<br />                                            ;1. = 1 TC0 OWRF EN.   *<br />     <br />    ;************************************<br />    ;**  Timer0 Init                *****<br />    ;**[/syntax]<br /><span style="color: #FF0000">Inicjalizacja Timera</span><br />[syntax=asm]InitTimer0:     LDI     R20,GuardFrekv<br />                    OUT     TCNT0,R16<br />                    LDI     R16,0b00000000<br />                    OUT     TCCR0,R16       ;TC0 Control Register<br />                                            ;2:0 Clock Select<br />                                            ; 000 -&gt; Stop<br />                                            ; 001 -&gt; CK<br />                                            ; 010 -&gt; CK/8<br />                                            ; 011 -&gt; CK/64<br />                                            ; 100 -&gt; CK/256<br />                                            ; 101 -&gt; CK/1024<br />                                            ; 110 -&gt; External pin T0 falling edge<br />                                            ; 111 -&gt; External pin T0 risinrg edge[/syntax]    <br /><span style="color: #FF0000">    Inicjalizacja timera zgodnie z opisem w komentarzach i str 70 pdf </span><br /> [syntax=asm]LDI     R17,0b00000000<br />                    OUT     TCCR1A,R17      ;Non-invert 8bit PWM,<br />                                            ;7:6 00 =&gt; OC1 not connected<br />                                            ;    01 =&gt; OC1 not connected<br />                                            ;    10 =&gt; OC1 non-inverted PWM<br />                                            ;    11 =&gt; OC1 inverted PWM<br />                                            ;1:0 00 =&gt; PWM Disabled<br />                                            ;    01 =&gt;  8 bit PWM<br />                                            ;    10 =&gt;  9 bit PWM<br />                                            ;    11 =&gt; 10 bit PWM<br />           <br />                    LDI     R17,0b00001001<br />                    OUT     TCCR1B,R17      ;Input Capture Dis., f=CLK/8<br />                                            ;7. = 0 Input Capture Noise Canceller Disabled<br />                                            ;6. = 0 InputCapture ICP Falling edge<br />                                            ;3. = 1 Reset TC1 when copare match<br />                                            ;2:0 Clock select<br />                                            ;   000 =&gt; TC1 Stop<br />                                            ;   001 =&gt; Ck<br />                                            ;   010 =&gt; Ck/8<br />                                            ;   011 =&gt; Ck/64<br />                                            ;   100 =&gt; Ck/256<br />                                            ;   101 =&gt; Ck/1024<br />                                            ;   110 =&gt; External T1 Falling Edge<br />                                            ;   111 =&gt; External T1 rising Edge[/syntax]     <br /><span style="color: #FF0000">     Inicjalizacja UART str 130 pdf'a</span><br />[syntax=asm];UART Init<br />                    LDI     R16,0b00011000          ;RXCIE,TXCIE,UDRIE,RXEN,TXEN,CHR9,RXB8,TXB8<br />                    OUT     UCR,R16<br />                    LDI     R16,BaudRate<br />                    OUT     UBRR,R16                ;BaudRate Gen.<br />                    ldi     R16,255<br />                    out     USR,R16                 ;status torlese<br />     <br />                                       <br />    ;FSK Port beallitas[/syntax] <br /><span style="color: #FF0000"> Ustawienie bitu 4 PORTD oraz bitu 4 DDRD na 1 patrz troche wyżej inicjalizacja zmeinnych</span><br />[syntax=asm]sbi     FSKPort,FSKBit          ;kimeneti = 1<br />                    sbi     FSKPortDIR,FSKBit       ;minden bit output<br />     <br />                    clr     R21                     ;bit counter lesz<br />                    clr     R19                     ;nincs uj uart adat<br />     <br />                    SEI                             ;SET GLOBAL INT EN.<br />                    RJMP    Main   SKOK DO GŁÓWNEJ CZĘŚCI PROGRAMU<br />     <br />     <br />    ;*******************[/syntax]<br /><br /><span style="color: #FF0000">Pozostałe funkcje obsługi przerwań. W tym wypadku tylko powrót bez robienia czegokolwiek (RETI)</span><br />[syntax=asm]EXT_INTO:       RETI<br />    EXT_INT1:       RETI<br />    TIM_CAPT1:      RETI<br />    TIM_COMP1:      RETI<br />    TIM_OVF1:       RETI<br />    ;********************<br />    ;* Timer0 Int<br />    ;*<br />    TIM_OVF0:       RETI<br />     <br />    ;*****************<br />    ;* UART RX COMPLET<br />    UART_RXC:       RETI<br />     <br />    ;*******************<br />    UART_DRE:       RETI<br />     <br />    ;******************<br />    ;* UART TX COMPLET<br />    UART_TXC:       RETI<br />     <br />    ANA_COMP:       RETI[/syntax]<br /><br />No i przyszedł czas na opis pętli głównej<strong> <em>main</em> </strong>programu. Tym razem opisy daje jako komentarze żeby co chwila nie przerywać listingu.<br />[syntax=asm]ldi     R20,3<br />     <br /> Guard3:         ldi     R16,High(GuardFrekv) ;przypisanie do rejestru R16 bajtu bardziej znaczącego liczby 2083 (patrz część dotycząca zmiennych)<br />                    out     OCR1AH,R16  ; Ustawienie rejestru OCR1AH i przypisanie mu rejestru R16<br />                    ldi     R16,Low(GuardFrekv) ;jednym słowem ustawiamy odpowiednie rejestry timera (preskalery itp) Strona 99 Dataszita<br />                    out     OCR1AL,R16<br />                    sleep<br />                    nop<br />     <br />                    cbi     FSKPort,FSKBit          ;FSK = L ;zerowanie 4 bitu PORTD<br />                    sleep ;uśpienie procesora<br />                    nop<br />                    sbi     FSKPort,FSKBit          ;FSK = H ;Ustawienie 1 w 4 bicie PORTD<br />                    dec     R20 ;zmniejszenie rejestru R20 (ustawionego na początku funkcji main liczbą 3)<br />                    brne    Guard3 ;jeżeli R20 nie jest równe zero to skocz do Guard3 jeśli jest to przejdź do następnej instrukcji<br />                                                    ;Guard vege van uj adat ay UARTon?<br />     <br />                    ldi     R20,1  <br />                    sbis    USR,RXC         ;Jeśli bit RXC w rejestrze USR jest ustawiony to olej linie poniżej. Jeśli nie to skocz do Guard3<br />                      rjmp  Guard3<br />                   ; zwukła obsługa USART<br />                    in      R5,UDR          ;R5=new data<br />                    ldi     R19,255         ;uj adat flag<br />                    out     USR,R19         ;status torlese<br />                    ldi     R21,8           ;8 bitet kell majd kirakni[/syntax]<br /><br />Na dzisiaj wystarczy. Mam nadzieje, że choć trochę pomogłem. Późno jest, a wczoraj byłem na weselu więc jak ktoś wyłapie jakiś błąd to nie krzyczeć tylko poprawić <img src="https://forum.atnel.pl/images/smilies/icon_twisted.gif" alt=":twisted:" title="Szalony" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1425">WoodPaker</a> — 10 sie 2014, o 23:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matrix]]></name></author>
<updated>2014-08-10T20:49:21+01:00</updated>
<published>2014-08-10T20:49:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=90997#p90997</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=90997#p90997"/>
<title type="html"><![CDATA[Re: Plik z rozszerzeniem ASM na Bascom]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=90997#p90997"><![CDATA[
Tak czy siak musisz znaleźć kogoś kto zna ASM i przynajmniej powie co ten program robi krok po kroku<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=689">matrix</a> — 10 sie 2014, o 20:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[WoodPaker]]></name></author>
<updated>2014-08-10T18:15:21+01:00</updated>
<published>2014-08-10T18:15:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=90971#p90971</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=90971#p90971"/>
<title type="html"><![CDATA[Re: Plik z rozszerzeniem ASM na Bascom]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=90971#p90971"><![CDATA[
To Ci nie pomogę <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1425">WoodPaker</a> — 10 sie 2014, o 18:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[slawek3000]]></name></author>
<updated>2014-08-10T17:58:40+01:00</updated>
<published>2014-08-10T17:58:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=90969#p90969</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=90969#p90969"/>
<title type="html"><![CDATA[Re: Plik z rozszerzeniem ASM na Bascom]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=90969#p90969"><![CDATA[
łatwiej mi go zrozumieć<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=988">slawek3000</a> — 10 sie 2014, o 17:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[WoodPaker]]></name></author>
<updated>2014-08-10T17:39:58+01:00</updated>
<published>2014-08-10T17:39:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=90967#p90967</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=90967#p90967"/>
<title type="html"><![CDATA[Re: Plik z rozszerzeniem ASM na Bascom]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=90967#p90967"><![CDATA[
A czemu akurat bascom? Nie może być C? <img src="https://forum.atnel.pl/images/smilies/icon_twisted.gif" alt=":twisted:" title="Szalony" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1425">WoodPaker</a> — 10 sie 2014, o 17:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[slawek3000]]></name></author>
<updated>2014-08-10T16:39:51+01:00</updated>
<published>2014-08-10T16:39:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=90959#p90959</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=90959#p90959"/>
<title type="html"><![CDATA[Re: Plik z rozszerzeniem ASM na Bascom]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=90959#p90959"><![CDATA[
Hmm.. jak bym znał to już bym tłumaczył <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=988">slawek3000</a> — 10 sie 2014, o 16:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matrix]]></name></author>
<updated>2014-08-10T16:01:20+01:00</updated>
<published>2014-08-10T16:01:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=90953#p90953</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=90953#p90953"/>
<title type="html"><![CDATA[Re: Plik z rozszerzeniem ASM na Bascom]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=90953#p90953"><![CDATA[
Jeśli znasz asm to się da.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=689">matrix</a> — 10 sie 2014, o 16:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[slawek3000]]></name></author>
<updated>2014-08-10T14:35:46+01:00</updated>
<published>2014-08-10T14:35:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=90935#p90935</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=90935#p90935"/>
<title type="html"><![CDATA[Plik z rozszerzeniem ASM na Bascom]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8081&amp;p=90935#p90935"><![CDATA[
Witam,<br /><br />Czy można przerobić plik z rozszerzeniem ASM na plik z Bascoma , mam coś takiego <br />[syntax=asm];***************************************************************************<br />; <br />; File Name:'Main.asm&quot;<br />; Title:TriTone AFSK Modulator <br />; Date:2002.03.22.<br />; Version:1.3.0<br />; Support telephone:+36-70-333-4034<br />; Support fax:<br />; Support Email:info@vfx.hu<br />; Target MCU:AT90S2313<br />; <br />;***************************************************************************<br />;D E S C R I P T I O N<br />;<br />;  PD4: TTL Output for FSK<br />;  Rxd: FSK Data Input (1200 baud)<br />;<br />;***************************************************************************<br />;M O D I F I C A T I O N   H I S T O R Y <br />;<br />;<br />;       rev.      date      who  why<br />;--------------  ---------------------------------------<br />;0.012002.03.22  VFXCreation<br />;1.102002.04.17  VFXTriTone Modulation <br />;       1.30    2002.05.23  VFXNegyszog jeles modulacio<br />;<br />;<br />;***************************************************************************<br />;Hardware<br />;***************************************************************************<br />;*<br />;*Kvarc: f=4.000 MHz (T=125.00ns)<br />;*<br />;***************************************************************************<br />;<br />;<br />;<br />.include &quot;2313def.inc&quot;<br /><br /><br />;***************************************************************************<br />;* Const Def<br /><br />;* fel periodusidok @4MHz:<br />;* 1200Hz  -&gt; 1667 -&gt; Low bit<br />;* 1500Hz  -&gt; 1333 -&gt; High bit<br />;*  960Hz  -&gt; 2083 -&gt; Guard (Tone)<br /><br />.EQULowFrekv = 1667<br />.EQUHiFrekv =  1333<br />.EQUGuardFrekv = 2083<br /><br /><br /><br />;* UBR=INT(clk/(16*Baud)-1+0.5)<br /><br />.EQUBaudRate = 207;1200 Baud @4.000MHz<br /><br /><br />;**************************************************************************<br />;* Hardware Def.<br /><br /><br />.EQUFSKPort = PORTD<br />.EQUFSKPortDIR = DDRD<br />.EQUFSKBit = 4<br /><br /><br />;***************************************************************************<br />;**** VARIABLES<br />.DSEG<br /><br />;***************************************************************************<br />.ESEG<br />.DB &quot;TriTone Modem &#91;2002.03.22.&#93; &quot;<br />.DB&quot;Latest Upd.: 2002.05.29.&quot;<br />.DB&quot;Rev:1.3.0 Final&quot;<br /><br /><br />;*****************************************************************************<br />;****I N T E R R U P T S<br />;****<br />;*****************************************************************************<br />.CSEG<br />rjmp RESET;Reset Handle<br />rjmp EXT_INTO;IRQ0 Handle<br />rjmp EXT_INT1;IRQ1 Handle<br />rjmp TIM_CAPT1;Timer1 capture Handle<br />rjmp TIM_COMP1;Timer1 compare Handle<br />rjmp TIM_OVF1;Timer1 overflow Handle<br />rjmp TIM_OVF0;Timer0 overflow Handle<br />rjmp UART_RXC;UART RX Complete Handle<br />rjmp UART_DRE;UDR Empty Handle<br />rjmp UART_TXC;UART TX Complete Handle<br />rjmp ANA_COMP;Analog Comparator Handle<br /><br />;********************************<br />;* RESET <br />;********************************<br />RESET:CLI;GLOBAL INTERRUP DIS.<br /><br />ldi R16, low(RAMEND)<br />out SPL,R16<br /><br />LDIR16,0b00101010;Sleep enable, Idle mode,INT0, INT1 edge sens.<br />OUTMCUCR,R16;7. = 1 SRE External SRAM Enabled<br />;6. = 1 SRW Ext. SRAM Wait State Enabled<br />;5. = 1 Sleep Enable<br />;4. = 0 SLEEP =&gt; Idle Mode<br />;     1 SLEEP =&gt; Power Down Mode<br />;3:2 = Inerrupt Sense Control for INT1<br />; 00 -&gt; Low Level INT1<br />; 01 -&gt; Reserved<br />; 10 -&gt; Falling Edge INT1<br />; 11 -&gt; Rising Edge INT1<br />;1:0 = Inerrupt Sense Control for INT0<br />; 00 -&gt; Low Level INT0<br />; 01 -&gt; Reserved<br />; 10 -&gt; Falling Edge INT0<br />; 11 -&gt; Rising Edge INT0<br /><br /><br /><br />LDIR16,0b00000000;INT0, INT1 Disabled<br />OUTGIMSK,R16;7. = 1 EXT INT1 ACTIVE<br />;6. = 1 EXT INT0 ACTIVE<br /><br /><br /><br />LDIR16,0b01000000<br />OUTTIMSK,R16 ;7. = 1 TC1 OWRF EN.  *<br />;6. = 1 TC1 COMP MATCH EN.<br />;3. = 1 TC1 INP CAPTURE EN.<br />;1. = 1 TC0 OWRF EN.   *<br /><br />;************************************<br />;**  Timer0 Init*****<br />;**<br />InitTimer0:LDIR20,GuardFrekv<br />OUTTCNT0,R16 <br />LDIR16,0b00000000<br />OUTTCCR0,R16;TC0 Control Register<br />;2:0 Clock Select<br />; 000 -&gt; Stop<br />; 001 -&gt; CK<br />; 010 -&gt; CK/8<br />; 011 -&gt; CK/64<br />; 100 -&gt; CK/256<br />; 101 -&gt; CK/1024<br />; 110 -&gt; External pin T0 falling edge<br />; 111 -&gt; External pin T0 risinrg edge<br /><br /><br />;*****************<br />; Timer1 Setup<br /><br /><br />LDIR17,0b00000000<br />OUTTCCR1A,R17;Non-invert 8bit PWM, <br />;7:6 00 =&gt; OC1 not connected<br />;    01 =&gt; OC1 not connected<br />;    10 =&gt; OC1 non-inverted PWM<br />;    11 =&gt; OC1 inverted PWM<br />;1:0 00 =&gt; PWM Disabled<br />;    01 =&gt;  8 bit PWM<br />;    10 =&gt;  9 bit PWM<br />;    11 =&gt; 10 bit PWM<br />       <br />LDIR17,0b00001001<br />OUTTCCR1B,R17;Input Capture Dis., f=CLK/8<br />;7. = 0 Input Capture Noise Canceller Disabled<br />;6. = 0 InputCapture ICP Falling edge<br />;3. = 1 Reset TC1 when copare match<br />;2:0 Clock select<br />;   000 =&gt; TC1 Stop<br />;   001 =&gt; Ck<br />;   010 =&gt; Ck/8<br />;   011 =&gt; Ck/64<br />;   100 =&gt; Ck/256<br />;   101 =&gt; Ck/1024<br />;   110 =&gt; External T1 Falling Edge<br />;   111 =&gt; External T1 rising Edge<br /><br /><br /><br />;UART Init <br />LDIR16,0b00011000;RXCIE,TXCIE,UDRIE,RXEN,TXEN,CHR9,RXB8,TXB8<br />OUTUCR,R16<br />LDIR16,BaudRate<br />OUTUBRR,R16;BaudRate Gen.<br />ldiR16,255<br />outUSR,R16;status torlese<br /><br />                                   <br />;FSK Port beallitas<br /><br />sbiFSKPort,FSKBit;kimeneti = 1<br />sbiFSKPortDIR,FSKBit;minden bit output<br /><br />clrR21;bit counter lesz<br />clrR19;nincs uj uart adat<br /><br />SEI;SET GLOBAL INT EN.<br />RJMPMain<br /><br /><br />;*******************<br />EXT_INTO:RETI<br />EXT_INT1:RETI<br />TIM_CAPT1:RETI<br />TIM_COMP1:RETI<br />TIM_OVF1:RETI<br /><br />;********************<br />;* Timer0 Int<br />;* <br />TIM_OVF0:RETI<br /><br />;*****************<br />;* UART RX COMPLET <br />UART_RXC:RETI<br /><br />;*******************<br />UART_DRE:RETI<br /><br />;******************<br />;* UART TX COMPLET <br />UART_TXC:RETI<br /><br />ANA_COMP:RETI<br /><br /><br /><br />;***********************************************************************<br />;***********************************************************************<br />;********     M     A      I      N********<br />;****************<br />;***********************************************************************<br />Main:<br /><br />;elosszor 3 db guard jelet kell kikuldeni <br /><br />ldiR20,3<br /><br />Guard3:ldiR16,High(GuardFrekv)<br />outOCR1AH,R16<br />ldiR16,Low(GuardFrekv)<br />outOCR1AL,R16<br />        sleep<br />nop<br /><br />cbiFSKPort,FSKBit;FSK = L<br />sleep<br />nop<br />sbiFSKPort,FSKBit;FSK = H<br />decR20<br />brneGuard3<br />;Guard vege van uj adat ay UARTon?<br /><br />ldiR20,1<br />sbisUSR,RXC;jott uj adat?<br />  rjmpGuard3<br /><br />inR5,UDR;R5=new data<br />ldiR19,255;uj adat flag<br />outUSR,R19;status torlese<br />ldiR21,8;8 bitet kell majd kirakni<br /><br />VanMegBit:<br />ldiZL,Low(HiFrekv)<br />ldiZH,High(HiFrekv)<br />                rorR5;0. bit lesz elkuldve<br />brcsMakeBit<br />ldiZL,Low(LowFrekv)<br />ldiZH,High(LowFrekv)<br /><br />MakeBit:<br />outOCR1AH,ZH<br />outOCR1AL,ZL<br /><br />sleep<br />nop<br />cbiFSKPort,FSKBit;FSK = L<br />sleep<br />nop<br />sbiFSKPort,FSKBit;FSK = H<br /><br />decR21<br />brneVanMegBit<br /><br />                ldiR20,2;minden byte utan min. 2 db guard<br />rjmpGuard3[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=988">slawek3000</a> — 10 sie 2014, o 14:35</p><hr />
]]></content>
</entry>
</feed>