Include 'M64DEF.INC'
ORG 0X0000
JMP main
ORG 0X0002
JMP EXT_INT0_ISR
ORG 0X0050

main:
LDI R20,low(RAMEND)
OUT SPL,R20
LDI R20,high(RAMEND)
OUT SPH,R20
LDI R20,0X02
OUT EICRA,R20 
LDI R20,0X01
OUT EIMSK, R20
LDI R20,0X00
OUT DDRA,R20
OUT DDRB,R20
LDI R26,0X00
LDI R27,0X20
LDI R22,0X00  ;بار اول مقدار خوانده شده از پورت  B با صفر مقایسه می‌شود
LDI R24,0X00  ; شمردن تعداد دفعات خواندن پورت B
LDI R16,0X00
SEI

main_loop:
IN R21,PINB
INC R24
CP R22,R21
BREQ EQUAL
MOV R22,R21
JMP main_loop

EQUAL:
CPI R24,1 ;  اگر مقدار پورت  بار اول برابر 0 باشد برنامه به حلقه اصلی ارجاع داده می‌شود
BREQ main_loop
ST X+,R22
JMP main_loop

EXT_INT0_ISR:
IN R23,PINA
CPI R23,14
BREQ IS_14
RETI

IS_14:
INC R16
RETI