Que tal amigos, soy nuevo en la programación de pics.
Hace años aprendi a programar en ensamblador asi que tengo algo de nociones.
Actualmente comencé a utilizar el mikrobasic version 7 con licencia y todo.
puedo escribir sin problemas en el pic, hice un pequeño programa con instrucciones, if, while, for, etc
y trabaja perfectamente.
El problema es cuando uso la funcion Delay_ms(), cuando el microcontrolador llega a esa parte, simplemente no la ejectuta, se queda ciclado ahi. (cheque el codigo assembler que el compilador genera y lo encuentro correcto)
Intente hacer tan solo que un led encendiera y apagara " portb = not port b , pero seguia pasando lo mismo.
delay_ms(1000)"
Ya cheque en la configuracion del compilador, le di en el botón default en las propiedades del proyecto y sigue sin funcionar.
Que estará pasando?
He hecho la prueba con un 18f452 y un 18f4680. El resultado es el mismo.
Agradeceria muchisimo su ayuda. ya no se que hacer
anexo el programa:
program led blinking
main:
trisb = 0
portb = 0
Delay_ms(1000)
portb = not portb
end.
este es el codigo assembler que genera:
$0000 $EF04 F000 GOTO _main
$0008 $ _main:
;hhhh.pbas,3 :: main:
$0008 $ _main_main:
;hhhh.pbas,4 :: trisb = 0
$0008 $6A93 CLRF TRISB, 0
;hhhh.pbas,5 :: portb = 0
$000A $6A81 CLRF PORTB, 0
;hhhh.pbas,6 :: Delay_ms(1000)
$000C $0E0B MOVLW 11
$000E $6E0C MOVWF STACK_12, 0
$0010 $0EFF MOVLW 255
$0012 $6E0B MOVWF STACK_11, 0
$0014 $0EFF MOVLW 255
$0016 $6E0A MOVWF STACK_10, 0
$0018 $2E0C DECFSZ STACK_12, F, 0
$001A $D001 BRA $+2
$001C $D007 BRA $+8
$001E $2E0B DECFSZ STACK_11, F, 0
$0020 $D001 BRA $+2
$0022 $D003 BRA $+4
$0024 $2E0A DECFSZ STACK_10, F, 0
$0026 $D7FE BRA $-1
$0028 $D7FA BRA $-5
$002A $D7F6 BRA $-9
$002C $0E33 MOVLW 51
$002E $6E0B MOVWF STACK_11, 0
$0030 $0EFF MOVLW 255
$0032 $6E0A MOVWF STACK_10, 0
$0034 $2E0B DECFSZ STACK_11, F, 0
$0036 $D001 BRA $+2
$0038 $D003 BRA $+4
$003A $2E0A DECFSZ STACK_10, F, 0
$003C $D7FE BRA $-1
$003E $D7FA BRA $-5
$0040 $0E88 MOVLW 136
$0042 $6E0A MOVWF STACK_10, 0
$0044 $2E0A DECFSZ STACK_10, F, 0
$0046 $D7FE BRA $-1
;hhhh.pbas,7 :: portb = not portb
$0048 $1E81 COMF PORTB, 1, 0
$004A $ hhhh_L_0:
$004A $D7FF BRA $
Hace años aprendi a programar en ensamblador asi que tengo algo de nociones.
Actualmente comencé a utilizar el mikrobasic version 7 con licencia y todo.
puedo escribir sin problemas en el pic, hice un pequeño programa con instrucciones, if, while, for, etc
y trabaja perfectamente.
El problema es cuando uso la funcion Delay_ms(), cuando el microcontrolador llega a esa parte, simplemente no la ejectuta, se queda ciclado ahi. (cheque el codigo assembler que el compilador genera y lo encuentro correcto)
Intente hacer tan solo que un led encendiera y apagara " portb = not port b , pero seguia pasando lo mismo.
delay_ms(1000)"
Ya cheque en la configuracion del compilador, le di en el botón default en las propiedades del proyecto y sigue sin funcionar.
Que estará pasando?
He hecho la prueba con un 18f452 y un 18f4680. El resultado es el mismo.
Agradeceria muchisimo su ayuda. ya no se que hacer
anexo el programa:
program led blinking
main:
trisb = 0
portb = 0
Delay_ms(1000)
portb = not portb
end.
este es el codigo assembler que genera:
$0000 $EF04 F000 GOTO _main
$0008 $ _main:
;hhhh.pbas,3 :: main:
$0008 $ _main_main:
;hhhh.pbas,4 :: trisb = 0
$0008 $6A93 CLRF TRISB, 0
;hhhh.pbas,5 :: portb = 0
$000A $6A81 CLRF PORTB, 0
;hhhh.pbas,6 :: Delay_ms(1000)
$000C $0E0B MOVLW 11
$000E $6E0C MOVWF STACK_12, 0
$0010 $0EFF MOVLW 255
$0012 $6E0B MOVWF STACK_11, 0
$0014 $0EFF MOVLW 255
$0016 $6E0A MOVWF STACK_10, 0
$0018 $2E0C DECFSZ STACK_12, F, 0
$001A $D001 BRA $+2
$001C $D007 BRA $+8
$001E $2E0B DECFSZ STACK_11, F, 0
$0020 $D001 BRA $+2
$0022 $D003 BRA $+4
$0024 $2E0A DECFSZ STACK_10, F, 0
$0026 $D7FE BRA $-1
$0028 $D7FA BRA $-5
$002A $D7F6 BRA $-9
$002C $0E33 MOVLW 51
$002E $6E0B MOVWF STACK_11, 0
$0030 $0EFF MOVLW 255
$0032 $6E0A MOVWF STACK_10, 0
$0034 $2E0B DECFSZ STACK_11, F, 0
$0036 $D001 BRA $+2
$0038 $D003 BRA $+4
$003A $2E0A DECFSZ STACK_10, F, 0
$003C $D7FE BRA $-1
$003E $D7FA BRA $-5
$0040 $0E88 MOVLW 136
$0042 $6E0A MOVWF STACK_10, 0
$0044 $2E0A DECFSZ STACK_10, F, 0
$0046 $D7FE BRA $-1
;hhhh.pbas,7 :: portb = not portb
$0048 $1E81 COMF PORTB, 1, 0
$004A $ hhhh_L_0:
$004A $D7FF BRA $