TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: neoplat en 08 de Septiembre de 2003, 09:18:00
-
no se que es lo que esta pasando !
Estoy programando con MicroCode Studio (basic), el programa esta correctamente. pero el codigo que me compila en asembler no esta bien, No es igual a los demas archivos en asambler que tengo, por ejemplo:
MicroCodeStudio:
un pequeño y simple programa para encender y apagar un led en Porta.0
------------------------------------------------------------------------
; PicBasic Pro Compiler 2.43, (c) 1998, 2002 microEngineering Labs, Inc. All Rights Reserved.
PM_USED EQU 1
INCLUDE "16F84.INC"
RAM_START EQU 0000Ch
RAM_END EQU 0004Fh
RAM_BANKS EQU 00001h
BANK0_START EQU 0000Ch
BANK0_END EQU 0004Fh
EEPROM_START EQU 02100h
EEPROM_END EQU 0213Fh
R0 EQU RAM_START + 000h
R1 EQU RAM_START + 002h
R2 EQU RAM_START + 004h
R3 EQU RAM_START + 006h
R4 EQU RAM_START + 008h
R5 EQU RAM_START + 00Ah
R6 EQU RAM_START + 00Ch
R7 EQU RAM_START + 00Eh
R8 EQU RAM_START + 010h
FLAGS EQU RAM_START + 012h
GOP EQU RAM_START + 013h
RM1 EQU RAM_START + 014h
RM2 EQU RAM_START + 015h
RR1 EQU RAM_START + 016h
RR2 EQU RAM_START + 017h
_PORTL EQU PORTB
_PORTH EQU PORTA
_TRISL EQU TRISB
_TRISH EQU TRISA
#define _Led _PORTA_0
#define _PORTA_0 PORTA, 000h
INCLUDE "LED.MAC"
INCLUDE "PBPPIC14.LIB"
LABEL?L _Loop
HIGH?T _Led
PAUSE?C 001F4h
LOW?T _Led
PAUSE?C 001F4h
GOTO?L _Loop
END?
END
-------------------------------------------------------------------------
** estoy usando el sim1684 http://voltio.ujaen.es/casanova/pics/sim1684.htm
este es un pequeño programa que baje de internet, hace lo mismo , pero SI FUNCIONA. Que es lo que esta mal ???
list P=16F84 ; indicamos el modelo de PIC que tenemos
; registros
DDRB equ 0x06 ; banco 1
PORTB equ 0x06 ; banco 0
STATUS equ 0x03 ; banco 0 y 1
TMR0 equ 0x01 ; banco 0
OPTIO equ 0x01 ; banco 1
INTCON equ 0x0b ; banco 0 y 1
; constantes del programa
TIEMPO equ 0x30 ; posicion de memoria
TICKS equ 20 ; Ticks entre parpadeo
org 0
; Accedemos al segundo banco de RAM de Datos
bsf STATUS,5
; Configuración puertos
movlw 0
movwf DDRB ; TRISB = 0 -> puerto B de salida
; configuracion del timer
movlw b"01010111" ; divisor = 256, timer
movwf OPTIO
; Accedemos al primer banco de RAM
bcf STATUS,5
; Pongo a cero el puerto B
clrf PORTB
; empieza el programa principal
inicio
bsf PORTB,1 ; enciende led
call pausa
bcf PORTB,1 ; apaga led
call pausa
goto inicio
; RUTINA DE ESPERA
pausa
movlw TICKS ; tiempo_espera = TICKs * t_tic
movwf TIEMPO ; guarda valor en memoria
otro_tic
movlw 0xB2
movwf TMR0 ; t_tic = 20 mseg
sigue
btfss INTCON,2 ; ¿desbordamiento ?
goto sigue ; no
bcf INTCON,2 ; si -> repongo flag
decfsz TIEMPO,1
goto otro_tic
return
END
PD: tal vez tengo mal configurado la parte de includes, compiladores, etc. en el microcodestudio.
alguien podra ayudarme.
thanks!
neoplat
-
Hola Neo,
El código que genera el PBP es de esa forma, y no está mal. Te aseguro que si tu programa está bien y tu hard está bien el código que genera el PBP rula bien
Las diferencia es que el PBP tiene una serie de macros que tienen esa sintaxis. Tu has compilado con la opción PM es decir con el ensamblador de Melabs. Si pruebas a ensamblar con el de microchip, el código que genera es normal y lo podrás depurar mejor. Pero para encender un led no deberías tener problemas.
Saludos
Ricky