#include "__T6963C.h"
#define WATER LATD.F0
#define TANK LATD.F2
// T6963C module connections
char T6963C_dataPort at PORTC;
sbit T6963C_ctrlwr at LATD7_bit;
sbit T6963C_ctrlrd at LATD6_bit;
sbit T6963C_ctrlcd at LATD4_bit;
sbit T6963C_ctrlrst at LATD3_bit;
sbit T6963C_ctrlwr_Direction at TRISD7_bit;
sbit T6963C_ctrlrd_Direction at TRISD6_bit;
sbit T6963C_ctrlcd_Direction at TRISD4_bit;
sbit T6963C_ctrlrst_Direction at TRISD3_bit;
// End of T6963C module connections
// Signals not used by library, they are set in main function
sbit T6963C_ctrlce at LATD5_bit; // CE signal
sbit T6963C_ctrlfs at LATD1_bit; // FS signal
sbit T6963C_ctrlce_Direction at TRISD5_bit; // CE signal direction
sbit T6963C_ctrlfs_Direction at TRISD1_bit; // FS signal direction
int cuenta = 0;
void InitMCU();
void Init_Interrupt();
void interrupt()
{
// Interrupcion TMR0
if (PIR0.TMR0IF){
TMR0L = 0x05; // Se carga la cuenta inicial en 65285 para 1ms.
TMR0H = 0xFF; // ''
cuenta++;
if (cuenta >= 500) {
WATER = ~WATER;
cuenta = 0;
}
PIR0.TMR0IF = 0; // Reinicio de la bandera del bit de interrupción.
}
}
void main()
{
InitMCU();
Init_Interrupt();
while (1) {
//T6963C_write_text("Una cadena", 0, 0, T6963C_ROM_MODE_XOR);
//T6963C_write_text("Otra cadena", 0, 15, T6963C_ROM_MODE_XOR);
//T6963C_write_text("Otra cadena x2", 0, 30, T6963C_ROM_MODE_XOR);
//T6963C_rectangle(40, 40, 199, 87, T6963C_WHITE);
}
}
void InitMCU()
{
ANSELA = 0x00; // Digital o analogico
ANSELC = 0x00;
ANSELD = 0x00;
ANSELE = 0x00;
TRISA = 0x00; // Entrada o salida
TRISC = 0x00;
TRISD = 0x00;
TRISE = 0x00;
TRISA.F5 = 1; // Multiplexor entrada (Y)
LATA = 0x00; // Low o High
LATC = 0x00;
LATD = 0x00;
LATE = 0x00;
TANK = 1;
delay_ms(200);
TANK = 0;
T6963C_ctrlce_Direction = 0;
T6963C_ctrlce = 0; // Enable T6963C
T6963C_ctrlfs_Direction = 0;
T6963C_ctrlfs = 0; // Font Select 8x8
// Initialize T6963C
T6963C_init(240, 128, 8);
TANK = 1;
//WELL = 1;
// Enable both graphics and text display at the same time
//T6963C_graphics(1);
//T6963C_text(1);
// Cursor off
//T6963C_cursor(0);
}
void Init_Interrupt()
{
INTCON = 0xC0; // GIE (Global Interrupt Enable) = 1, IPEN (Peripheral Interrupt Enable) = 1
// TMR0 16bits
T0CON0 = 0x90; // Timer0 Enable - Timer de 16 bits
T0CON1 = 0x46; // Clock Source Fosc/4 - Prescaler 64
PIE0 = 0x20; // TMR0 Enable Interrupt
TMR0L = 0x05; // La cuenta inicia en 65285 para 1ms, Prescaler 64
TMR0H = 0xFF;
}