Tid för en NOP med en PIC16F84 klockad med 20 MHz?
Tid för en NOP med en PIC16F84 klockad med 20 MHz?
Hur beräknar man hur lång tid en NOP tar på en PIC16F84 som klockas på 20 MHz?
Någon som vet (på rak arm) exakt hur lång tid det tar?
Länk kanske?
Hittad denna:
http://www.mikroe.com/en/books/picbook/2_01chapter.htm
Tar en NOP åtta perioder från osc1 klockan? Fyra för att hämta och fyra för att utföra? Åtta cykler borde då vara 8*1/20*10^6 s vilket blir 0,4 µs? Kan det stämma?
Någon som vet (på rak arm) exakt hur lång tid det tar?
Länk kanske?
Hittad denna:
http://www.mikroe.com/en/books/picbook/2_01chapter.htm
Tar en NOP åtta perioder från osc1 klockan? Fyra för att hämta och fyra för att utföra? Åtta cykler borde då vara 8*1/20*10^6 s vilket blir 0,4 µs? Kan det stämma?
Re: Tid för en NOP med en PIC16F84 klockad med 20 MHz?
En NOP ta lika lång tid som de flesta instruktionerna, det vill säga en instruktionscykel. En instruktionscykel tar 4 klockcykler.
En NOP tar alltså: 4/20M s = 0,2 us
En NOP tar alltså: 4/20M s = 0,2 us
Re: Tid för en NOP med en PIC16F84 klockad med 20 MHz?
Okej, men på s34 här http://ww1.microchip.com/downloads/en/d ... 35007b.pdf så verkar det som om det tar fyra klockcykler att hämta instruktionen innan den exekveras och vid exekveringen ökas programräknaren samtidigt med 1. Totalt åtta cykler per instruktion alltså?
Re: Tid för en NOP med en PIC16F84 klockad med 20 MHz?
Har inte läst dokumentet, men jag vet att jag har rätt.
EDIT:
sida 34 är blank.
EDIT:
sida 34 är blank.
Re: Tid för en NOP med en PIC16F84 klockad med 20 MHz?
"verkar det som om det tar fyra klockcykler att hämta instruktionen innan den exekveras"
En PIC har väl en instruktionsrörledning som dom flesta andra processorer?
Dvs, under tiden en instruction exekveras, laddas nästa instruktion från minnet.
En PIC har väl en instruktionsrörledning som dom flesta andra processorer?
Dvs, under tiden en instruction exekveras, laddas nästa instruktion från minnet.
Re: Tid för en NOP med en PIC16F84 klockad med 20 MHz?
Jag tror du blandar äpplen med päron. Om du tittar på den sida du hänvisar till så ser du diagrammet / tabellen längst ner. Överst ser du Q1-Q4 (oscillatorn), och dessa kallas för Q-cykler. En instruktionscykel består av 4st Q-cykler. Det är därför klocktiden formuleras som Fosc = 4 / (Oscillatorns MHz). I ditt fall blir det 4/20000000 = 200ns för alla instruktioner utom villkorliga hopp (goto, btsfc, btsfs, osv).e5frog skrev:Totalt åtta cykler per instruktion alltså?
Och som mri skriver har en PIC pipelining för instruktionsflödet. Detta innebär att samtidigt när en instruktion utförs så hämtas nästa, parallellt. Direkt därefter utförs nästa, och när det sker hämtas nästa, osv. Du ser detta i samma tabell under "instruction flow".
Re: Tid för en NOP med en PIC16F84 klockad med 20 MHz?
Figur 6.12 på pdf-dokumentets sida 34, vilket är s 32 enligt sidnumreringen i dokumentet.bearing skrev:Har inte läst dokumentet, men jag vet att jag har rätt.
EDIT:
sida 34 är blank.
Tittar man i databladet till PIC16F628 så ser man dock att den hämtar instruktion samtidigt som den utför den föregående.
http://ww1.microchip.com/downloads/en/D ... 40300C.pdf
pdf-sida 13, bild 2-2
Så då var väl det löst, tack för hjälpen. Fyra NOP tar alltså endast 0,8 µs... Då kan jag som bäst ersätta dessa fyra men en NOP som då tar 1 µs med en 4MHz-klockad PIC16C84...
Jag försöker dumpa en Fairchild System Videocart med en PIC16C84 @ 4MHz och har anpassat ett program avsett för en PIC16F84 @ 20MHz (eftersom det var det jag hade hemma). Det funkar ibland, ibland inte och ibland till hälften. Det är tyvärr inga vanliga rom:ar utan PSU:er där man är tvungen att via speciella styrsignaler ta fram en instruktion i taget på databussen och spara undan.
(den intresserade kan kika här: http://veswiki.com/Videocart_dumper)
Det kanske blir till att köpa en PIC16F628 på Kjell & Company när lönen kommer, så kan jag väl köra originalkoden nästan rakt av - om det nu inte är den det är fel på. För det är väl den modellen som gäller nuförtiden? Krets 59 kr, kristall 15 kr och ett paket kondensatorer för 79 kr (känns ju surt med ett helt paket när man egentligen bara två till oscillatorn).
Upptäckte också när jag testade lite olika varianter igår kväll att det gick utmärkt att debug:a ut datan direkt från PIC:en till serie-porten på laptopen och sen logga alla indata, känns som hela *232-bygget på andra sidan experimentkortet är ihopknåpat helt i onödan. Men men det kanske inte funkar på alla serieportar.
Re: Tid för en NOP med en PIC16F84 klockad med 20 MHz?
> För det är väl den modellen som gäller nuförtiden?
Beror väl helt på vad man vill göra...
Jag har 628a, 2st kondingar samt kristall (20MHz) hemma, om du är intresserad. Det är ditt för 60 spänn plus 12 frakt.
Beror väl helt på vad man vill göra...
Jag har 628a, 2st kondingar samt kristall (20MHz) hemma, om du är intresserad. Det är ditt för 60 spänn plus 12 frakt.
Re: Tid för en NOP med en PIC16F84 klockad med 20 MHz?
Om du har färdig kod till en F84 som fungerar så är det ju enklast att använda den.
Det är lite oklart vad du har och inte har, vad som fungerar och vad som inte fungerar
och vad det är du vill göra...
> Det kanske blir till att köpa en PIC16F628 på Kjell & Company när lönen kommer,
Ha ha, den var bra...
Det är lite oklart vad du har och inte har, vad som fungerar och vad som inte fungerar
och vad det är du vill göra...
> Det kanske blir till att köpa en PIC16F628 på Kjell & Company när lönen kommer,
Ha ha, den var bra...

Re: Tid för en NOP med en PIC16F84 klockad med 20 MHz?
Det låter som en affär, är tyvärr luspank just nu, du kanske kan hålla på de en vecka?bos skrev:> För det är väl den modellen som gäller nuförtiden?
Beror väl helt på vad man vill göra...
Jag har 628a, 2st kondingar samt kristall (20MHz) hemma, om du är intresserad. Det är ditt för 60 spänn plus 12 frakt.
Re: Tid för en NOP med en PIC16F84 klockad med 20 MHz?
Gissar att det är pga PICBasic du inte får det att fungera i 4-MHz, skriv om i C eller ASM, så funkar det säkert väldigt bra.
Re: Tid för en NOP med en PIC16F84 klockad med 20 MHz?
> Gissar att det är pga PICBasic du inte får det att fungera i 4-MHz,
Som koden är skriven (i princip assembler i BASIC syntax) så tror jag inte
att det spelar någon större roll. Det kommer att kompilieras till ganska
ren assembler. T.ex denna BASCI kod :blev denna assembler kod :vilket ju i princip är samma sak...
Som koden är skriven (i princip assembler i BASIC syntax) så tror jag inte
att det spelar någon större roll. Det kommer att kompilieras till ganska
ren assembler. T.ex denna BASCI kod :
Kod: Markera allt
f8phi=1
f8write=1
@ nop ;NOPs used to create square waves
@ nop
@ nop
@ nop
f8phi=0
@ nop
@ nop
@ nop
@ nop
f8write=0
f8phi=1
f8romc3=0
@ nop
@ nop
@ nop
@ nop
Kod: Markera allt
105 068 1485 BSF 0x5, 0x1
106 069 1505 BSF 0x5, 0x2
107 06A 0000 NOP
108 06B 0000 NOP
109 06C 0000 NOP
110 06D 0000 NOP
111 06E 1085 BCF 0x5, 0x1
112 06F 0000 NOP
113 070 0000 NOP
114 071 0000 NOP
115 072 0000 NOP
116 073 1105 BCF 0x5, 0x2
117 074 1485 BSF 0x5, 0x1
118 075 1185 BCF 0x5, 0x3
119 076 0000 NOP
120 077 0000 NOP
121 078 0000 NOP
122 079 0000 NOP
Minsta tillåtna klockhastighet?
Tror att problemet är timingen, 4MHz ger inte utrymme till tillräckligt låg "upplösning" på tiden för att det ska passa in ordentligt.
Man gör väl bäst i att följa timingen i bild 9A på sidan 3-16 i detta dokumentet:
http://veswiki.com/images/0/05/F3850.pdf
Med de tider som är angivna på sidan 3-28 i samma dokument...
(det blir förresten inte enklare av att de verkar ha bytt bildrubrik på de båda bilderna på sidan 3-16, den övre visar långa versionen och den undre visar den korta)
Det är angivet ett maxvärde (1µs) på tiden för en klockperiod för 3850 cpu:n i dokumentet ovan, men det finns väl egentligen inget hinder att köra den ännu långsammare, eller? Om det där extremvärdet stämmer (så måste man klocka på minst 1MHz) så går originalkoden alldeles för långsam också. Bara NOP:arna i koden gör periodtiden hos klockan för PSU:n till minst 1,6µs. Kikar man på sodjan:s kod ovan så sätter man signalernas värde med en instruktion, då blir det ett tillägg på perioden med ytterligare 0,2µs per ändrad signal. Ibland ändrar man tre signaler - då har vi ett tillägg på 0,6 µs om föregående resonemang stämmer... Finns ju ingen chans alls att hålla sig över minimi-klockhastighet isf.
Har man bara en NOP (0,2µs) och anger alla tre signalerna varje gång (för att få pulsbredd 50% om det nu har någon betydelse) så hamnar man på en PSU-klockfrekvens på 1,6µs, ändrar man endast phi varannan gång så blir det 1,2 µs men pulsbredden för phi=0 blir då bara 0,4µs och för phi=1 blir 0,8µs...
Man gör väl bäst i att följa timingen i bild 9A på sidan 3-16 i detta dokumentet:
http://veswiki.com/images/0/05/F3850.pdf
Med de tider som är angivna på sidan 3-28 i samma dokument...
(det blir förresten inte enklare av att de verkar ha bytt bildrubrik på de båda bilderna på sidan 3-16, den övre visar långa versionen och den undre visar den korta)
Det är angivet ett maxvärde (1µs) på tiden för en klockperiod för 3850 cpu:n i dokumentet ovan, men det finns väl egentligen inget hinder att köra den ännu långsammare, eller? Om det där extremvärdet stämmer (så måste man klocka på minst 1MHz) så går originalkoden alldeles för långsam också. Bara NOP:arna i koden gör periodtiden hos klockan för PSU:n till minst 1,6µs. Kikar man på sodjan:s kod ovan så sätter man signalernas värde med en instruktion, då blir det ett tillägg på perioden med ytterligare 0,2µs per ändrad signal. Ibland ändrar man tre signaler - då har vi ett tillägg på 0,6 µs om föregående resonemang stämmer... Finns ju ingen chans alls att hålla sig över minimi-klockhastighet isf.
Har man bara en NOP (0,2µs) och anger alla tre signalerna varje gång (för att få pulsbredd 50% om det nu har någon betydelse) så hamnar man på en PSU-klockfrekvens på 1,6µs, ändrar man endast phi varannan gång så blir det 1,2 µs men pulsbredden för phi=0 blir då bara 0,4µs och för phi=1 blir 0,8µs...
Re: Tid för en NOP med en PIC16F84 klockad med 20 MHz?
Jag har svårt att tro att carten är så intelligent att den bryr sig om timingen särskilt mycket, så länge du inte kör för fort. Tiderna i det där databladet berättar väl vad CPU:n använder för timing när den skickar och läser signaler till/från carten, och CPU:n är väl vad jag förstår inte inblandad i dumpandet? Jag skulle nog börja leta efter något annat som kan vara fel, men så har jag å andra sidan knappt hört talas om en Fairchild Videocart förut 

Re: Tid för en NOP med en PIC16F84 klockad med 20 MHz?
Har lyckosamt sparat undan flera kassetter nu, men med vissa får jag inte ut någon data alls - och de fungerar i enheten.
Jo, det är kanske sant men PSU:n (Program Storage Unit) är en co-processor och har en egen programräknare t.ex. Det finns bara fem kontrollsignaler och databussen mellan CPU:n och PSU:n, en viss sekvens resulterar i samma beteende i CPU:n och samtliga PSU:er som är kopplade till denna... PSU:erna är aktiva i olika minnes-områden, det finns två i konsollen och oftast två i kassetterna, åtminstone de tidiga. Senare kassetter nyttjar "normalt" rom tillsammans med en interfacekrets - chippen är monterade direkt på PCB:t utan någon kapsel...
Datablad på PSU: http://veswiki.com/images/c/c0/F3851_56.pdf
Timingen är med igen på sidan 6.
Aha - där har vi lite andra tider... (sidan 21) 10µs max periodtid på PSU-klockan, nu kör jag med 4 så det borde vara ok.
Jag tror att jag läser datan för tidigt, så det har jag flyttat fram något, ska ha minst 2 perioder plus 100ns - falltid för write-puls och max 2 perioder plus 0,85µs...
Då har jag sett över all timing och jag tror att detta ska bli bättre (förhoppningsvis).
Senaste kod (Pic Basic Pro) - försök nummer åtta:
Passade förresten på att koppla på en riktig cartridge-hållare, så nu ska inte den biten orsaka några problem.
... det blev annorlunda iaf. Cartridge 26 läses som helt blank fortfarande, Luxor #2 däremot läste den till skillnad mot min förra version in första halvan... Kanske rör sig åt rätt håll då... Det enda problemet jag kan se nu är att det vid nollandet av PC0 är för långt mellanrum, kan lika gärna sätta f8romc3 till 1 direkt från början - nähe det gick inte alls...
Ett problem är att jag inte kan växla f8romc3 efter att write gått från hög till låg på mindre än 550 ns, det tar minst 1 µs med blott 4 MHz...
Version 7 dumpade ganska mycket men inte allt, slarvade bort pbp-koden så jag fick fixa till PC0-nollställningen baklänges. Så här ser assemblerkoden ut iaf när man konverterar från HEX-filen:
Jo, det är kanske sant men PSU:n (Program Storage Unit) är en co-processor och har en egen programräknare t.ex. Det finns bara fem kontrollsignaler och databussen mellan CPU:n och PSU:n, en viss sekvens resulterar i samma beteende i CPU:n och samtliga PSU:er som är kopplade till denna... PSU:erna är aktiva i olika minnes-områden, det finns två i konsollen och oftast två i kassetterna, åtminstone de tidiga. Senare kassetter nyttjar "normalt" rom tillsammans med en interfacekrets - chippen är monterade direkt på PCB:t utan någon kapsel...
Datablad på PSU: http://veswiki.com/images/c/c0/F3851_56.pdf
Timingen är med igen på sidan 6.
Aha - där har vi lite andra tider... (sidan 21) 10µs max periodtid på PSU-klockan, nu kör jag med 4 så det borde vara ok.
Jag tror att jag läser datan för tidigt, så det har jag flyttat fram något, ska ha minst 2 perioder plus 100ns - falltid för write-puls och max 2 perioder plus 0,85µs...
Då har jag sett över all timing och jag tror att detta ska bli bättre (förhoppningsvis).
Senaste kod (Pic Basic Pro) - försök nummer åtta:
Kod: Markera allt
; Fairchild Channel F cart dumper version 2
; 2/10/2004 Sean Riddle seanriddle@cox.net
; Edited from 16f84 to 16c84 by Fredric Blåholtz 03/08/2009
; Pic BASIC Pro
; 1/5 speed, the nop:s are half as many.
INCLUDE "modedefs.bas"
@ device pic16c84, hs_osc, wdt_off
DEFINE OSC 4 ;4 MHz oscillator
DEFINE NO_CLRWDT 1 ;watchdog is off
DEFINE DEBUG_REG PORTA ;serial output on A.0
DEFINE DEBUG_BIT 0
DEFINE DEBUG_BAUD 9600
' Set Debug mode: 0 = true, 1 = inverted
DEFINE DEBUG_MODE 1
k VAR WORD ;another
rom VAR BYTE ;buffer to store ROM
f8phi VAR PORTA.1 ;clock signal
f8write VAR PORTA.2 ;write signal
f8romc3 VAR PORTA.3 ;ROMC3 signal
; CMCON=7 ;turn off comparators
OPTION_REG.7=0 ;weak pull ups on port B
TRISB=$FF ;port B is all input
Low f8phi
Low f8write
Low f8romc3
Debug "Dumping starts in two seconds..."
Pause 2000 ;wait 2 seconds after reset
; what I do:
; clear PC0 with ROMC state 8
; loop 16384 times
; fetch 4 bytes into buffer with ROMC state 0
; dump buffer to serial port
; clear PC0
f8phi=1
f8write=1
f8phi=0
@ nop
f8phi=1
f8write=0
f8phi=0
f8romc3=1
;ROMC state 8, clear PC0.
f8phi=1
@ nop
f8phi=0
@ nop
f8phi=1
@ nop
f8phi=0
@ nop
f8phi=1
@ nop
f8phi=0
f8romc3=0
For k=0 TO 16383
f8phi=1
f8write=1
f8phi=0
@ nop
f8phi=1
f8write=0
f8phi=0
@ nop
f8phi=1
;ROMC state 0, fetch instruction
@ nop
f8phi=0
@ nop
f8phi=1
@ nop
f8phi=0
@ nop
f8phi=1
rom=PORTB ;read databus into buffer
f8phi=0
Debug rom
Next k
End
Passade förresten på att koppla på en riktig cartridge-hållare, så nu ska inte den biten orsaka några problem.
... det blev annorlunda iaf. Cartridge 26 läses som helt blank fortfarande, Luxor #2 däremot läste den till skillnad mot min förra version in första halvan... Kanske rör sig åt rätt håll då... Det enda problemet jag kan se nu är att det vid nollandet av PC0 är för långt mellanrum, kan lika gärna sätta f8romc3 till 1 direkt från början - nähe det gick inte alls...
Ett problem är att jag inte kan växla f8romc3 efter att write gått från hög till låg på mindre än 550 ns, det tar minst 1 µs med blott 4 MHz...

Version 7 dumpade ganska mycket men inte allt, slarvade bort pbp-koden så jag fick fixa till PC0-nollställningen baklänges. Så här ser assemblerkoden ut iaf när man konverterar från HEX-filen:
Kod: Markera allt
Working on filein 'VC-7.hex'
PICDIS-LITE PicChip HEX File Disassembler Utility. Version 1.0 Feb-02-2004
Copyright (C) 2004 Joe's Cat. All Rights Reserved. picdisl -h for help
list p=pic16f84
0000 2855 goto j055
0001 008e j001: movwf 0x0e
0002 1683 bsf STATUS,5
0003 1005 bcf PORTA/TRISA,0
0004 1283 bcf STATUS,5
0005 3009 movlw 0x09
0006 008f movwf 0x0f
0007 1003 clrc
0008 2010 j008: call j010
0009 0c8e rrf 0x0e,f
000a 0b8f decfsz 0x0f,f
000b 2808 goto j008
000c 1403 setc
000d 2010 call j010
000e 1403 setc
000f 2850 goto j050
0010 1803 j010: skpnc
0011 2815 goto j015
0012 0000 nop
0013 1405 bsf PORTA/TRISA,0
0014 2817 goto j017
0015 1005 j015: bcf PORTA/TRISA,0
0016 2817 goto j017
0017 3000 j017: movlw 0x00
0018 008d movwf 0x0d
0019 305b movlw 0x5b
001a 2829 goto j029
001b 018f clrf 0x0f
001c 008e j01c: movwf 0x0e
001d 30ff j01d: movlw 0xff
001e 078e addwf 0x0e,f
001f 1c03 skpc
0020 078f addwf 0x0f,f
0021 1c03 skpc
0022 2850 goto j050
0023 3003 movlw 0x03
0024 008d movwf 0x0d
0025 30df movlw 0xdf
0026 2029 call j029
0027 281d goto j01d
0028 018d clrf 0x0d
0029 3ee8 j029: addlw 0xe8
002a 008c movwf 0x0c
002b 098d comf 0x0d,f
002c 30fc movlw 0xfc
002d 1c03 skpc
002e 2832 goto j032
002f 078c j02f: addwf 0x0c,f
0030 1803 skpnc
0031 282f goto j02f
0032 078c j032: addwf 0x0c,f
0033 0000 nop
0034 0f8d incfsz 0x0d,f
0035 282f goto j02f
0036 180c btfsc 0x0c,0
0037 2838 goto j038
0038 1c8c j038: btfss 0x0c,1
0039 283c goto j03c
003a 0000 nop
003b 283c goto j03c
003c 0008 j03c: return
003d 008e j03d: movwf 0x0e
003e 3001 movlw 0x01
003f 2840 goto j040
0040 0094 j040: movwf 0x14
0041 080f movfw 0x0f
0042 020d subwf 0x0d,w
0043 1d03 skpz
0044 2847 goto j047
0045 080e movfw 0x0e
0046 020c subwf 0x0c,w
0047 3004 j047: movlw 0x04
0048 1803 skpnc
0049 3001 movlw 0x01
004a 1903 skpnz
004b 3002 movlw 0x02
004c 0514 andwf 0x14,w
004d 1d03 skpz
004e 30ff movlw 0xff
004f 2850 goto j050
0050 1383 j050: bcf STATUS,7
0051 1303 bcf STATUS,6
0052 1283 bcf STATUS,5
0053 0000 nop
0054 0008 return
0055 1683 j055: bsf STATUS,5
0056 1381 bcf TMR0/OPTION_REG,7
0057 30ff movlw 0xff
0058 0086 movwf PORTB/TRISB
0059 1283 bcf STATUS,5
005a 1085 bcf PORTA/TRISA,1
005b 1683 bsf STATUS,5
005c 1085 bcf PORTA/TRISA,1
005d 1283 bcf STATUS,5
005e 1105 bcf PORTA/TRISA,2
005f 1683 bsf STATUS,5
0060 1105 bcf PORTA/TRISA,2
0061 1283 bcf STATUS,5
0062 1185 bcf PORTA/TRISA,3
0063 1683 bsf STATUS,5
0064 1185 bcf PORTA/TRISA,3
0065 3044 movlw 0x44
0066 1283 bcf STATUS,5
0067 2001 call j001
0068 3075 movlw 0x75
0069 2001 call j001
006a 306d movlw 0x6d
006b 2001 call j001
006c 3070 movlw 0x70
006d 2001 call j001
006e 3069 movlw 0x69
006f 2001 call j001
0070 306e movlw 0x6e
0071 2001 call j001
0072 3067 movlw 0x67
0073 2001 call j001
0074 3020 movlw 0x20
0075 2001 call j001
0076 3073 movlw 0x73
0077 2001 call j001
0078 3074 movlw 0x74
0079 2001 call j001
007a 3061 movlw 0x61
007b 2001 call j001
007c 3072 movlw 0x72
007d 2001 call j001
007e 3074 movlw 0x74
007f 2001 call j001
0080 3073 movlw 0x73
0081 2001 call j001
0082 3020 movlw 0x20
0083 2001 call j001
0084 3069 movlw 0x69
0085 2001 call j001
0086 306e movlw 0x6e
0087 2001 call j001
0088 3020 movlw 0x20
0089 2001 call j001
008a 3074 movlw 0x74
008b 2001 call j001
008c 3077 movlw 0x77
008d 2001 call j001
008e 306f movlw 0x6f
008f 2001 call j001
0090 3020 movlw 0x20
0091 2001 call j001
0092 3073 movlw 0x73
0093 2001 call j001
0094 3065 movlw 0x65
0095 2001 call j001
0096 3063 movlw 0x63
0097 2001 call j001
0098 306f movlw 0x6f
0099 2001 call j001
009a 306e movlw 0x6e
009b 2001 call j001
009c 3064 movlw 0x64
009d 2001 call j001
009e 3073 movlw 0x73
009f 2001 call j001
00a0 302e movlw 0x2e
00a1 2001 call j001
00a2 302e movlw 0x2e
00a3 2001 call j001
00a4 302e movlw 0x2e
00a5 2001 call j001
00a6 3007 movlw 0x07
00a7 008f movwf 0x0f
00a8 30d0 movlw 0xd0
00a9 201c call j01c
00aa 1485 bsf PORTA/TRISA,1
00ab 1505 bsf PORTA/TRISA,2
00ac 0000 nop
00ad 1085 bcf PORTA/TRISA,1
00ae 0000 nop
00af 1105 bcf PORTA/TRISA,2
00b0 1485 bsf PORTA/TRISA,1
00b1 0000 nop
00b2 1085 bcf PORTA/TRISA,1
00b3 0000 nop
00b4 1485 bsf PORTA/TRISA,1
00b5 1585 bsf PORTA/TRISA,3
00b6 0000 nop
00b7 1085 bcf PORTA/TRISA,1
00b8 0000 nop
00b9 1485 bsf PORTA/TRISA,1
00ba 0000 nop
00bb 1085 bcf PORTA/TRISA,1
00bc 0000 nop
00bd 1485 bsf PORTA/TRISA,1
00be 1505 bsf PORTA/TRISA,2
00bf 0000 nop
00c0 1085 bcf PORTA/TRISA,1
00c1 0000 nop
00c2 1105 bcf PORTA/TRISA,2
00c3 1485 bsf PORTA/TRISA,1
00c4 1185 bcf PORTA/TRISA,3
00c5 0000 nop
00c6 1085 bcf PORTA/TRISA,1
00c7 0000 nop
00c8 1485 bsf PORTA/TRISA,1
00c9 0000 nop
00ca 1085 bcf PORTA/TRISA,1
00cb 0000 nop
00cc 1485 bsf PORTA/TRISA,1
00cd 0000 nop
00ce 1085 bcf PORTA/TRISA,1
00cf 01a4 clrf 0x24
00d0 01a5 clrf 0x25
00d1 0824 j0d1: movfw 0x24
00d2 008c movwf 0x0c
00d3 0825 movfw 0x25
00d4 008d movwf 0x0d
00d5 303f movlw 0x3f
00d6 008f movwf 0x0f
00d7 30ff movlw 0xff
00d8 203d call j03d
00d9 1d03 skpz
00da 28f5 goto j0f5
00db 1485 bsf PORTA/TRISA,1
00dc 1505 bsf PORTA/TRISA,2
00dd 1085 bcf PORTA/TRISA,1
00de 0000 nop
00df 1485 bsf PORTA/TRISA,1
00e0 1105 bcf PORTA/TRISA,2
00e1 1085 bcf PORTA/TRISA,1
00e2 0000 nop
00e3 1485 bsf PORTA/TRISA,1
00e4 0000 nop
00e5 1085 bcf PORTA/TRISA,1
00e6 0000 nop
00e7 1485 bsf PORTA/TRISA,1
00e8 0000 nop
00e9 1085 bcf PORTA/TRISA,1
00ea 0000 nop
00eb 1485 bsf PORTA/TRISA,1
00ec 0806 movfw PORTB/TRISB
00ed 00a6 movwf 0x26
00ee 1085 bcf PORTA/TRISA,1
00ef 0826 movfw 0x26
00f0 2001 call j001
00f1 0aa4 incf 0x24,f
00f2 1903 skpnz
00f3 0fa5 incfsz 0x25,f
00f4 28d1 goto j0d1
00f5 0063 j0f5: sleep
00f6 28f5 goto j0f5
2007 3ffa __fuses 0x3ffa