Diskuse:Hlavní strana

Z MAM wiki

Přejít na: navigace, hledání

[editovat] klavesnice

[editovat]

 .EQU DDRB = $17		; DDRB address
	.EQU PORTB = $18	; PORTB address
	.EQU PINB = $16
	
	.EQU DDRD = $11		; DDRD address
	.EQU PIND = $10	    ; PORTB address
	.EQU PORTD = $12	; PORTB address

    .EQU LED_X = 4		; LED_X is on PB0, pin 12 of ATtiny2313
	.EQU LED_Y = 6


; klávesa 7 a 6

    SBI DDRD,2
	SBI PORTB,4 ;enables pull-up rezistor on this pin
	
	SBIS	PINB,4
	

    SBI DDRD,1
	SBI PORTB,6
	
	SBIS PINB,6

SMALLWAIT:
	INC	R1				; INC - Increment
	BRNE	SMALLWAIT	; BRNE - Branch if Not Equal (Z flag) 
	RET					; RET - Return from Subroutine


WAIT:
	LDI	R16, 4	

GO:
	RCALL   COLOR1
	RCALL	WAIT
	SBIS	PINB, 4
	RCALL	COLOR2
	RCALL	WAIT
	RJMP	GO


COLOR1:
    SBI	PORTB, LED_X
	CBI	PORTB, LED_Y	; CBI - Clear Bit in I/O Register
	RET

COLOR2:
    SBI	PORTB, LED_Y
	CBI	PORTB, LED_X
	RET

DARK:
    CBI	PORTB, LED_X
	CBI	PORTB, LED_Y
	RET

[editovat]


.nolist
.include "2313def.inc"
.list

;portD - sloupce
.equ col1 = 0
.equ col2 = 1
.equ col3 = 2
.equ col4 = 3	
;portB - radky
.equ row1 = 0
.equ row2 = 1
.equ row3 = 2
.equ row4 = 3
;LEDky portB
.EQU LED_X = 6		; LED_X is on PB6
.EQU LED_Y = 7		; LED_Y is on PB7
;pomocne
.def Temp = R16


;instrukce ser a clr nemuzou pracovat primo s porty
;proto je treba porty nastavovat pomoci registru Temp (R16)
clr	Temp		;vynulovat
out	DDRB, Temp  ;vstupy
sbi	DDRB, LED_X	;vystup
sbi	DDRB, LED_Y	;vystup
out DDRD, Temp	;vstupy
out	PORTB, Temp	;na PORTB nastav nuly (pokud je vystup)
ser Temp		;nastavit
out PORTD, Temp	;pull-upy na PORTD

loop:
Test1radek:
cbi		DDRB, row4	;vstup na PORTB, 3
sbi	 	DDRB, row1	;vystup na PORTB, 0
sbis 	PIND, col1 ;je stlaceno 1.tlacitko v 1.radku?
rcall	Tlac1 ;ano, zavolej rutinu pro osetreni funkce tlacitka 1
sbis	PIND, col2 ;ne, testuj dalsi tlacitko...
rcall	Tlac2 ;etc etc etc...
sbis 	PIND, col3
rcall	Tlac3
sbis	PIND, col4
rcall	TlacA
Test2radek:
cbi	 	DDRB, row1	;vstup na PORTB, 0
sbi	 	DDRB, row2	;vystup na PORTB, 1
sbis 	PIND, col1
rcall	Tlac4
sbis	PIND, col2
rcall	Tlac5
sbis 	PIND, col3
rcall	Tlac6
sbis	PIND, col4
rcall	TlacB
Test3radek:
cbi	 	DDRB, row2	;vstup na PORTB, 1
sbi	 	DDRB, row3	;vystup na PORTB, 2
sbis 	PIND, col1
rcall	Tlac7
sbis	PIND, col2
rcall	Tlac8
sbis 	PIND, col3
rcall	Tlac9
sbis	PIND, col4
rcall	TlacC
Test4radek:
cbi	 	DDRB, row3	;vstup na PORTB, 2
sbi	 	DDRB, row4	;vystup na PORTB, 3
sbis 	PIND, col1
rcall	TlacHvezd
sbis	PIND, col2
rcall	Tlac0
sbis 	PIND, col3
rcall	TlacKriz
sbis	PIND, col4
rcall	TlacD
rjmp 	loop

Tlac1:
;co se bude delat pro tlac1
;rozsviti se prvni barva LED
sbi	PORTB, LED_Y
cbi	PORTB, LED_X
ret

Tlac2:
;co se bude delat pro tlac2
ret

Tlac3:
;co se bude delat pro tlac3
ret

TlacA:
;co se bude delat pro tlacA
ret

Tlac4:
;co se bude delat pro tlac4
ret

Tlac5:
;co se bude delat pro tlac5
;rosviti se druha barva LED
cbi	PORTB, LED_Y
sbi	PORTB, LED_X
ret

Tlac6:
;co se bude delat pro tlac6
ret

TlacB:
;co se bude delat pro tlacB
ret

Tlac7:
;co se bude delat pro tlac7
ret

Tlac8:
;co se bude delat pro tlac8
ret

Tlac9:
;co se bude delat pro tlac9
;zhasnou se obe LED
cbi	PORTB, LED_Y
cbi	PORTB, LED_X
ret

TlacC:
;co se bude delat pro tlacC
ret

TlacHvezd:
;co se bude delat pro tlacHvezd
ret

Tlac0:
;co se bude delat pro tlac0
ret

TlacKriz:
;co se bude delat pro tlacKriz
ret

TlacD:
;co se bude delat pro tlacD
ret 

Osobní nástroje