Hallo H3IIGhost.

Ich habe das so Verstanden.
Die PWM Funktion im ASURO wird von dem Timer 1 des ATmega8 übernnommen. Er wird so Programmiert, dass an den H - Brücken eine Frequenz von ca zwei KHz anliegt. Durch die Werte in den beiden Registern OCR1AL bzw. OCR1BL wird der high Anteil einer Periode festgelegt. je höher dieser Wert 0 - 255 desto schneller fährt der ASURO.
Lese dazu auch die Beschreibung des PWM - Modus im Datenblatt des ATmega8. Und Versuche die Funktion der H - Brücken im ASURO zu Verstehen.
Ansonsten sieh dir mal dieses Programm an.

MfG
A.Hoffmann

Code:
.include "m8def.inc"

.def		temp		=	r16			; Arbeitsregister


.cseg

.org 0x000
		    rjmp	Prog_Initial		;	Interruptvektoren überspringen
			reti				  		;	INT0addr - Externer Interrupt 0
			reti						;	INT1addr - Externer Interrupt 1
			reti		  				;	OC2addr  - Output Compare2
			reti						;	OVF2addr - Overflow2
			reti						;	ICP1addr - Input Capture1
			reti						;	OC1Aaddr - Output Compare1A
			reti						;	OC1Baddr - Output Compare1B
			reti						;	OVF1addr - Overflow1
			reti						;	OVF0addr - Overflow0
			reti						;	SPIaddr  - SPI
			reti	    				;	URXCaddr - USART Receive Complete
			reti						;	UDREaddr - USART Data Register Empty
			reti						;	UTXCaddr - USART Transmit Complete
			reti						;	ADCCaddr - Analog Digital wandler
			reti						;	ERDYaddr - EEPROM 
			reti						;	ACIaddr  - Analog Comparator
			reti						;	TWIaddr  - Two - Wire Interface
			reti						;	SPMaddr  - SPM complete


Prog_Initial:

;******************************************************************************
;                               Stack Pointer setzen                          *
;******************************************************************************

			ldi		temp,	LOW(RAMEND)		; Stack Pointer low
			out		SPL,	temp			; setzen
			ldi		temp,	HIGH(RAMEND)	; Stack Pointer high
			out		SPH,	temp 			; setzen


;******************************************************************************			
;*       Init_Timer1 8 Bit PWM an den Output Compare Pins OC1A und OC1B       *
;******************************************************************************
					
  ; Compare Output Mode
  ; Clear OC1A / OC1B on Compare Match when up - counting. 
  ; Set OC1A / OC1B on Compare Match when downcounting
  ; Waveform Generation Mode
  ; PWM , Phase Correct, 8 Bit
  ; Prescaler Divisions Factor = 8
  ; PWM Frequenz = 1,953 Khz
 
 
			ldi		temp,	(1 << WGM10) | (1 << COM1A1) | (1 << COM1B1)
			out		TCCR1A,	temp
			ldi		temp,	(1 << CS11)
			out		TCCR1B,	temp


;******************************************************************************
;*                             Init_Motor_Rechts:                             *
;******************************************************************************

			sbi		DDRB,	DDB2		; PWM Ausgang
			sbi		DDRB,	DDB4		; Richtungs und 
			sbi		DDRB,	DDB5		; Funktions Steuerung
			sbi		PORTB,	PORTB4		; Motor im
			sbi		PORTB,	PORTB5		; Leerlauf
			ldi		temp,	0x00
			out		OCR1BH,	temp
			out		OCR1BL,	temp

;******************************************************************************
;*                            Init_Motor_Links:                               *
;******************************************************************************

			sbi		DDRB,	DDB1		; PWM Ausgang
			sbi		DDRD,	DDD4		; Richtungs und
			sbi		DDRD,	DDD5		; Funktions Steuerung
			sbi		PORTD,	PORTD4		; Motor im
			sbi		PORTD,	PORTD5		; Leerlauf
			ldi		temp,	0x00
			out		OCR1AH,	temp
			out		OCR1AL,	temp


;******************************************************************************
;*                           Init LEDs                                        *
;******************************************************************************

			sbi		DDRB,	DDB0		; Duo LED grün
			sbi		DDRD,	DDD2		; Duo LED rot
			cbi		PORTB,	PORTB0		; aus
			cbi		PORTD,	PORTD2		; schalten
			sbi		DDRD,	DDD6		; Front LED
			cbi		PORTD,	PORTD6		; aus
			sbi		DDRD,	DDD7		; Back LEDs
			cbi		PORTD,	PORTD7		
			sbi		DDRC,	DDC0
			sbi		DDRC,	DDC1
			cbi		PORTC,	PORTC1
			cbi		PORTC,	PORTC1		; ausschalten

;**********************  Interrupts erlauben   ******************************
			sei							
			


;****************   Ende Init  **********************************************	
				  						
Prog_Run:
			rcall	planlos
loop:
			rjmp	loop


;*****************************************************************************
;*                     planlos    herumfahren                                *
;*****************************************************************************

planlos:


			rcall	M_L_Leerlauf			; Motoren in
			rcall	M_R_Leerlauf			; Leerlauf schalten
			ldi		temp,150				; Wert für PWM 0 - 255
			out		OCR1AL,	temp			; für den linken Motor
			out		OCR1BL,	temp			; und für den rechten Motor
			rcall	M_L_Vorwaerts			; beide Motoren 
			rcall	M_R_Vorwaerts			; Vorwärts

;oder Rückwärts 			
			;rcall	M_L_Rueckwaerts
			;rcall	M_R_Rueckwaerts

;oder im Kreis
			;rcall	M_L_Rueckwaerts
			;rcall	M_R_Vorwaerts
			ret


;******************************************************************************
;*                      Motor rechts Rückwärts                                *
;******************************************************************************
M_R_Rueckwaerts:
			cbi		PORTB,	PORTB4		; PB4 = 0
			sbi		PORTB,	PORTB5		; PB5 = 1
			ret

;******************************************************************************
;*                      Motor rechts Vorwärts                                 *
;******************************************************************************
M_R_Vorwaerts:
			sbi		PORTB,	PORTB4		; PB4 = 1
			cbi		PORTB,	PORTB5		; PB5 = 0
			ret

;******************************************************************************
;*                      Motor rechts Leerlauf                                 *
;******************************************************************************
M_R_Leerlauf:
			sbi		PORTB,	PORTB4		; PB4 = 1
			sbi		PORTB,	PORTB5		; PB5 = 1
			ret

;******************************************************************************
;*                       Motor rechts Bremsen                                 *
;******************************************************************************
M_R_Bremsen:
			cbi		PORTB,	PORTB4		; PB4 = 0
			cbi		PORTB,	PORTB5		; PB5 = 0
			ret

;******************************************************************************
;*                       Motor links Rückwärts                                *
;******************************************************************************
M_L_Rueckwaerts:
			cbi		PORTD,	PORTD4		; PD4 = 0
			sbi		PORTD,	PORTD5		; PD5 = 1
			ret
			
;******************************************************************************
;*                       Motor links Vorwärts                                 *
;******************************************************************************
M_L_Vorwaerts:
			sbi		PORTD,	PORTD4		; PD4 = 1
			cbi		PORTD,	PORTD5		; PD5 = 0
			ret

;******************************************************************************
;*                        Motor links Leerlauf                                *
;******************************************************************************
M_L_Leerlauf:
			sbi		PORTD,	PORTD4		; PD4 = 1
			sbi		PORTD,	PORTD5		; PD5 = 1
			ret

;*****************************************************************************
;*                         Motor links Bremsen                               *
;*****************************************************************************
M_L_Bremsen:
			cbi		PORTD,	PORTD4		; PD4 = 0
			cbi		PORTD,	PORTD5		; PD5 = 0
			ret