// Ansteuerung von I2C LCD-Anzeige DSM-0822A von Pollin
// Lauftext
// Michael Dworkin
// 03.06.2003
// Compiler CC5x
#include <16F871.H>
// Speihersutz121345=aus,Debug11=aus,ProgrammFlash9=an,EEpromRead8=an,NiendervoltProgr7=aus
// NiederVoltReset6=an,EinschaltTimer3=an,WachDogTimer2=aus,Oszilator01=HC
#pragma config |= 0b.11.111101.11.00.10
#pragma origin 100 // Ab Adresse 100 im Programmspeicher
#pragma bit sda @ PORTB.7 // Datenleitung SDA
#pragma bit scl @ PORTB.6 // Taktleitung SCL
#pragma bit tsda @ TRISB.7 // Datenleitung SDA IN/AUT - Umschalter
#pragma bit tscl @ TRISB.6 // Taktleitung SCL IN/AUT - Umschalter
#include "I2C.c" // I2C-Kommunikation
#include "DSM-0822A.c" // DSM-0822A Treibern
//******************************************************************************
void InitUSART()
{
BRGH=1;
SPBRG=129; // (9600 baud @ 20MHz input clock)
SPEN = 1; // Set_Serial_Pins;
SYNC = 0; // Set_Async_Mode;
TX9 = 0; // Set_8bit_Tx;
RX9 = 0; // Set_8bit_Rx;
CREN = 1; // Enable_Rx;
TXEN = 1; // Enable_Tx;
RCIE=0; // Rx Interrupt aus
}
void Delay1ms( uns16 time)
{
char next = 0;
OPTION = 6; // prescaler divide TMR0 rate by 128
TMR0 = 0; //
do
{
next += 39; // 4992=128*39 ,4992+15=5007/5=1,0014ms
clrwdt(); // needed only if watchdog is enabled
while (TMR0 != next) // 125 * 8 = 1000 (= 1 ms)
;
}
while ( -- time != 0);
}
void Lauftext(const char *__putstr)
{
char __ps,z;
const char *__Temp;
uns8 i;
i=0;
while (1)
{
z=0;
__Temp=__putstr+i;
__ps = *__Temp;
while(z<8)
{
__Temp++;
if (__ps== 0) break;
Ausgabe(z,__ps);
__ps = *__Temp;
z++;
}
Delay1ms(400);
if (__ps== 0) break;
i++;
}
}
//*******************************************************
// Hauptprogramm
//*******************************************************
void main()
{
char i;
TRISB=0b00111111; //Alles Ausgänge
TRISC=0b.1101.0011; // sck rc3-0, sdo rc5-0, CS rc2-0.
InitUSART(); // Hardwareschnittstelle des PICs einstellen
while(!TXIF); // Prüfen, ob Sender frei ist
TXREG ='B'; // Bereitzeichen senden
LCD_Init();
Lauftext(" MICHAEL DWORKIN MACHT LAUFTEXT");
Delay1ms(1000);
Lauftext(" BESUCHEN SIE MEINE WEBSEITE WWW.CC5X.DE.VU");
Delay1ms(700);
LCDString(0,"TSCHUSS!");
while(1); // Programm stoppt hier