Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
RTC Uhr
1 Einleitung.............................................................................................................................3
2 Verbindungs-Protokoll vom PC zum PIC..............................................................................4
3 Belegungs- Tabelle PIC 16F877..........................................................................................4
4 Wichtige Register im RTC....................................................................................................5
4.1 Control Register 0x0D...................................................................................................5
4.2 Control Register 0x0A....................................................................................................5
5 Schema................................................................................................................................6
6 Delphi Software....................................................................................................................6
6.1 Printscreen....................................................................................................................6
6.2 Source Code..................................................................................................................7
7 PIC Software........................................................................................................................8
7.1.1 File Init.asm.............................................................................................................9
7.1.2 File RS232Com.asm.............................................................................................10
1 Einleitung
In diesem Mini Projekt geht es darum alte RTC (Real Time Clock) Bausteine die Ich
irgendwo abgelötet hatte wieder in Betreib zu nehmen.
Die Bausteine des Typs DS12B887 und DS12887 die mir zur Verfügung standen sind mit
einer internen Batterie ausgerüstet. So musste zuerst festgestellt werden ob die Batterie
noch in Ordnung ist. Dazu gibt’s eine Controll Register dass man auslesen kann.
Als festgestellt wurde das die Batterien bei beiden Bausteinen in Ordnung ist wurde ein PIC
Programm geschrieben mit welchem die Bausteine via RS232 ausgelesen werden konnten.
Auf dem PC wurde ein Delphi Programm geschrieben das die aktuelle Uhrzeit auslesen
kann.
Das stellen der Uhrzeit , das Lesen und Schreiben von Registern ist mit dem Delphi
Programm nicht möglich. Das wurde direkt mit dem Programm Terminal.exe erledigt.
Zu guter letzt wurden die internen Quarze deaktiviert, so dass die Batterie nicht belastet wird
wenn die Bausteine nicht benutzt werden.
Im 1. Byte wird nur das Bit 0 benötigt. Dieses Bit Identifiziert den Zugriff als Lesezugriff.
1 = Daten aus dem RTC auslesen.
0 = Daten in den RTC schreiben
Im 2.Byte wird die Adresse eingetragen auf die man zugreifen möchte.
Im 3.Byte werden Die Daten gesendet die geschrieben werden sollen. Dieses Byte wird
jedoch nur dann übertragen wenn das Lese Bit = 0 ist.
5 Schema
6 Delphi Software
Mit der Delphi Software lässt sich die Uhrzeit und das Datum aus dem RTC Baustein
auslesen.
6.1 Printscreen
Hier ist ein Printscreen abgebildet. Das Programm sendet im Sekundentakt eine
Aktualisierungsanfrage an den Pic Prozessor. Die Daten werden dann auf dem Bildschirm
angezeigt. Weitere Funktionen kennt das Programm nicht.
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, OoMisc, AdPort;
type
TForm1 = class(TForm)
ComPort: TApdComPort;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure ComPortTriggerAvail(CP: TObject; Count: Word);
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
m__Addr : integer;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
x := low + 10 * hi;
case m__Addr of
0: Label3.Caption := intToStr(x);
2: Label2.Caption := intToStr(x);
4: Label1.Caption := intToStr(x);
7: Label6.Caption := intToStr(x);
8: Label8.Caption := intToStr(x);
9: Label10.Caption := intToStr(x);
end;
if m__Addr < 9 then
begin
m__Addr := m__Addr + 1;
ComPort.PutChar(chr(1));
ComPort.PutChar(chr(m__Addr));
end;
end;
end.
7 PIC Software
File Main.asm
;Version 1.0
;Programed By Andreas Gut
include init.asm
include RS232Com.asm
main
goto main
end
File MyDef.inc
; In diesem File Sollen alle für die verwendung benutzten Register definiert werden.
; Register definitionen
; DataSta Bits
read EQU H'0000'
; I/O Definitionen
bsf status,rp0
;Port A ->> Ra0, Ra1, Ra2, Ra3, Ra4, Ra5 Input
; ->> ---
Output
movlw B'11111111'
movwf trisa
;Port B ->> Rb0, Rb1, Rb2, Rb3, Rb4, Rb5, Rb6, Rb7 Input
; ->> ---
Output
movlw B'11111111'
movwf trisb
;Port C ->> Rb0, Rb1, Rb2, Rb3, Rb4, Rb5, Rb6, Rb7 Input
; ->> ---
Output
movlw B'11111000'
movwf trisc
;Port D ->> Rb3, Rb4, Rb5, Rb6, Rb7 Input
; ->> Rb0, Rb1, Rb2
Output
movlw B'11111111'
movwf trisd
;Port E ->> Rb0, Rb1, Rb2, Rb3, Rb4, Rb5, Rb6, Rb7 Input
; ->> ---
Output
movlw B'00000111'
movwf trise
;damit Port A und Port E als I/O Ports benutzt werden können.
movlw B'00000110'
movwf adcon1
bcf status,rp0
; RS232 Definitionen
bsf status,rp0
; Baudrate 9600 bei 4.000 MHz
movlw D'25'
movwf spbrg
; Hohe Baudraten aktivieren brgh = 1
; Transmit Aktivieren
clrf txsta
bsf txsta,brgh
bsf txsta,txen
; Recieve Interrupt aktivieren
clrf pie1
bsf pie1,rcie
bcf status,rp0
bsf intcon,peie
; serial Port global aktivieren
clrf rcsta
bsf rcsta,spen
bsf rcsta,cren
; interrupt flags löschen
bcf pir1,rcif
bcf pir1,txif
;Timer0
;interrupt aktivieren
;bcf status,rp0
;bsf intcon,t0ie
;bcf status,rp0
;Diverse Definitionen
bsf status,rp0
;Ra4 als Zählereingang
;prescaler auf wdt
;presacler 256
movlw B'00000011'
movwf option_reg
bcf status,rp0
;Programmspezifische Definitionen
clrf portd
clrf RXCnt
; Hauptprogramm Starten
goto main