InicioHazlo Tu MismoContador para micro 18fxxxx en lenguaje c

Contador para micro 18fxxxx en lenguaje c

Hazlo Tu Mismo10/30/2010
compilado en mplab

#include <p18f46j50.h>
#include "GenericTypeDefs.h"
#include <delays.h>
/** Cconfiguration Bits***********************************/
#pragma config WDTEN = OFF //WDT disabled (enabf by SWDTEN bit)
#pragma config PLLDIV = 3 //Divide by 3 (12 MHz oscillator input)
#pragma config STVREN = ON //stack overflow/underflow reset enabled
#pragma config XINST = OFF //Extended instruction set disabled
#pragma config CPUDIV = OSC1 //No CPU system clock divide
#pragma config CP0 = OFF //Program memory is not code-protected
#pragma config OSC = HSPLL //HS oscillator, PLL enabled, HSPLL used by USB
#pragma config T1DIG = OFF //Sec Osc clock source may not be selected, unless T1OSCEN = 1
#pragma config LPT1OSC = OFF //high power Timer1 mode
#pragma config FCMEN = OFF //Fail-Safe Clock Monitor disabled
#pragma config IESO = OFF //Two-Speed Start-up disabled
#pragma config WDTPS = 32768 //1:32768
#pragma config DSWDTOSC = INTOSCREF //DSWDT uses INTOSC/INTRC as clock
#pragma config RTCOSC = INTOSCREF //RTCC uses INTRC as clock
#pragma config DSBOREN = OFF //Zero-Power BOR disabled in Deep Sleep
#pragma config DSWDTEN = OFF //Disabled
#pragma config DSWDTPS = 8192 //1:8,192 (8.5 seconds)
#pragma config IOL1WAY = OFF //IOLOCK bit can be set and cleared
#pragma config MSSP7B_EN = MSK7 //7 Bit address masking
#pragma config WPFP = PAGE_1 //Write Protect Program Flash Page 0
#pragma config WPEND = PAGE_0 //Start protection at page 0
#pragma config WPCFG = OFF //Write/Erase last page protect Disabled
#pragma config WPDIS = OFF //WPFP[5:0], WPEND, and WPCFG bits ignored


/********************************************************/
/*------- Espacio para declaracion de constantes ------*/
/********************************************************/
#define d_unidad LATBbits.LATB3
#define d_decena LATBbits.LATB2
#define d_centena LATBbits.LATB1
#define d_umil LATBbits.LATB0


/********************************************************/
/*--- Espacio para declaracion de variables globales --*/
/********************************************************/
#pragma udata
char pul1;
char i=0 ;
char leds1[9]= {0,1,2,4,8,16,32,64,128};
char unidad=0,decena=0,centena=0,umil=0;
//PGFEDCBA
char display[16]= { 0b00111111,//0
0b00000110,//1
0b01011011,//2
0b01001111,//3
0b01100110,//4
0b01101101,//5
0b01111101,//6
0b00000111,//7
0b01111111,//8
0b01100111,//9

};

/********************************************************/
/********************************************************/
/*-------------- Espacio para funciones ---------------*/
/********************************************************/
#pragma code
extern void _startup (void);









/********************************************************/
/********************************************************/
/*------------ Espacio de codigo principal -------------*/
/********************************************************/
#pragma code
void main(void)
{
ANCON0 |= 0x0F; // Configura todos los pines como digital
LATD = 0x00; // Cero por el puerto B
LATA = 0x00; // Cero por el puerto D
TRISD = 0x00; // Configura como salida el puerto D
TRISA = 0x00;
PORTA =0x00;
TRISC = 0x03; // Configura C0 y C1 como entrada

for(;{
unidad=0,decena=0,centena=0,umil=0;
pul1= PORTC&0x03; // C0 Y C1 pregunta si el pulsador esta abierto o cerrado
while(umil<=9)
{
if((pul1)==0)
{

for(unidad=0;unidad<=9;unidad++){
PORTD=display[unidad];
PORTA=0b00001000;
d_unidad=1;
Delay1KTCYx(10);
d_unidad=0;
Delay1KTCYx(10);

PORTD=display[decena];
PORTA=0b00000100;
d_decena=1;
Delay1KTCYx(10);
d_decena=0;
Delay1KTCYx(10);

PORTD=display[centena];
PORTA=0b00000010;
d_centena=1;
Delay1KTCYx(10);
d_centena=0;
Delay1KTCYx(10);

PORTD=display[umil];
PORTA=0b00000001;
d_umil=1;
Delay1KTCYx(10);
d_umil=0;
Delay1KTCYx(10);

}

decena++;
if(decena>9){
decena=0;
centena++;
if(centena>9){
centena=0;
umil++;
}
}



}
else {

if((pul1)==1) // decenas
{

for(decena=0;decena<=9;decena++){
PORTD=display[unidad];
PORTA=0b00001000;
d_unidad=1;
Delay1KTCYx(10);
d_unidad=0;
Delay1KTCYx(10);

PORTD=display[decena];
PORTA=0b00000100;
d_decena=1;
Delay1KTCYx(10);
d_decena=0;
Delay1KTCYx(10);

PORTD=display[centena];
PORTA=0b00000010;
d_centena=1;
Delay1KTCYx(10);
d_centena=0;
Delay1KTCYx(10);

PORTD=display[umil];
PORTA=0b00000001;
d_umil=1;
Delay1KTCYx(10);
d_umil=0;
Delay1KTCYx(10);

}

decena++;
if(decena>9){
decena=0;
centena++;
if(centena>9){
centena=0;
umil++;
}
}}
else {

if((pul1)==2) // centenas
{

for(centena=0;centena<=9;centena++){
PORTD=display[unidad];
PORTA=0b00001000;
d_unidad=1;
Delay1KTCYx(10);
d_unidad=0;
Delay1KTCYx(10);

PORTD=display[decena];
PORTA=0b00000100;
d_decena=1;
Delay1KTCYx(10);
d_decena=0;
Delay1KTCYx(10);

PORTD=display[centena];
PORTA=0b00000010;
d_centena=1;
Delay1KTCYx(10);
d_centena=0;
Delay1KTCYx(10);

PORTD=display[umil];
PORTA=0b00000001;
d_umil=1;
Delay1KTCYx(10);
d_umil=0;
Delay1KTCYx(10);

}

centena++;
if(centena>9){
centena=0;
umil++;

}

}
else {

if((pul1)==3) // mil
{

for(umil=0;umil<=9;umil++){
PORTD=display[unidad];
PORTA=0b00001000;
d_unidad=1;
Delay1KTCYx(10);
d_unidad=0;
Delay1KTCYx(10);

PORTD=display[decena];
PORTA=0b00000100;
d_decena=1;
Delay1KTCYx(10);
d_decena=0;
Delay1KTCYx(10);

PORTD=display[centena];
PORTA=0b00000010;
d_centena=1;
Delay1KTCYx(10);
d_centena=0;
Delay1KTCYx(10);

PORTD=display[umil];
PORTA=0b00000001;
d_umil=1;
Delay1KTCYx(10);
d_umil=0;
Delay1KTCYx(10);

}

umil++;



}

}

}}}}

}//end main
/*-------------- Escriba su codigo aca -------------*/



// LATDbits.LATD0=!LATDbits.LATD0; //Saca un cero por el Puerto E0


//*******************************************************
/********************************************************/
/********************************************************/
/*----------------- VECTOR DE RESET --------------------*/
/********************************************************/
#pragma code _RESET_INTERRUPT_VECTOR = 0x1000
void _reset (void)
{
_asm goto _startup _endasm
}
#pragma code
/********************************************************/
/********************************************************/
/*------ VECTOR DE INTERRUPCONES DE ALTA PRIORIDAD -----*/
/********************************************************/
#pragma code _HIGH_INTERRUPT_VECTOR = 0x1008
void _high_ISR (void)
{
;
}
/********************************************************/
/********************************************************/
/*------ VECTOR DE INTERRUPCONES DE BAJA PRIORIDAD -----*/
/********************************************************/
#pragma code _LOW_INTERRUPT_VECTOR = 0x1018
void _low_ISR (void)
{

;
}
AGRADECER NO CUESTA!!!!!
DEJEN PUNTOS!!!!!!
Datos archivados del Taringa! original
10puntos
1,015visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
3visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

l
lizzie_v🇦🇷
Usuario
Puntos0
Posts2
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.