Versuch : Diese kontroll-test-versuchs-ausprobier-programm
macht nix, außer ein Lauflicht auf den LEDS (DIP-Schalter S1 auf ON stellen, daß sie leuchten können ) wandern lassen.
2 DO..LOOP schleifen:
Erst OHNE TImer mit wait
Dann Mit TIMER (ersten do.loop kommentieren)
(Man sieht, ob der Sekundentakt in etwa stimmt)Code:'========================================================================================= ' FRONT LIGHT ADJUSTMENT PROJECT (FLAP) ' Test LED '========================================================================================= $regfile = "m32def.dat" $hwstack = 128 $crystal = 16000000 'Quarzfrequenz Joggele Const Tmr_c_preload = 6 Const Srv_c_shft = 4 $baud = 9600 'Baudrate für RS232 Config Timer0 = Timer , Prescale = 64 'Timer 1mS On Timer0 Interrupt_ticker , Nosave ' Timer for Timer Queue Dim Irptflag As Byte ' Timer Interrupt occurred Dim Second_count As Word ' one second timer Const Second_c_count = 1000 ' one sec Dim Lauflicht As Byte ' Timer Interrupt occurred Ddrc = &B11111111 Portc = 0 Enable Timer0 Start Timer0 ' timer starten Enable Interrupts 'General enable Lauflicht = 1 '------------------------------------------------------------------------- ' TEST OHNE TIMER '------------------------------------------------------------------------- Do $asm lds r24, {LaufLicht} clc sbrc r24, 7 sec rol r24 sts {LaufLicht}, r24 com r24 !OUT portc, r24 $end Asm Waitms 1000 Loop '------------------------------------------------------------------------- ' TEST MIT TIMER '------------------------------------------------------------------------- Do If Irptflag = 1 Then Irptflag = 0 ' 1 mS Event Decr Second_count If Second_count = 0 Then Second_count = Second_c_count $asm lds r24, {LaufLicht} clc sbrc r24, 7 sec rol r24 sts {LaufLicht}, r24 !OUT portc, r24 $end Asm End If End If Loop End '============================================================================== ' Timer 0 interrupt '============================================================================== Interrupt_ticker: $asm PUSH r22 PUSH r23 PUSH r24 PUSH r25 PUSH XL PUSH XH PUSH ZL PUSH ZH IN r24,SREG PUSH r24 LDI r24,Tmr_c_preload 'reset precounter !Out Tcnt0 , R24 LDI r24,1 'set blocker sts {Irptflag}, r24 POP r24 !OUT SREG,r24 POP ZH POP ZL POP XH POP XL POP r25 POP r24 POP r23 POP r22 $end Asm Return







Zitieren

Lesezeichen