Der Generator erstellt eientlich schon ein Program das die nötigen Funktionen enhält.
Mit dem Zähler war einfach ein Byte im RAM gemeint.
Dieses decrementierst du in jedem Timerinterupt. Ist es 0 kannst du deine
Funktion ausführen.
Sieht dann etwa so aus:
Enstellung des Codegenerators:Code:; Autor : unknown ; Projekt : Test ; Datum : Thu Oct 27 2005 18:17:29 GMT+0200 (CEST) ; Quarz : 40.000 MHz ; Assembler: ASEM-51 ; Generator: CodeGen Stable Version 1.1, Erik Buchmann '04 ;--------------------------------------------------------------- $NOLIST $NOMOD51 $INCLUDE (89c1051.mcu) USING 0 $LIST ; Konstanten-, Speicher- und Portbelegung ;--------------------------------------------------------------- timer0_ext24 DATA 08h TL0PRE EQU 219 TH0PRE EQU 11 TX0PRE EQU 16 ; Programmbeginn ;--------------------------------------------------------------- ORG 0h jmp start ; Interruptroutinen ;--------------------------------------------------------------- ORG 0Bh jmp timer0_int ; Funktionen ;--------------------------------------------------------------- ; Interruptbehandlungsroutine Timer 0 timer0_int: mov TL0, #TL0PRE mov TH0, #TH0PRE djnz timer0_ext24,timer0_int_label mov timer0_ext24,#TX0PRE acall timer0_int_label ;wird alle 3s ausgeführt cpl ausgansbit ret timer0_int_label: reti ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; Initialisierung ;--------------------------------------------------------------- start: ; Timer 0 aktivieren ; Intervall: 300.0 ms ; Software-Kontrolle mov TL0, #TL0PRE mov TH0, #TH0PRE mov timer0_ext24,#TX0PRE ; die SFR's initialisieren mov SP, #20h mov TMOD,#1 mov TCON,#16 mov IE, #130 ; Hauptprogramm ;--------------------------------------------------------------- main: ; [...] ; Programmende ;--------------------------------------------------------------- ende: jmp ende END
Frequenz 40MHz
Timer0 aktiviert
Intervalldauer: 300.0 ms







Zitieren

Lesezeichen