PROGRAM 5
.nolist .include "usb1287def.inc" .list .cseg .org 0 ;GÓRA cbi DDRB, 7 ;ustawia bit 7 portu B na 0, czyli jest wejociem sbi PORTB, 7 ;podci1ganie sbi DDRD, 5 ;ustawia bit 5 portu D na 1, czyli jest wyjociem
cbi DDRE, 5 ;DÓL sbi PORTE, 5 sbi DDRD, 7
cbi DDRE, 4 ;PRAWO sbi PORTE, 4 sbi DDRD, 6
cbi DDRB, 6 ;LEWO sbi PORTB, 6 sbi DDRD, 4
start:
in r16, PINB ;bo joystick jest w porcie B sbrs r16, 6 ;sprawdza czy jest 0 czy 1, jeoli 0->zapal_gora, jeoli 1-> start rjmp zapal_gora cbi PORTD, 4
in r17, PINE sbrs r17, 5 rjmp zapal_dol cbi PORTD, 5
in r17, PINE sbrs r17, 4 rjmp zapal_prawo cbi PORTD, 6
in r16, PINB sbrs r16, 7 rjmp zapal_lewo cbi PORTD, 7
rjmp start
zapal_gora: ;prawa dolna czerwona dioda sbi PORTD, 4 ;ustawia bit 4 portu D na 1, czyli dioda sie pali rjmp start
zapal_dol: sbi PORTD, 5 ;lewa dolna zielona dioda rjmp start
zapal_prawo: sbi PORTD, 6 ;lewa górna zielona dioda rjmp start
zapal_lewo: sbi PORTD, 7 ;prawa górna czerwona rjmp start .exit
|
PROGRAM 6 .include "usb1287def.inc" .list .cseg .org 0
pocz: ldi r16, 0 ldi r17, 0xFF
out DDRD, r17 ;out - wysylanie informacji - programowanie na wejscie (0) out DDRB, r16 ;programowanie na wyjscie out PORTB, r17 ;PORT - informacja wyjsciowa
ldi r18,0b00001111 ;komunikat1, gdywcisniete klawisze 0-3 ldi r19,0b11110000 ;komunikat2, gdy wcisniete klawisze 4-7 ldi r20,0b10011001 ;komunikat3, gdy oba klawisze wcisniete
poczatek:
out PORTD, r16 ;PORT - informacja wyjsciowa in r22,PINB ;zapisuje stan portu w rejestrze r22 and r22,r18 ;iloczyn logiczny rejestrów cp r22,r16 ;porownuje zawartosc r22 brne czy_obie ;jeśli jest 0 to skacze
in r22,PINB and r22,r18 cp r22,r16 brne druga
out PORTD, r16 ; nic nie wyswietli (w r16 jest 0) jmp poczatek
czy_obie: in r22, PINB and r22, r19 cp r22, r16 brne obie ;przeskoczy do "obie", jeoli oba przyciski wcisniete
out PORTD, r18 ;wyswietli komunikat1 jmp poczatek
druga: out PORTD, r19 ;wyswietli komunikat 2 jmp poczatek
obie: out PORTD, r20 ;wyswietli komunikat3 jmp poczatek .exit
|
PROGRAM 2C
.nolist include "usb1287def.inc" .list .equ adres_pocz=0x02FB .cseg .org 0 jmp pocz .org 0x46
pocz:ldi r16,1 ldi xh,high (adres_pocz) ldi xl,low (adres_pocz) ldi r18,1
nast: st x+,r16 add r16,r18 cpi r16,13 brbc 1,nast st x,r16
koniec: jmp koniec
|
.PROGRAM 3
.nolist .include "usb1287def.inc" .list .cseg;rozpoczynamy program .org 0 ;program rozpoczyna się od 0 .set DANA = 0x0F .set ADRES = 0x0155
ldi r16, 0x00 ;wpisanie do r16 wartości 0 ldi r17, 0x01 ;wpisanie do rejestru r17 wartości 1 ldi r18, 0x08 ;wpisaie do r18 wartości 8 (zmienna do pętli) ldi XH, HIGH(ADRES) ldi XL, LOW(ADRES) ldi r19, DANA ;wpisanie do r19 wartości DANA st X, r19 ;przepisanie zawartości r19 do rejestru X
inc XL ;zwiększenie X brne skok inc XH skok:
start:
sbrc r19,0 ;sprawdzanie ostatniego bitu, przeskocz, jeśli bit=0 (flaga Z) st X+, r17 ;przepisanie zawartości r17 z postinkrementacją X sbrs r19,0 ;przeskocz, jeśli bit jest ustawiony st X+,r16 ;przepisanie zawartości r16 z postinkrementacją X ror r19 ;przesunięcie bitów w prawo dec r18 ;zmniejszenie licznika brne start
koniec:
rjmp koniec .exit
|
PROGRAM 7
.include "usb1287def.inc" .cseg .equ adr_c=0x300 ;adres w pamieci programu, gdzie umieszczamy tabele .equ adr_d=0x400 ;adres w pamieci danych zapisu nowej tabeli .equ poczatkowa=2 .equ koncowa=5 .org adr_c .db 1,2,3,4,5,6,7,0xFF ;define byte wpisuje do pamieci programu bajty .org 0 ldi zL, low(adr_c*2) ldi zH, high(adr_c*2) ldi xL, low(adr_d) ldi xH, high(adr_d) ;ldi r20,0xFF
start: lpm r16, z+ ;zaladuj z pamieci programu cpi r16,poczatkowa ;zapala flage C gdy poczatkowa>r16 brbs 0,start cpi r16,koncowa brbc 0,ostatnia st x+, r16 rjmp start ostatnia: st x+,r16 ;st x,r20 koniec: rjmp koniec .exit
|