(doch noch ungelöst) *.src oder *.obj in hex wandeln (PIC)

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 29 11 2024  11:51:03      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
(doch noch ungelöst) *.src oder *.obj in hex wandeln (PIC)
Suche nach: pic (2056)

    







BID = 725414

Bartholomew

Inventar



Beiträge: 4681
 

  


Hoi,

Hab' da als PIC-Neuling mal ne blöde Frage:
Habe im Netz Code gefunden, der es einem 12F675 ermöglicht, eine Glühbirne ähnlich einer Kerze flackern zu lassen:
http://mondo-technology.com/candle.html

Dort sind eine *.src und eine *.obj-Datei hinterlegt, also Source- und Objectcode.

MPLAB möchte die aber nicht fressen und zu hex verdauen.
Liegt das bloß an den Änderungen? Den Objectcode kann ich ja sogar im normalen Texteditor öffnen.

Oder muss ich den Code einem anderen Programm zum Compilieren/Linken vorwerfen?


Gruß, Bartho


Nachtrag:
Im Sourcecode ist normaler Assemblercode... also mal fix die Endung ändern, importieren und gucken, ob's geht. Melde mich dann wieder.

[ Diese Nachricht wurde geändert von: Bartholomew am 6 Nov 2010 20:50 ]

[ Diese Nachricht wurde geändert von: Bartholomew am  6 Nov 2010 21:36 ]

BID = 725430

Bartholomew

Inventar



Beiträge: 4681

 

  

So, will nicht.

Hier mal die SRC-Datei im Klartext:


Code :


; Candle Simulation
; 6/04 Luhan Monat
;
; Simulate flicker of candle using incandescent lamp
;


device PIC12F675,intrc_osc,pwrte_on,wdt_off


org 20h

del1 ds 1
del2 ds 1
pcnt ds 1
temp ds 1
lev1 ds 1
lev2 ds 1
level ds 1
rbuf ds 5


LAMP = gp.5

org 0
goto start

org 4
reti


start bsf RP0
movlw 0
movwf GP
movlw 127
movwf OSCCAL
bcf RP0
bsf rbuf,0 ;seed random number
movlw 127
movwf lev1 ;initial light level
movwf lev2


; Main Loop
; Create hi and low power levels
; Switch between levels

candle movf lev1,w
movwf level
call power ;do lev1 power
call rando
andlw 7
btfss z
goto :run ;skip 7 out of 8
call rmid ;generate new hi and low levels
movwf lev1
sublw 0
movwf lev2
:run movf lev2,w ;do lev2 power
movwf level
call power
goto candle



; PWM power control

power movlw 100 ;set flicker rate: higher=slower
movwf pcnt ;set loop count
:p1 movf level,w ;get target level
movwf del1 ;set 1st delay
sublw 0
movwf del2 ;set 2nd delay
bsf LAMP ;power on
:p3 nop
decfsz del1 ;do 1st delay
goto :p3
bcf LAMP ;power off
:p4 nop
decfsz del2 ;second delay
goto :p4
decfsz pcnt
goto :p1


; find sum of 4 random numbers
; skews results around 127

rmid call rando
andlw 3fh
movwf temp
call rando
andlw 3fh
addwf temp
call rando
andlw 3fh
addwf temp
call rando
andlw 3fh
addwf temp,w
ret


; Pseudo Rando Number
; "Chop Suey Machine"

rando movf rbuf,w
addwf rbuf+1,w
movwf rbuf+1
addwf rbuf+2,w
movwf rbuf+2
addwf rbuf+3,w
movwf rbuf+3
addwf rbuf+4,w
movwf rbuf+4
bcf c
rlf rbuf+4
btfsc c
bsf rbuf+4,0
movf rbuf+4,w
addwf rbuf
ret


end


QED



MPLAB meckert ordentlich, wenn ich diese Datei als ASM-Datei tarne und verwurscheln möchte:


Code :

Warning[207] D:\PIC-PROJECTS\CANDLE2.ASM 9 : Found label after column 1. (device)

Error[122] D:\PIC-PROJECTS\CANDLE2.ASM 9 : Illegal opcode (PIC12F675)
Error[122] D:\PIC-PROJECTS\CANDLE2.ASM 14 : Illegal opcode (ds)
Error[122] D:\PIC-PROJECTS\CANDLE2.ASM 15 : Illegal opcode (ds)
Error[122] D:\PIC-PROJECTS\CANDLE2.ASM 16 : Illegal opcode (ds)
Error[122] D:\PIC-PROJECTS\CANDLE2.ASM 17 : Illegal opcode (ds)
Error[122] D:\PIC-PROJECTS\CANDLE2.ASM 18 : Illegal opcode (ds)
Error[122] D:\PIC-PROJECTS\CANDLE2.ASM 19 : Illegal opcode (ds)
Error[122] D:\PIC-PROJECTS\CANDLE2.ASM 20 : Illegal opcode (ds)
Error[122] D:\PIC-PROJECTS\CANDLE2.ASM 21 : Illegal opcode (ds)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 24 : Symbol not previously defined (gp.5)
Warning[207] D:\PIC-PROJECTS\CANDLE2.ASM 30 : Found label after column 1. (reti)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 33 : Symbol not previously defined (RP0)
Error[128] D:\PIC-PROJECTS\CANDLE2.ASM 33 : Missing argument(s)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 35 : Symbol not previously defined (GP)
Warning[202] D:\PIC-PROJECTS\CANDLE2.ASM 36 : Argument out of range. Least significant bits used.
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 37 : Symbol not previously defined (OSCCAL)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 38 : Symbol not previously defined (RP0)
Error[128] D:\PIC-PROJECTS\CANDLE2.ASM 38 : Missing argument(s)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 39 : Symbol not previously defined (rbuf)
Warning[202] D:\PIC-PROJECTS\CANDLE2.ASM 40 : Argument out of range. Least significant bits used.
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 41 : Symbol not previously defined (lev1)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 42 : Symbol not previously defined (lev2)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 49 : Symbol not previously defined (lev1)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 50 : Symbol not previously defined (level)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 54 : Symbol not previously defined (z)
Error[128] D:\PIC-PROJECTS\CANDLE2.ASM 54 : Missing argument(s)
Error[108] D:\PIC-PROJECTS\CANDLE2.ASM 55 : Illegal character (:)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 57 : Symbol not previously defined (lev1)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 59 : Symbol not previously defined (lev2)
Error[108] D:\PIC-PROJECTS\CANDLE2.ASM 60 : Illegal character (:)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 61 : Symbol not previously defined (level)
Warning[202] D:\PIC-PROJECTS\CANDLE2.ASM 69 : Argument out of range. Least significant bits used.
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 70 : Symbol not previously defined (pcnt)
Error[108] D:\PIC-PROJECTS\CANDLE2.ASM 71 : Illegal character (:)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 72 : Symbol not previously defined (del1)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 74 : Symbol not previously defined (del2)
Error[128] D:\PIC-PROJECTS\CANDLE2.ASM 75 : Missing argument(s)
Error[108] D:\PIC-PROJECTS\CANDLE2.ASM 76 : Illegal character (:)
Message[305] D:\PIC-PROJECTS\CANDLE2.ASM 77 : Using default destination of 1 (file).
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 77 : Symbol not previously defined (del1)
Error[108] D:\PIC-PROJECTS\CANDLE2.ASM 78 : Illegal character (:)
Error[128] D:\PIC-PROJECTS\CANDLE2.ASM 79 : Missing argument(s)
Error[108] D:\PIC-PROJECTS\CANDLE2.ASM 80 : Illegal character (:)
Message[305] D:\PIC-PROJECTS\CANDLE2.ASM 81 : Using default destination of 1 (file).
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 81 : Symbol not previously defined (del2)
Error[108] D:\PIC-PROJECTS\CANDLE2.ASM 82 : Illegal character (:)
Message[305] D:\PIC-PROJECTS\CANDLE2.ASM 83 : Using default destination of 1 (file).
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 83 : Symbol not previously defined (pcnt)
Error[108] D:\PIC-PROJECTS\CANDLE2.ASM 84 : Illegal character (:)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 92 : Symbol not previously defined (temp)
Message[305] D:\PIC-PROJECTS\CANDLE2.ASM 95 : Using default destination of 1 (file).
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 95 : Symbol not previously defined (temp)
Message[305] D:\PIC-PROJECTS\CANDLE2.ASM 98 : Using default destination of 1 (file).
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 98 : Symbol not previously defined (temp)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 101 : Symbol not previously defined (temp)
Warning[207] D:\PIC-PROJECTS\CANDLE2.ASM 102 : Found label after column 1. (ret)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 108 : Symbol not previously defined (rbuf)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 109 : Symbol not previously defined (rbuf)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 110 : Symbol not previously defined (rbuf)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 111 : Symbol not previously defined (rbuf)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 112 : Symbol not previously defined (rbuf)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 113 : Symbol not previously defined (rbuf)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 114 : Symbol not previously defined (rbuf)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 115 : Symbol not previously defined (rbuf)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 116 : Symbol not previously defined (rbuf)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 117 : Symbol not previously defined (c)
Error[128] D:\PIC-PROJECTS\CANDLE2.ASM 117 : Missing argument(s)
Message[305] D:\PIC-PROJECTS\CANDLE2.ASM 118 : Using default destination of 1 (file).
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 118 : Symbol not previously defined (rbuf)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 119 : Symbol not previously defined (c)
Error[128] D:\PIC-PROJECTS\CANDLE2.ASM 119 : Missing argument(s)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 120 : Symbol not previously defined (rbuf)
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 121 : Symbol not previously defined (rbuf)
Message[305] D:\PIC-PROJECTS\CANDLE2.ASM 122 : Using default destination of 1 (file).
Error[113] D:\PIC-PROJECTS\CANDLE2.ASM 122 : Symbol not previously defined (rbuf)
Warning[207] D:\PIC-PROJECTS\CANDLE2.ASM 123 : Found label after column 1. (ret)
Error[116] D:\PIC-PROJECTS\CANDLE2.ASM 123 : Address label duplicated or different in second pass (ret)



Bleibt die Ausgangsfrage: Was ist richtigerweise mit der .src-Datei zu tun?


Gruß, Bartho

[ Diese Nachricht wurde geändert von: Bartholomew am  6 Nov 2010 21:40 ]

BID = 725443

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

Einfach mal über den Tellerrand schauen:
Zitat :
All source files are in the Tech-Tools (Parallax) format. The object code files are identical to Microchip's. You can use them 'as is' in most any programmer. Also, the (DOS-based) editor / assembler that produced them is available free HERE.
... und dann sinngemäß anpassen.

BID = 725451

Bartholomew

Inventar



Beiträge: 4681

Besten Dank für den Wink mit dem Zaunpfahl, Perl.

Dann werde ich wohl mal den Assemblercode so lange umschreiben, bis der Linker keine Fehler mehr ausspuckt...

Die bei Mondo verlinke Entwicklungsumgebung hat mich jedenfalls erst mal tüchtig abgeschreckt. Ich boote doch nicht ins Windows, um anschließend in einer DOS-Box zu arbeiten


Gruß, Bartho


Edit:
Oder ich finde raus, wie MPLAB den fertigen Objectcode frisst...

[ Diese Nachricht wurde geändert von: Bartholomew am  7 Nov 2010  0:28 ]

BID = 725454

Nukeman

Schriftsteller



Beiträge: 754
Wohnort: bei Kleve

Das was Mondo da als .obj Datei verlinkt, sieht mir sehr stark
nach einer Intelhex-Datei aus, die man eigentlich direkt flashen
können sollte.

Gruß
Stefan


[ Diese Nachricht wurde geändert von: Nukeman am  7 Nov 2010  0:45 ]

BID = 725462

Bartholomew

Inventar



Beiträge: 4681



So ist es. WinPic meckert zwar auch, wenn man es die Hex laden lässt, aber das Programm funktioniert
Gebrannt mit sprut's Brenner8 via USBurn.
Der PIC ist recht empfindlich gegenüber Spannungsschwankungen. Mit 6,8nF puffern reicht beileibe nicht, wenn man als Last an den Transistor (habe einen BC337-40 genommen) eine 300mA-Glühbirne anschließt (rückwirkend bedacht eigentlich auch völlig logisch ). Mit einer LED als Last gab's keine Probleme. Mit einem separaten Satz Batterien als Energielieferant für die Glühbirne lief die Schaltung dann.

Weitere Experimente nach der Bettruhe


Gruß, Bartho


P.S.: Die Anschaffung eines zweiten Multimeters hat sich gelohnt. Ist eine feine Sache, wenn man gleichzeitig Strom und Spannung messen kann.
Mal schauen, wann ich reif für ein eigenes Oszi bin...

BID = 725546

Bartholomew

Inventar



Beiträge: 4681

Die Hex lässt sich auch problemlos in einen billigeren 12F629 brennen (der nimmt es nicht übel, dass die Bits zum Abschalten des hier nicht vorhandenen AD-Wandlers gesetzt werden).
Das Stabilitätsproblem ließ sich durch Setzen einer 1N4148 zwischen VBat und Vdd beheben. Damit läuft der IC sogar ohne Kerko. Außerdem hat die Diode den Vorteil, dass man bedenkenlos 4 Mignonzellen als Energiequelle nehmen kann (der PIC darf zwischen 2 und 5,5V haben).
Interessanterweise verschiebt sich die PWM-Frequenz, wenn der 6,8nF-Folienkondensator (steckt momentan alles im Kosmos-Kasten) gezogen wird, um etwa 25Hz nach oben (mein 675 gibt mit Kondi so 1160Hz aus, der 629 ca. 1040Hz).
Auch interessant ist, dass man die Ausgangsfrequenz an schlechten Kontakten hören kann (locker eingeschraubtes Leuchtmittel, Kratzen mit dem Draht über die Steckklemme). Erinnert mich ein wenig an den Johnson-Rahbek-Effekt.

Für's Krippenlicht ist das Flackern teilweise etwas zu unruhig, es erinnert an eine schlecht belüftetes Teelicht unter Windzug. Wäre aber beim Laternenunzug wohl ein echter Hingucker. Schade, dass ich dafür zu alt bin


Gruß, Bartho
(der die Schaltung jetzt auf Lochraster aufbaut)


Nachtrag:
Mit einer 3,5V-0,3A-Lampe geht die Schaltung ganz gut, eine 4,8V-0,7A-Lampe möchte nur ein wenig vor sich hinglimmen.

[ Diese Nachricht wurde geändert von: Bartholomew am  7 Nov 2010 15:04 ]

BID = 725584

Ltof

Inventar



Beiträge: 9334
Wohnort: Hommingberg


Zitat :
Bartholomew hat am  7 Nov 2010 14:50 geschrieben :

Für's Krippenlicht ist das Flackern teilweise etwas zu unruhig, es erinnert an eine schlecht belüftetes Teelicht unter Windzug.

Dann dreh mal am Timing unter "set flicker rate"

Hier meckert MPLAB nicht mehr:



Code :


; Candle Simulation
; 6/04 Luhan Monat
;
; Simulate flicker of candle using incandescent lamp
;


list p=12f629
include "p12f629.inc"
__CONFIG _CP_ON & _CPD_ON & _BODEN_ON & _MCLRE_OFF & _WDT_ON & _PWRTE_ON & _INTRC_OSC_NOCLKOUT
errorlevel -302


cblock 0x20
del1
del2
pcnt
temp
lev1
lev2
level
rbuf
rbuf1
rbuf2
rbuf3
rbuf4
endc

#define LAMP GPIO,5

org 0
goto start

org 4
retfie


start bsf STATUS,RP0
movlw 0
movwf GPIO
movlw 0x7f
movwf OSCCAL
bcf STATUS,RP0
bsf rbuf,0 ;seed random number
movlw 0x7f
movwf lev1 ;initial light level
movwf lev2


; Main Loop
; Create hi and low power levels
; Switch between levels

candle movf lev1,w
movwf level
call power ;do lev1 power
call rando
andlw 0x07
btfss STATUS,Z
goto run ;skip 7 out of 8
call rmid ;generate new hi and low levels
movwf lev1
sublw 0x00
movwf lev2
run movf lev2,w ;do lev2 power
movwf level
call power
goto candle



; PWM power control

power movlw .100 ;set flicker rate: higher=slower
movwf pcnt ;set loop count
p1 movf level,w ;get target level
movwf del1 ;set 1st delay
sublw 0
movwf del2 ;set 2nd delay
bsf LAMP ;power on
p3 nop
decfsz del1,f ;do 1st delay
goto p3
bcf LAMP ;power off
p4 nop
decfsz del2,f ;second delay
goto p4
decfsz pcnt,f
goto p1


; find sum of 4 random numbers
; skews results around 127

rmid call rando
andlw 3fh
movwf temp
call rando
andlw 3fh
addwf temp,f
call rando
andlw 3fh
addwf temp,f
call rando
andlw 3fh
addwf temp,w
return


; Pseudo Rando Number
; "Chop Suey Machine"

rando movf rbuf,w
addwf rbuf1,w
movwf rbuf1
addwf rbuf2,w
movwf rbuf2
addwf rbuf3,w
movwf rbuf3
addwf rbuf4,w
movwf rbuf4
bcf STATUS,C
rlf rbuf4,f
btfsc STATUS,C
bsf rbuf4,0
movf rbuf4,w
addwf rbuf,f
return


end



_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

BID = 725717

Bartholomew

Inventar



Beiträge: 4681

Wow, was für ein Service
Zum Ausprobieren werde ich aber heute leider nicht mehr kommen.
Zumindest ist der Aufbau auf Platine fertig.


Gruß, Bartho

BID = 726044

Ltof

Inventar



Beiträge: 9334
Wohnort: Hommingberg

Ich dachte eigentlich, dass ich das schon mal für MPLAB angepasst hatte, hab das aber nicht mehr gefunden und das Q&D nochmal gemacht. In den Konfigurationsbits meines Listings ist noch ein Fehler: WDT muss off oder Du baust noch ein clrwdt irgendwo ein.

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

BID = 726080

Bartholomew

Inventar



Beiträge: 4681

Danke für den Hinweis

Ich denke, den Watchdog in der Mainschleife zurückzusetzen ist die sauberere Lösung (wobei der Wachhund bei so einem einfachen Projekt ja eigentlich egal ist).
Werde erst am Wochenende dazu kommen, wieder PICs zu brennen.


Gruß, Bartho

BID = 727031

Bartholomew

Inventar



Beiträge: 4681

Habe noch mal ein wenig im Code rumgespielt. Copy-Protection war auch noch an, ist jetzt aus.
Habe außerdem festegestellt, dass man den MCLR nicht aktivieren sollte, wenn man keinen Pullup verbaut hat, sonst blinkt es doch nur sehr sporadisch
Und ich Dussel hatte eine Viertelstunde einen Wackelkontakt an IC-Fassung oder den Schraubklemmen vermutet... vor allem, weil sich der "Wackelkontakt" ja durch rumdrücken auf der Platine beheben ließ

Habe im Code außerdem den Oszillator-Kalibrierwert vom Ende des Programmspeichers holen lassen (da ist er von Werk aus, sollte er nicht durch eine dumme Brennsoftware gelöscht worden sein). Nun takten meine drei 629/675er alle zwischen 955 und 960Hz (Meßgerätanzeige).

Was ich hier geschrieben hatte:

Zitat :
Die Hex lässt sich auch problemlos in einen billigeren 12F629 brennen (der nimmt es nicht übel, dass die Bits zum Abschalten des hier nicht vorhandenen AD-Wandlers gesetzt werden).

war damals Unsinn, da im Originalcode noch gar kein ADC abgeschaltet wurde. Jetzt wird er es, und der Code läuft trotzdem im 629.
Der Comparator wird auch abgeschaltet.
Wirkt sich beides zwar nicht meßbar auf den Stromverbrauch aus (relativ genau 800mA nur für den PIC), aber schaden tut's auch nicht.



Code :

;	Candle Simulation

; 6/04 Luhan Monat
;
; Simulate flicker of candle using incandescent lamp
;
; Code für den 12F675 funktioniert auch im kleineren 12F629 (hat keinen ADC)

; list p=12f629
; include "p12f629.inc"
list p=12f675
include "p12f675.inc"
__CONFIG _CP_OFF & _CPD_OFF & _BODEN_ON & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT

errorlevel -302


cblock 0x20
del1
del2
pcnt
temp
lev1
lev2
level
rbuf
rbuf1
rbuf2
rbuf3
rbuf4
endc

#define LAMP GPIO,5

org 0
goto start

org 4
retfie


start
bsf STATUS,RP0 ;Bank 1
movlw 0
movwf GPIO ;Port auf Ausgang
clrf ANSEL ;GP0,1,2,4 von ADC auf digital (NUR 12F675!)
; movlw 0x7f ;gültiger Backup-Kalibrierwert (.127)
call 0x3FF ;Oszillator-Kalibrierwert holen...
movwf OSCCAL ;und schreiben
bcf STATUS,RP0 ;Bank 0
bsf CMCON,CM0 ;12F629/675: Comparator ausschalten
bsf CMCON,CM1
bsf CMCON,CM2
bsf rbuf,0 ;seed random number
movlw 0x7f ;.127
movwf lev1 ;initial light level
movwf lev2


; Main Loop
; Create hi and low power levels
; Switch between levels

candle
movf lev1,w
movwf level
call power ;do lev1 power
call rando
andlw 0x07
btfss STATUS,Z
goto run ;skip 7 out of 8
call rmid ;generate new hi and low levels
movwf lev1
sublw 0x00
movwf lev2
run movf lev2,w ;do lev2 power
movwf level
call power
goto candle



; PWM power control

power
movlw .100 ;set flicker rate: higher=slower
movwf pcnt ;set loop count
p1 movf level,w ;get target level
movwf del1 ;set 1st delay
sublw 0
movwf del2 ;set 2nd delay
bsf LAMP ;power on
p3 nop
decfsz del1,f ;do 1st delay
goto p3
bcf LAMP ;power off
p4 nop
decfsz del2,f ;second delay
goto p4
decfsz pcnt,f
goto p1


; find sum of 4 random numbers
; skews results around 127

rmid
call rando
andlw 3fh
movwf temp
call rando
andlw 3fh
addwf temp,f
call rando
andlw 3fh
addwf temp,f
call rando
andlw 3fh
addwf temp,w
return


; Pseudo Rando Number
; "Chop Suey Machine"

rando
movf rbuf,w
addwf rbuf1,w
movwf rbuf1
addwf rbuf2,w
movwf rbuf2
addwf rbuf3,w
movwf rbuf3
addwf rbuf4,w
movwf rbuf4
bcf STATUS,C
rlf rbuf4,f
btfsc STATUS,C
bsf rbuf4,0
movf rbuf4,w
addwf rbuf,f
return


end




Gruß, Bartho

BID = 727042

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach


Zitat :
Wirkt sich beides zwar nicht meßbar auf den Stromverbrauch aus (relativ genau 800mA nur für den PIC),
Ist das einer, der intern noch mit Relais anstatt CMOS arbeitet ?

BID = 727062

Bartholomew

Inventar



Beiträge: 4681

Hups
Sind natürlich µA.


Gruß, Bartho


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 19 Beiträge im Durchschnitt pro Tag       heute wurden bisher 9 Beiträge verfasst
© x sparkkelsputz        Besucher : 182422759   Heute : 1799    Gestern : 5459    Online : 374        29.11.2024    11:51
4 Besucher in den letzten 60 Sekunden        alle 15.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.488479852676