i'll check that later tonight with my own stuff.
i'll check that later tonight with my own stuff.
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
well i just tried that one...
no big difference on the previous,just correcting the way i wrote HPWM, enable the MCLR and remove CodeProtect... it's working on RB3 as it's suppose to.Code:@ DEVICE MCLR_ON, INTRC_OSC, WDT_ON, LVP_OFF, BOD_OFF, PWRT_ON, PROTECT_OFF, CCPMX_ON OSCCON=$60 ' use internal 4MHZ osc PAUSE 100 ' start-up delay TRISB=0 DEFINE CCP1_REG PORTB DEFINE CCP1_BIT 3 HPWM 1,128,1000 HERE: GOTO HERE
BTW i'd attach the .HEX file to dump on your PIC. Let's assume that it could be a compiler problem... maybe.
let us know.
PS just rename .txt to .hex
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
Hi Steve. I copied your code exactly and it still outputs only on RB0. I suspect my programmer and/or software is the problem. There is an option "CCP1 on RB3" that works on the 16F818 but the option is "grayed out" when I program the 16F88. I guess it will not allow the use of RB3. I think it's time to get the latest hardware/software from Microchip. Thank you for your help.
That was it. My software was forcing CCP1 onto RB0, while MPLAB software shows "CCP1 ON RB3". Thanks Everybody.
peterdeco1,
What programmer software and hardware are you using that causes the problem? We would all like to know. We want to avoid running in to the same difficulties.
Last edited by Dick Ivers; - 21st January 2006 at 19:28.
hi guys can any one help with assembly code for dimming an led using the pic16f88. ihave read the datasheet but i dont seem to underatand it i have come with code but it doesnt work can anybody tell me whats wrong with my code.
list p=16f88
INCLUDE "p16f88.inc"
_;****Set up the Constants****
STATUS equ 03h
TRISA equ 85h ;Address of the STATUS register
TRISB equ 86h
PORTA equ 05h ;Address of the tristate register for port A
PORTB equ 06h ;Address of Port A
COUNT1 equ 20h ;First counter for our delay loops
COUNT2 equ 21h ;Second counter for our delay loops
ANSEL equ 9Bh
OSCCON equ 8Fh
CCP1CON equ 17h
T2CON equ 12h
TMR2 equ 11h
CCPR1L equ 15h
PR2 equ 92h
PIR1 equ 0Ch
PIE1 equ 8Ch
movlw B'00000000' ; 31.25khz
bsf STATUS, 5
movwf OSCCON
nop
nop
nop
bcf STATUS, 5
movlw b'00111100'
movwf CCP1CON
bsf 03h,5 ;Go to Bank 1
movlw 00h ;Put 00000 into W
movwf TRISA ;Move 00000 onto TRISA – all pins set to output
movlw 00h ;Set the Port B pins
movwf TRISB ;to output. ;Put 00000 into W
movlw 00h
movwf ANSEL ;Move 00000 onto TRISA – all pins set to output
movlw b'11111111'
movwf PR2
bcf 03h,5 ;Come back to Bank 0
movlw b'00001111'
movwf TMR2
Start
movlw b'00001111'
movwf CCPR1L ; set duty cycle
Loop1
decfsz CCPR1L ;dimming led by varying the duty cycle
goto Loop1
goto Start
end
I'll bet at least on the configuration fuses settings... AND... is there any specific reason why you want to run your PIC @ 32KHz?
i didn't did the calc, but i feel your current setting doesn't work anyways...
try the following
Sorry, ASM is really not my cup of teaCode:list p=16f88 INCLUDE "p16f88.inc" ; Program Configuration Register 1 __CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _PWRTE_OFF & _WDT_OFF & _INTRC_IO ; Program Configuration Register 2 __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF errorlevel -302 ; disable ' ensure .. bank pouet pouet' warning message BANKSEL OSCCON MOVLW B'01100000' MOVWF OSCCON ; 4 MHz INT CLOCK MODE BTFSS OSCCON,IOFS ; wait 'till int osc is stable GOTO $-1 BANKSEL PORTB CLRF PORTB ; Clear all CLRF PORTA ; outputs BANKSEL TRISA CLRF TRISA ; all pins set to output CLRF TRISB ; BANKSEL ANSEL CLRF ANSEL ; Disable all ADCs ; ; PWM Setup ; --------- BANKSEL PR2 movlw .249 ; ~250Hz PWM FREQUENCY movwf PR2 BANKSEL T2CON movlw b'00000111' ; prescaler 1:16, Timer2=on movwf T2CON BANKSEL CCP1CON movlw b'00001100' ; pwm mode movwf CCP1CON Start BANKSEL CCPR1L movlw .250 movwf CCPR1L ; set duty cycle to ~max, 100% Loop1 ; ((10+bananas) *250) uSec delay loop ; to provide slower fading effect goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 DECFSZ W,F GOTO Loop1 decfsz CCPR1L,F ; dimming led by varying the duty cycle goto Loop1 goto Start endSo i'll not be surprised if some comes with a better solution, or with some constructive comments on the above (apart that i should care a little bit more about the bank switching... i feel there's a few useless BANKSEL here and there... that's what happen when you're lazy
)
<hr>
Please, next time, try to not double, triple post the same question on various forum section.
Last edited by mister_e; - 12th November 2007 at 23:52.
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
Bookmarks