;Instelling poorten INIT: ldi temp3, $00 ;Poort B wordt Input out DDRB, Temp3 ldi temp3, $ff ;activeer pull ups out PORTB, temp3 ldi temp3, $7d ;Poort D Wordt output 0111 1101 out DDRD, Temp3 ;Input van klavieren matrix en registerschakelaars INPUT: clr xh ;Clear X high byte ldi xl,Keynew ;Set X low byte to $60 ;Input matrix1 ldi Temp3, $02 ;Adres voor poort D zonder bit 1 RCall Fetch ;PD6 wordt steeds laag gemaakt tijdens de leesopdracht ldi Temp3, $03 RCall Fetch ldi Temp3, $06 RCall Fetch ldi Temp3, $07 RCall Fetch ldi Temp3, $0A RCall Fetch ldi Temp3, $0B RCall Fetch ldi Temp3, $0E RCall Fetch ldi Temp3, $0F RCall Fetch ;Input matrix2 ldi Temp3, $12 ;Adres voor poort D zonder bit 1 RCall Fetch ;PD6 wordt steeds laag gemaakt tijdens de leesopdracht ldi Temp3, $13 RCall Fetch ldi Temp3, $16 RCall Fetch ldi Temp3, $17 RCall Fetch ldi Temp3, $1A RCall Fetch ldi Temp3, $1B RCall Fetch ldi Temp3, $1E RCall Fetch ldi Temp3, $1F RCall Fetch ;Input matrix3 ldi Temp3, $22 ;Adres voor poort D zonder bit 1 RCall Fetch ;PD6 wordt steeds laag gemaakt tijdens de leesopdracht ldi Temp3, $23 RCall Fetch ldi Temp3, $26 RCall Fetch ldi Temp3, $27 RCall Fetch ldi Temp3, $2A RCall Fetch ldi Temp3, $2B RCall Fetch ldi Temp3, $2E RCall Fetch ldi Temp3, $2F RCall Fetch nop nop ;Input matrix4 ldi Temp3, $32 ;Adres voor poort D zonder bit 1 RCall Fetch ;PD6 wordt steeds laag gemaakt tijdens de leesopdracht ldi Temp3, $33 RCall Fetch ldi Temp3, $36 RCall Fetch ldi Temp3, $37 RCall Fetch ldi Temp3, $3A RCall Fetch ldi Temp3, $3B RCall Fetch ldi Temp3, $3E RCall Fetch ldi Temp3, $3F RCall Fetch ret FETCH: out PORTD,Temp3 ;Adressering van 74HCT139 loopt via poort D rcall delay ;Extra pauze om enerzijds de data goed te lezen en anderzijds ;de dender van de mechanische contacten tegen te gaan. Deze ;delay is wel van belang. Als je de delay ;weglaat worden andere toetsen aanslagen spontaan opgewekt in temp1,PINB com temp1 ;inverteer temp1 st X+,temp1 ret