Code:
Rc:
!PUSH R16
!in R16 , Sreg
!push r24
!push r25
!PUSH R16
!LDS R16, {Kanal}
!INC R16 'Kanal um 1 erhöhen
!STS {Kanal}, R16
cbi portd,4 'Alle Ports=0
cbi portB,6
cbi portB,7
cbi portD,5
cbi portD,6
cbi portD,7
cbi portB,0
cpi r16,1
Brne K2 ' wenn ungleich 1 -> weiterspringen
Sbi portd,4 'Ansonsten-> Port einschalten ,Timer mit Kanalwert vorladen
LDS R24, {k1} 'holen Byte 1 (bits 0-7)
LDS R25, {k1+1} 'holen Byte 2 (bits 8-15)
!Out Tcnt1H , R25
!Out Tcnt1l , R24
K2:
cpi r16,2
Brne K3 ' wenn ungleich 2 -> weiterspringen
Sbi portB,6 'Ansonsten-> Port einschalten ,Timer mit Kanalwert vorladen
LDS R24, {k2} 'holen Byte 1 (bits 0-7)
LDS R25, {k2+1} 'holen Byte 2 (bits 8-15)
!Out Tcnt1H , R25
!Out Tcnt1l , R24
K3:
cpi r16,3
Brne K4
Sbi portB,7
LDS R24, {k3} 'holen Byte 1 (bits 0-7)
LDS R25, {k3+1} 'holen Byte 2 (bits 8-15)
!Out Tcnt1H , R25
!Out Tcnt1l , R24
K4:
cpi r16,4
Brne K5
Sbi portd,5
LDS R24, {k4} 'holen Byte 1 (bits 0-7)
LDS R25, {k4+1} 'holen Byte 2 (bits 8-15)
!Out Tcnt1H , R25
!Out Tcnt1l , R24
K5:
cpi r16,5
Brne K6
Sbi portd,6
LDS R24, {k5} 'holen Byte 1 (bits 0-7)
LDS R25, {k5+1} 'holen Byte 2 (bits 8-15)
!Out Tcnt1H , R25
!Out Tcnt1l , R24
K6:
cpi r16,6
Brne Pause
Sbi portb,0
LDS R24, {k6} 'holen Byte 1 (bits 0-7)
LDS R25, {k6+1} 'holen Byte 2 (bits 8-15)
!Out Tcnt1H , R25
!Out Tcnt1l , R24
Pause:
cpi r16,7
Brne Ende ' wenn ungleich 7 -> weiterspringen
LDS R24, {Pause} 'holen Byte 1 (bits 0-7)
LDS R25, {Pause+1} 'holen Byte 2 (bits 8-15)
!Out Tcnt1H , R25
!Out Tcnt1l , R24
!LDI R16, 0 'Kanal=0
!STS {Kanal}, R16
Ende:
pop r24
pop r25
pop r16
!out sreg,r16
pop r16
Return
Lesezeichen