Fórum témák
» Több friss téma |
Értem.
Tehát kiírásnál először az alsó, majd a felső 4 bite kell.?
Hogy megint egy angol kifejezéssel válaszoljak: Little Endian Format - azaz a lagalacsonyabb címen van a legalacsonyabb helyiérték (a BCD változó 3..0 bitjein).
Sziasztok!
Az lenne a kérdésem, van arra lehetőség MPlab X esetén, hogy ha programmódosítást töltök egy PIC-re, az EEPROM-ot ne törölje? Kicsit unalmas minden programmódosítás után újra elvégezni az összes beállítást, miközben ezeket az EEPROM tárolja.
Szia!
Ilyenről nem tudok, de átmeneti megoldás lehet, hogy a kezdeti beállításokat az asm-ben már az eeprom-ba írod.
Hello!
Pic16F1828 direkt memória lapozása ,hogy van asm-ben? Banksel nem működik mplab, írja nem 0-ás bankban van a regiszter. Köszönettel : HZ. Idézet: „írja nem 0-ás bankban van a regiszter” Figyelmeztetésnek írja, ha nem szeretnéd látni, tiltsd le: errorlevel -302 A banksel makro pedig működik.
Azt nem árt hozzátenni, főleg, ha kezdőről van szó, hogy a banksel egy makró, nem utasítás, ezért címkét nem kaphat az a sor.
Jobb így használni.
Mivel a banksel 1 nem a RAM 1. bank -ját választja ki. A hozzászólás módosítva: Nov 30, 2015
Az az érdekes,hogy a Banksel Portc valamint a Banksel Trisc-re nem jr hibát a Banksel Latc -re pedig igen. Z.
Esetleg a forrásodból ezt a pár sort bemásolhatnád ide.
Kisbetű/nagybetű (MPLab beállításától függően) nem mindegy.
Ha csak ennyi , akkor probléma nélkül fordít :
Ha viszont beszúrok két sort ,hibára fut.:
Kösz : Z. A hozzászólás módosítva: Nov 30, 2015
Ennek így nem sok értelme van. Először állítod PORTC,3-at, aztán belépsz a bankjába...
![]()
A hiba ellenére működik, legfeljebb nem azt csinálja amire gondolt. A PORT, TRIS, LAT regiszterek ugyan azon a memóriacímen vannak, csak másik bankban, tehát ha a TRIS bankja van kiválasztva a PORT hivatkozásra is a TRIS regisztert fogja írni. Bizonyos esetekben ilyet én is el szoktam követni, ha nem szeretnék átmeneti változók bankváltásával törődni.
Igen ,érdekes de ha átírom az első banksel TRISC -t PORTC-re nem működik, így igen. Z.
PORTC - BANK0
TRISC - BANK1 LATC BANK2 A PIC16F1828 egy érdekes példány, a datas. memórialapozás leírását nem értem! ÜDV : Z.
Nem ír hibát?
Nem kell még valami állományt csatolni, a direktívákhoz? Z.
Csak elé raktam egy fejlécet (és persze kiválasztottam a helyes picet).
Persze mint írtam a BCF valójában a TRISC regisztert állítja ilyenkor. A hozzászólás módosítva: Nov 30, 2015
Hibát nem ír, nekem sem. Figyelmeztetés lenne, de azt ideiglenesen letiltottam, mert az utasítás előtt az errorlevel letiltja az üzenetet.
Mit nem értesz a memórialapozás leírásában?
Köszi!
Működik. Ha az errorlevel elött pontosvessző van a CLRF LATC sorra írja a bank hibát. Ha kiveszem, persze nincs hiba. Egyébként működik mert a pin átáll digitálisra. Nem igazán értem ,hogy a BANKSEL TRISC utáni BCF PORTC mért nem a portc-re hanem a Trisc-re vonatkozik. A Title és a List mit állít? Közbe nézek utánna. A memórialapozáson azt nem értem, hogy nincs IRP RP0,RP1 bit, nem találom a direkt lapozás leírását, csak az indirektet, az meg még magas. Köszönöm mégegyszer. Z. Idézet: „A memórialapozáson azt nem értem, hogy nincs IRP RP0,RP1 bit, nem találom a direkt lapozás leírását, csak az indirektet, az meg még magas.” Az Enhanced Midrange kontrollerekban egy kicsit máskép van az adatmemória kezelése. A BSR regiszter tartalma választja ki a memória bankot - ugyanis 32 bank lehetséges. movlb utasítással is be lehet írni a BSR értékét. Nézd meg a fordítási lista ablakba írt hiba jelezéseket. A szövegükből rá lehet jönni a problémára. Ne keverd a kis és nagybetűket. A hozzászólás módosítva: Nov 30, 2015
Mert a portc a gep szamara csak egy szam, mondjuk 0x04 .
Mintha neked azt mondanam, vedd ki a polcrol a negyedik konyvet. Igen am, de MELYIK polcrol a tizenotbol?? Neki (mondjuk) a nulladik polcon van a PORTC es az elso polcon a TRISC. Meg kell neki mondanod, hogyha MOST konyveket kerek, akkor mindig az elso polcot ertem alatta. Ez a bankselect. Mert neki a cimzesi tartomanya sajnos rovid, mivel nyolcbites a processzora. Az indirekt cimzes tenyleg bonyolultnak tunhet, de ott az a poen, hogy ugy tudsz memoriara hivatkozni, hogy kozben (majdnem) mindegy, hogy hol van tenylegesen. Pl. egy szoveget akarsz tarolni, az azert elegge huzos betunkent mindig vegigmenni rajta. Beteszed a kezdetet egy regiszterbe, utana ehhez kepest hivatkozol az elso, masodik, stb elemere. Es azt, hogy hanyadik elemre hivatkozol, egy masik regiszterbe teszed, igy csupan ezt a regisztert novelve szepen vegiglepkedhetsz a teljes szovegen egy ciklusban, nem kell kulon-kulon megnevezned a memoriacimeket. Mintha egy tomb elemeire hivatkoznal. Kezdocim+elem szama lesz az a memoriacim, amivel majd dolgozik. En azert valtanek a helyedben 18F-re, tobb lehetoseged van es egyszerubbek ezek a cimezgetesek is valamelyest.
Ebből van egy marékkal, s elég 'okosnak' tűnik. Z
A movlb-vel nem csak 16 lapot lehet címezni? Azt is,hogy ha movlb 0 akkor 0 memórialap, ha 1 akkor az egy sigy tovább? Z.
Nem is mondta senki, hogy a 16-os széria nem elég okos. Csupán azt, hogy a 18-ast könnyebb programozni, és nagyobbak a lehetőségei is. Példának okáért a RAM területen kb úgy szörfözhetsz, mint amikor a böngészőben három lapot is megyitsz.
Ha továbbra is a 16F1828 a példa, akkor meg kell nézni az adatlap (DS40001419F) a 29. oldalon a Table 3-9 -et. A 008H címen van a BSR. A 4..0 bitjei kiépítettek. Ez 5 darabot jelent. 2^5 = 32.
A BSR -beli értékhez az utasítás kódból még 7 bitet kell (LSB felöl) hozzátenni, hogy a teljes RAM cím kialakuljon. A BSR 0 bitje felel meg a midrange kontroller STATUS.RP0 bitjének, a BSR 1 bitje felel meg a midrange STATUS.RP1 bitjének. További jó olvasgatást.
Tehát a BSR beállításával kiválasztom a mem lapot
BCF BSR,0 ; (BCF STATUS,0) BCF BSR,1 ;(BSF STATUS,1) ....... A regiszterre hivatkozva használhatom? BCF TRISC,1 ;mert most ugye az első lapon vagyok az elöbbi miatt. vagy be kell tölteni a reg címét? MOVLW Ox08E MOVWF ? z. Lenne valami mintapélda? A hozzászólás módosítva: Dec 1, 2015
|
Bejelentkezés
Hirdetés |