; === PROJEKT MNOZENIE ARYTMETYCZNE 1 === ; = liczby calkowite ze znakiem z testowaniem flag Z i C = .include "m32def.inc" .org 0x0000 I_O: ; konfiguracja portow I/O ser R16 ; laduj do rejestru R16 wartosc FF (wartości 1111_1111) out DDRA, R16 ; port A ustawiony w tryb wyjsciowy Zmienne: ldi R16, 200 ; laduj do rejestru R16 zmienna 200 ldi R17, -10 ; laduj do rejestru R17 zmienna -10 Start: mulsu R17, R16 ; pomnoz wartosci R17 ze znakiem (s –sign) przez R16 bez ; znaku (u-unsign), wynik bedzie umieszczony w parze rejestrow R1 i R0, nop ; znacznik Z bedzie ustawiony jezeli wynik operacji daje wartosc rowna 0, ; znacznik C bedzie ustawiony, jezeli bit nr 15 w parze R1:R0 jest ustawiony, in R5, SREG out PORTA, R5 rjmp Start ; = KONIEC = ; === PROJEKT MNOZENIE ULAMKOW 1 === ; = ze znakiem razy bez znaku (mnozenie mieszane) = .include "m32def.inc" .org 0x0000 I_O: ; konfiguracja portow I/O ser R20 out DDRA, R20 ; port A ustawiony w tryb wyjsciowy Zmienne: ; etykieta poczatku programu glownego ldi R16, q7(-0.125) ; laduj do rejestru R16 ulamek ze znakiem ldi R17, q7(0.5) ; laduj do rejestru R17 ulamek bez znaku Start: fmulsu R16, R17 ; pomnoz zmienna R16 ze znakiem minus (s) przez R17 bez znaku (u), wynik w parze rejestrów R1 i R0 ; znacznik C informuje o wyniku mnozenia nop ; aby odczytac zmienna nalezy zsumowac wagi bitow ktore po operacji zostaly ustawione ,np.: ; -1+0,5+0,25+0,125+0,0625= - 0,0625 in R10, SREG out PORTA, R10 rjmp Start ; = KONIEC = ; == PROJEKT MNOZENIE I DZIELENIE LOGICZNE 1 == .include "m32def.inc" .org 0x0000 I_O: ; konfiguracja portow I/O ser R24 out DDRA, R24 ; port A ustawiony w tryb wyjsciowy Zmienne: ldi R19, 50 ; laduj rejestr R19 zmienna 50 Start: ; etykieta poczatku programu glownego lsl R19 ; logiczne przesuwanie w lewo (mnozenie zawartosci rejestru R19 razy 2) out PORTA, R19 nop rjmp Start ; praca uC w petli nieskonczonej ; = KONIEC = ; == PROJEKT MNOZENIE I DZIELENIE LOGICZNE 2 == ; PD0 = przewod zolty czujnik ODBICIOWY OPTYCZNY IR TCRT5000, ; w ktorym nadajnikiem jest dioda IR a odbiornikiem fototranzystor (True = 1) ; VCC = przewod czerwony z ODBICIOWY w ZASILANIE VCC + ; GND = przewod brazowy z ODBICIOWY w ZASILANIE GND - ; DIODY URUCHAMIANE PRZEZ PORT A .include "m32def.inc" ; plik nagłówkowy .org 0x0000 I_O: ; konfiguracja portów I/O ser R25 out DDRA, R25 ; port A ustawiony w tryb wyjściowy ;ldi R25, 0b1111_1110 ;out PORTD, R25 ; w port D na pinie PD0 otwarte wejście ;START: ; procedura testowania czujnika ;in R5, PIND ;nop ;bst R5, PIND0 ;brts START ldi R21, 1 ; ładuj do rejestru R21 wartość 1 sec ; ustaw flage C FLOAT: ; etykieta początku programu głównego rol R21 ; logiczne przesuwanie w lewo w celu pomnożenia wartości rejestru R21 razy 2 out PORTA, R21 nop rjmp FLOAT ; praca uC w pętli ; = KONIEC = Delay: ldi R23, 0x05 Petla_A: ldi R24, 0x03 Petla_B: ldi R25, 0x02 Petla_C: dec R25 brne Petla_C dec R24 brne Petla_B dec R23 brne Petla_A nop