kante23
11.12.2007, 23:48
Hy,
wer hier ein bischen aufmerksam gelesen hat wird feststellen, dass ich mich schon seit einigen Tagen mit dem 16f88er rumplage und einfahc nicht weiterkommen. Da mir (bis jetzt) keine so wirklich geantwortet hat (in dem anderen Thread) hab ich jetzt mal versucht von Unten heran zu gehen, sprich, ersteinmal ein simples Lauflicht zu programmieren. Das hat eigentlich auch ganz gut geklappt; dann wollte ich den AD-Wandler programmieren und das Ergebniss über 8 LEDs (RB<0:7>) ausgeben. Dazu hab ich erstmal folgenden Code geschrieben (um zu testen, ob er mir überhaupt eine Variable über die LEDs ausgibt).
list p=16f88
__config _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _WDT_OFF & _LVP_OFF & _INTRC_IO & _MCLR_OFF & _BODEN_OFF & _PWRTE_ON
__config _CONFIG2, _IESO_OFF & _FCMEN_OFF
#include p16f88.inc
var equ 0x20
org 0x00
goto _main
org 0x04
goto _main
_main
;2Mhz
banksel OSCTUNE
clrf OSCTUNE
banksel OSCCON
movlw B'00001110'
movwf OSCCON
;alle als DIgiatle I/O
banksel ANSEL
movwf 0x00
movlw ANSEL
; alle RBs als Out
banksel TRISB
clrf TRISB
banksel var
movlw B'11111111'
movwf var
call _set_bin
;Endlosschleife
_l
nop
goto _l
;setzten jeder einzelnen LED auf an (1 in var) oder aus(0 in var)
_set_bin
btfsc var, 0
bsf PORTB, 0
btfss var, 0
bcf PORTB, 0
btfsc var, 1
bsf PORTB, 1
btfss var, 1
bcf PORTB, 1
btfsc var,2
bsf PORTB, 2
btfss var, 2
bcf PORTB, 2
btfsc var, 3
bsf PORTB, 3
btfss var, 3
bcf PORTB, 3
btfsc var, 4
bsf PORTB, 4
btfss var, 4
bcf PORTB, 4
btfsc var, 5
bsf PORTB, 5
btfss var, 5
bcf PORTB, 5
btfsc var, 6
bsf PORTB, 6
btfss var, 6
bcf PORTB, 6
btfsc var, 7
bsf PORTB, 7
btfss var, 7
bcf PORTB, 7
return
return
end
So der Code ist ja eigentlich ganz Simpel. Blos ist das Ergebnis unbefriedigend. Und zwar "aktiviert" er alle LEDs bis auf Nr. 6 .Die bleibt bei diesem Programmablauf aus. Aber wenn ich "bsf PORTB, 6" expliziet aufrufe, dann geht sie an.
Deshalb denk ich, dass ich bei der Intialisierung etwas vergsse, oder falsch mache.
Ich versteh diesen Kontroller einfach nicht.
Ich hoffe es findet sich jemand der ihn shcon einmal erfolgreich programmiert hat, da ich ihn eigentlich wirklich super finde (preisgünstig, ADW, 4k, SSP, I²C, USART ...) und nun auch 3 Stück davon zuhause habe. Leider scheint er nicht alzu verbreitet zu sein, da ich auch keinen guten beispielcode dazu bis jetzt gefunden habe.
Vlt kennt jemand ja einen bzw. kann mir einen von sich schicken
liebe Grüße Kante
wer hier ein bischen aufmerksam gelesen hat wird feststellen, dass ich mich schon seit einigen Tagen mit dem 16f88er rumplage und einfahc nicht weiterkommen. Da mir (bis jetzt) keine so wirklich geantwortet hat (in dem anderen Thread) hab ich jetzt mal versucht von Unten heran zu gehen, sprich, ersteinmal ein simples Lauflicht zu programmieren. Das hat eigentlich auch ganz gut geklappt; dann wollte ich den AD-Wandler programmieren und das Ergebniss über 8 LEDs (RB<0:7>) ausgeben. Dazu hab ich erstmal folgenden Code geschrieben (um zu testen, ob er mir überhaupt eine Variable über die LEDs ausgibt).
list p=16f88
__config _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _WDT_OFF & _LVP_OFF & _INTRC_IO & _MCLR_OFF & _BODEN_OFF & _PWRTE_ON
__config _CONFIG2, _IESO_OFF & _FCMEN_OFF
#include p16f88.inc
var equ 0x20
org 0x00
goto _main
org 0x04
goto _main
_main
;2Mhz
banksel OSCTUNE
clrf OSCTUNE
banksel OSCCON
movlw B'00001110'
movwf OSCCON
;alle als DIgiatle I/O
banksel ANSEL
movwf 0x00
movlw ANSEL
; alle RBs als Out
banksel TRISB
clrf TRISB
banksel var
movlw B'11111111'
movwf var
call _set_bin
;Endlosschleife
_l
nop
goto _l
;setzten jeder einzelnen LED auf an (1 in var) oder aus(0 in var)
_set_bin
btfsc var, 0
bsf PORTB, 0
btfss var, 0
bcf PORTB, 0
btfsc var, 1
bsf PORTB, 1
btfss var, 1
bcf PORTB, 1
btfsc var,2
bsf PORTB, 2
btfss var, 2
bcf PORTB, 2
btfsc var, 3
bsf PORTB, 3
btfss var, 3
bcf PORTB, 3
btfsc var, 4
bsf PORTB, 4
btfss var, 4
bcf PORTB, 4
btfsc var, 5
bsf PORTB, 5
btfss var, 5
bcf PORTB, 5
btfsc var, 6
bsf PORTB, 6
btfss var, 6
bcf PORTB, 6
btfsc var, 7
bsf PORTB, 7
btfss var, 7
bcf PORTB, 7
return
return
end
So der Code ist ja eigentlich ganz Simpel. Blos ist das Ergebnis unbefriedigend. Und zwar "aktiviert" er alle LEDs bis auf Nr. 6 .Die bleibt bei diesem Programmablauf aus. Aber wenn ich "bsf PORTB, 6" expliziet aufrufe, dann geht sie an.
Deshalb denk ich, dass ich bei der Intialisierung etwas vergsse, oder falsch mache.
Ich versteh diesen Kontroller einfach nicht.
Ich hoffe es findet sich jemand der ihn shcon einmal erfolgreich programmiert hat, da ich ihn eigentlich wirklich super finde (preisgünstig, ADW, 4k, SSP, I²C, USART ...) und nun auch 3 Stück davon zuhause habe. Leider scheint er nicht alzu verbreitet zu sein, da ich auch keinen guten beispielcode dazu bis jetzt gefunden habe.
Vlt kennt jemand ja einen bzw. kann mir einen von sich schicken
liebe Grüße Kante