hola..que version de proteus tienes...acabo de simular el programa y a mi si me funciona...
a lo mejor es la version del proteus...yo tengo el proteus 7.4 sp3
a lo mejor es la version del proteus...yo tengo el proteus 7.4 sp3
Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
///////////////////////////////////////
//AUTOR:JORGE ARTURO RODRIGUEZ HERNANDEZ
//TITLE;SERVO SIMPLE
//DATE:23/ABRIL/2009
///////////////////////////////////////
//CONFIGURACION///////////////////
#include<16f628a.h>
#include <STRING.H>
#fuses INTRC_IO,NOWDT,NOLVP,MCLR,NOPROTECT
#use delay(clock=20000000)
#use rs232(baud=2400,xmit=PIN_A1,rcv=PIN_A0)
void config(void);
void main(void){
long i,a;
char POSICION;
config();
INICIO:
output_b(0x00);
printf("POSICIONANDO EL MOTOR\r\n");
for(i=a;i>=500;i=i-10){
output_high(PIN_B0);
delay_us(i);
output_low(PIN_B0);
delay_ms(10);
}
printf("\f");
printf("POSICION --> 0 GRADOS\r\n");
printf("ESCRIBA LA POSICION QUE QUIERE:\r\n");
printf("45 GRADOS -->(Q)\r\n");
printf("90 GRADOS -->(W)\r\n");
printf("135 GRADOS -->(E)\r\n");
printf("180 GRADOS -->(R)\r\n");
do{
POSICION=getch();
}while(POSICION!='Q' && POSICION!='W' && POSICION!='E' && POSICION!='R');
if (POSICION=='Q'){
a=1000;
}
else if (POSICION=='W'){
a=1500;
}
else if (POSICION=='E'){
a=2000;
}
else if (POSICION=='R'){
a=2500;
}
output_high(PIN_B0);
delay_us(a);
output_low(PIN_B0);
delay_ms(5000);
goto INICIO;
}
void config(void){
set_tris_a(0x21);
set_tris_b(0x00);
setup_comparator(NC_NC_NC_NC);
}
Juvenal dijo:Hola, si quisiera usar estos programas con el 18f4550 que tendria que cambiar de estos programas, gracias por el post y su respuesta
LVP: Low Voltage ProgrammingPasivoSPC dijo:Hola de nuevo estuve revisando mis codigos mi probrema fue k dentro de los recursos de archivo *h habia
#FUSES LVP //Low Voltage Programming on B3(PIC16) or B5(PIC18)
fue la confucion y no por el programa y bueno otra duda fue para k sirve..? este codigo FUSES LVP en k forma me sirve .....
///////////////////////////////////////////////////////////////////////////
//// KBD_LIB.C by Redraven ////
//// ////
//// Derived from KBDD.C ////
//// Generic keypad scan driver ////
//// ////
//// kbd_init() Must be called before any other function. ////
//// ////
//// c = kbd_getc(c) Will return a key value if pressed or /0 if not ////
//// This function should be called frequently so as ////
//// not to miss a key press. ////
//// ////
///////////////////////////////////////////////////////////////////////////
//// (C) Copyright 1996,1997 Custom Computer Services ////
//// This source code may only be used by licensed users of the CCS C ////
//// compiler. This source code may only be distributed to other ////
//// licensed users of the CCS C compiler. No other use, reproduction ////
//// or distribution is permitted without written permission. ////
//// Derivative programs created using this software in object code ////
//// form are not restricted in any way. ////
////////////////////////////////////////////////////////////////////////////
////////////////// The following defines the keypad layout on port D
// Un-comment the following define to use port B
#define use_portb_kbd TRUE
// Make sure the port used has pull-up resistors (or the LCD) on
// the column pins
#if defined(__PCH__)
#if defined use_portb_kbd
#byte kbd = 0xF81 // This puts the entire structure
#else
#byte kbd = 0xF83 // This puts the entire structure
#endif
#else
#if defined use_portb_kbd
#byte kbd = 6 // on to port B (at address 6)
#else
#byte kbd = 8 // on to port D (at address 8)
#endif
#endif
#if defined use_portb_kbd
#define set_tris_kbd(x) set_tris_b(x)
#else
#define set_tris_kbd(x) set_tris_d(x)
#endif
//Keypad connection: (for example column 0 is B0)
#define COL0 (1 << 0) // PIN_B0
#define COL1 (1 << 1) // PIN_B1
#define COL2 (1 << 2) // PIN_B2
#define COL3 (1 << 3) // PIN_B3
#define ROW0 (1 << 4) // PIN_B4
#define ROW1 (1 << 5) // PIN_B5
#define ROW2 (1 << 6) // PIN_B6
#define ROW3 (1 << 7) // PIN_B7
#define ALL_ROWS (ROW0|ROW1|ROW2|ROW3)
#define ALL_PINS (ALL_ROWS|COL0|COL1|COL2|COL3)
// Keypad layout:
char const KEYS[4][4] = {{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}};
#define KBD_DEBOUNCE_FACTOR 33 // Set this number to apx n/333 where
// n is the number of times you expect
// to call kbd_getc each second
void kbd_init() {
}
char kbd_getc( ) {
static byte kbd_call_count;
static short int kbd_down;
static char last_key;
static byte col;
byte kchar;
byte row;
kchar='\0';
if(++kbd_call_count>KBD_DEBOUNCE_FACTOR) {
switch (col) {
case 0 : set_tris_kbd(ALL_PINS&~COL0);
kbd=~COL0&ALL_PINS;
break;
case 1 : set_tris_kbd(ALL_PINS&~COL1);
kbd=~COL1&ALL_PINS;
break;
case 2 : set_tris_kbd(ALL_PINS&~COL2);
kbd=~COL2&ALL_PINS;
break;
case 3 : set_tris_kbd(ALL_PINS&~COL3);
kbd=~COL3&ALL_PINS;
break;
}
if(kbd_down) {
if((kbd & (ALL_ROWS))==(ALL_ROWS)) {
kbd_down=false;
kchar=last_key;
last_key='\0';
}
} else {
if((kbd & (ALL_ROWS))!=(ALL_ROWS)) {
if((kbd & ROW0)==0)
row=0;
else if((kbd & ROW1)==0)
row=1;
else if((kbd & ROW2)==0)
row=2;
else if((kbd & ROW3)==0)
row=3;
last_key =KEYS[row][col];
kbd_down = true;
} else {
++col;
if(col==4)
col=0;
}
}
kbd_call_count=0;
}
set_tris_kbd(ALL_PINS);
return(kchar);
}
#include <16f876a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=4000000)
#use fast_io(b)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#include "kbd_lib.c"
void main(){
char mitecla=0;
kbd_init();
printf("\rKeyboard 4x4 monitor\r\r";
do {
mitecla=kbd_getc();
if(mitecla!=0){
putc(mitecla);
}
} while (TRUE);
}
///////////////////////////////////////
//AUTOR:JORGE ARTURO RODRIGUEZ HERNANDEZ
//TITLE;CONTROL DE SERVO
//DATE:26/JUNIO/'09
///////////////////////////////////////
//CONFIGURACION///////////////////
#include<16F628A.h>
#include<math.h>
#fuses HS,NOWDT,NOLVP,MCLR,NOPROTECT
#use delay(clock=20000000)
#use rs232(baud=2400,xmit=PIN_A0,rcv=PIN_A1)
void config(void){
set_tris_a(0x22);
set_tris_b(0x00);
setup_comparator(NC_NC_NC_NC);
}
void main(void){
int x;
float y;
long z;
config();
output_b(0x00);
do{
x=getch();
y=(x*6.666e-6)+0.9e-3;
z=y*1000000;
output_high(PIN_B0);
delay_us(z);
output_low(PIN_B0);
delay_us(20000-z);
}while(TRUE);
}