Hola como están, estoy trabajando en mi tesis y la verdad tengo algunas problemas con esto de los pic. He trabajado antes con microas atmel pero no pics. Estoy haciendo un programa en C para el cnotrol de una. La verdad el programa es sencillo pero me falta la parte de la intensidad de corriente con pulsos PWM y es ahí donde requiero ayuda. el código de programación es el siguiente:
tambien necesito ayuda con lo del retardo de un milisegundo y debo hacer dos pregutnas: debo incluir algun comando o línea para habilitar el oscilador de 4MHz interno?, y el archivo .bas incluido en el inicio, de donde lo consigo o me lo pueden facilitar?, trabajo con mplab8 para generar el archivo .hex
Gracias y perdonen las molestias.
PHP:
INCLUDE "modedefs.bas"
serial VAR BYTE
var1 VAR BIT
var2 VAR BIT
var3 VAR BIT
var1=0
var2=0
var3=0
X=0
luz1 VAR portb.5
luz2 VAR portb.
rele VAR portb.7
temp VAR portb.
INICIO:
SERIN portb.0,N9600,serial
IF serial="L" THEN estado
IF serial="O" THEN fijo2
IF serial="g" THEN inten1
IF serial="h" THEN inten2
IF serial="i" THEN inten3
IF serial="j" THEN inten4
IF serial="k" THEN inten5
IF serial="l" THEN menos
IF serial="R" THEN rele1
IF serial="C" THEN rele2
IF serial="T" THEN tempe
IF serial="S" THEN salida
GOTO INICIO
estado:
IF var1=0 THEN
SEROUT portb.1,N9600,["b"]
IF var1=1 THEN
SEROUT portb.1,N9600,["c"]
IF var3=0 THEN
;pulso PWM 0%
SEROUT portb.1,N9600,["n"]
IF var3=1 THEN
;pulso PWM 25%
SEROUT portb.1,N9600,["o"]
IF var3=2 THEN
;pulso PWM 50%
SEROUT portb.1,N9600,["p"]
IF var3=3 THEN
;pulso PWM 75%
SEROUT portb.1,N9600,["q"]
IF var3=4 THEN
;pulso PWM 100%
SEROUT portb.1,N9600,["r"]
GOTO INICIO
fijo2:
IF var1=0 THEN
HIGH portb.5
var1=1
SEROUT portb.1,N9600,["c"]
GOTO INICIO
IF var1=1 THEN
LOW portb.5
var1=0
SEROUT portb.1,N9600,["b"]
GOTO INICIO
rele1:
IF var2=0 THEN
SEROUT portb.1,N9600,["d"]
IF var2=1 THEN
SEROUT portb.1,N9600,["e"]
GOTO INICIO
rele2:
IF var2=0 THEN
HIGH portb.7
var2=1
SEROUT portb.1,N9600,["e"]
GOTO INICIO
IF var2=1 THEN
LOW portb.7
var2=0
SEROUT portb.1,N9600,["d"]
GOTO INICIO
inten1:
var3=0
;pulso PWM 0%
SEROUT portb.1,N9600,["n"]
GOTO INICIO
inten2:
var3=1
;pulso PWM 25%
SEROUT portb.1,N9600,["o"]
GOTO INICIO
inten3:
var3=2
;pulso PWM 50%
SEROUT portb.1,N9600,["p"]
GOTO INICIO
inten4:
var3=3
;pulso PWM 75%
SEROUT portb.1,N9600,["q"]
GOTO INICIO
inten5:
var3=4
;pulso PWM 100%
SEROUT portb.1,N9600,["r"]
GOTO INICIO
menos:
IF var3=4 THEN
;pulso PWM 75%
SEROUT portb.1,N9600,["q"]
var3=3
IF var3=3 THEN
;pulso PWM 50%
SEROUT portb.1,N9600,["p"]
var3=2
IF var3=2 THEN
;pulso PWM 25%
SEROUT portb.1,N9600,["o"]
var3=1
IF var3=1 THEN
;pulso PWM 0%
SEROUT portb.1,N9600,["n"]
var3=0
IF var3=0 THEN
SEROUT portb.1,N9600,["n"]
GOTO INICIO
tempe:
X=portb.
SEROUT portb.1,N9600["f"]
SEROUT portb.1,N9600["X"]
;hay que poner una subrutina que genere un tiempo de 1 miliseg para que vuelva a tomar el dato, lo actualice y envíe
GOTO INICIO
tambien necesito ayuda con lo del retardo de un milisegundo y debo hacer dos pregutnas: debo incluir algun comando o línea para habilitar el oscilador de 4MHz interno?, y el archivo .bas incluido en el inicio, de donde lo consigo o me lo pueden facilitar?, trabajo con mplab8 para generar el archivo .hex
Gracias y perdonen las molestias.