#INCLUDE <16f887.h>
#USE DELAY(CLOCK=4000000)
#DEFINE USE_PORTB_LCD TRUE
#INCLUDE <LCD.C>
#FUSES XT,NOPROTECT,NOWDT,NOBROWNOUT,PUT,NOLVP
#BYTE PORTA= 5
#BYTE PORTB= 6
#BYTE PORTC= 7
#BYTE PORTD= 8
#BYTE PORTE= 9
#DEFINE SW1 PORTB,0
#DEFINE SW2 PORTB,1
#DEFINE SW3 PORTB,2
#DEFINE TUNI PORTE,2//Definición de variables
#DEFINE TDEC PORTE,1//Definición de variables
#DEFINE TCEN PORTE,0//Definición de variables
Byte CONST display[10]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67};
BYTE CONST DERECHA[8]={0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80};
BYTE CONST ISQUIR[8]={0X80,0X40,0X20,0X10,0X08,0X04,0X02,0X01}; //un entero, es decir de 8 bits
INT CONT=0;//Declarar la variable CONTRET
SHORT UNI=0, DEC=0, CENT=0, I=0, J=0, K=0;
VOID MOSTRAR ()
{
LCD_PUTC ("\f"); // BORRA LCD
FOR (J = 1; J<6; J++)
{
PORTA = DERECHA[J];
LCD_GOTOXY (7, 1); //LINEA UNO CARACTER SIETE
LCD_PUTC ("ARRIBA");
FOR (I = 1; I < 10; I++)
{
PORTC = UNI;
PORTE = 0B00000100;
DELAY_MS (10);
PORTC = DEC;
PORTE = 0B00000010;
DELAY_MS (10);
PORTE = 0B00000001;
PORTC = CENT;
DELAY_MS (10);
}
}
LCD_PUTC ("\f"); // BORRA LCD
FOR (J = 0; J < 6; J++)
{
PORTA = ISQUIR[J];
LCD_GOTOXY (7, 2); //LINEA DOS CARACTER SIETE
LCD_PUTC ("ABAJO");
FOR (I = 1; I < 10; I++)
{
PORTC = UNI;
PORTE = 0B00000100;
DELAY_MS (10);
PORTC = DEC;
PORTE = 0B00000010;
DELAY_MS (10);
PORTE = 0B00000001;
PORTC = CENT;
DELAY_MS (10);
}
}
}
VOID MAIN ()
{
SET_TRIS_D (0B00000000);
SET_TRIS_A (0B00000000);
SET_TRIS_C (0B00000000);
SET_TRIS_B (0B00111000);
SET_TRIS_E (0B00000000);
// ! ANSEL = 0;
// ! ANSELH = 0;
PORTB = 0;
PORTE = 0;
PORTA = 0;
PORTC = 0;
PORTD = 0;
CONT = 0;
LCD_INIT (); //INICIALIZA LCD
LCD_PUTC ("\f"); // BORRA LCD
WHILE (1)
{
IF ( (BIT_TEST (SW1))&& ( ! BIT_TEST (SW2))&& ( ! BIT_TEST (SW3) ))
{
MOSTRAR () ;
IF (CONT == 1000)
{
CONT = 0;
}
CONT++;
CENT = CONT / 100;
DEC = (CONT % 100)/10;
UNI = (CONT % 100) % 10;
}
}
}
Es ++I, no I++...
No sé como será en CCS, pero en XC8 está bien escribir "variable++" para incrementar la variable.
| uint8_t i = 0; while(1) { printf("El valor es: %u", i); i++; } | uint8_t i = 0; while(1) { printf("El valor es: %u", i); ++i; } |
| uint8_t i; for(i = 0; i < 10 ; i++) { //.. } | uint8_t i; for(i = 0; i < 10 ; ++i) { //.. } |
| uint8_t i = 0; while(i++){ //No se ejecuta ni una vez } | uint8_t i = 0; while(++i){ //... Se ejecuta 256 veces } |
| uint8_t i = 0; while(1) { //imprime comenzando desde 0 printf("El valor es: %u", i++); } | uint8_t i = 0; while(1) { //imprime comenzando desde 1 printf("El valor es: %u", ++i); } |