Du kannst mit dem Programm ja Sekunden zählen und in der Routine die Sekunden bis 60 hochzählen lassen. Bis 60 Erreicht ist dann die LED leuchten lassen.
Nach 60 Sekunden halt ausschalten.
Du kannst ja durch erneutes drücken des Tasters die Sekunden wieder auf 0 setzen.
Jetzt einen Code zu geben (der auch für alle anderen passt, die sowas in der Art machen wollen) ist schwer, ohne zu wissen, was das Programm evtl sonst noch können soll.


$regfile = "m16def.dat"
$crystal = 3686400

Config Timer1 = Timer, Prescale = 64

Config Pinc.2 = Output
Led3 Alias Portc.2

On Timer1 Timer_irq

Const Timervorgabe = 7936

Dim Sekunden as Byte

Enable Timer1
Enable Interrupts

Do
If Sekunden <60 then Set LED3
Reset LED3
Loop


Timer_irq:
Timer1 = Timervorgabe
Incr Sekunden
Return

Das Programm sollte bei 3,86MHz wie du sie auch hattest nach dem Start eine Minute die LED leuchten lassen.

If PIND.2 = 0 Then Enable Timer1

würde den Timer erst starten wenn der Taster gedrückt wurde. Allerdings musst du die Zeile vorher im Code wo er schon gestartet wird entfernen.

Soviel muss als Hilfestellung reichen. Mehr geht nur wenn man genau weiss, was das Programm machen soll. Der Taster wird ja auchnicht dauerhaft abgefragt wenn das Programm größer ist. Evtl ist ein Interrupt notwendig. Aber ohne es genau zu wissen muss dir das zum üben erstmal reichen.