.include "m8535def.inc" .dseg ;configurare intreruperi si timere .def contor1=R23 .def contor2=R24 .def contgen=R26 .def contor3=R17 .def contor4=R18 .def contor5=R20 .def contor6=R21 .cseg .org 0x000 rjmp initializari .org 0x100 initializari: ldi r16, high(ramend) out sph, r16 ldi r16, low(ramend) out spl, r16 ;incarcam in memoria de date cifrele, codificate conform display-ului ;primul caracter ldi r19,0b01110111 sts 0x60,r19 ;cifra0/litera O ldi r19,0b00010001 sts 0x61,r19 ;cifra1 ldi r19,0b01101101 sts 0x62,r19 ;cifra2 ldi r19,0b01011101 sts 0x63,r19 ;cifra3 ldi r19,0b00011011 sts 0x64,r19 ;cifra4 ldi r19,0b01011110 sts 0x65,r19 ;cifra5 ldi r19,0b01111110 sts 0x66,r19 ;cifra6 ldi r19,0b00010101 sts 0x67,r19 ;cifra7 ldi r19,0b01111111 sts 0x68,r19 ;cifra8 ldi r19,0b01011111 sts 0x69,r19 ;cifra9 ;al doilea caracter ldi r19,0b01110111 sts 0x6A,r19 ;cifra0/litera O ldi r19,0b00010001 sts 0x6B,r19 ;cifra1 ldi r19,0b01101101 sts 0x6C,r19 ;cifra2 ldi r19,0b01011101 sts 0x6D,r19 ;cifra3 ldi r19,0b00011011 sts 0x6E,r19 ;cifra4 ldi r19,0b01011110 sts 0x6F,r19 ;cifra5 ldi r19,0b01111110 sts 0x70,r19 ;cifra6 ldi r19,0b00010101 sts 0x71,r19 ;cifra7 ldi r19,0b01111111 sts 0x72,r19 ;cifra8 ldi r19,0b01011111 sts 0x73,r19 ;cifra9 ;;;;;;;;initializarea porturilor ldi r19,0xFF out ddrb,r19 out ddrd,r19 out DDRC,R19 out DDRA,R19 ldi r19,0x00 out portd,r19 out PORTC,R19 out PORTA,R19 ldi r19,0xFF out portb,r19 ldi contor1,0x00 ldi contor2,0x00 ldi contor3,0x00 ldi contor4,0x00 ldi contor5,0x00 ldi contor6,0x00 ldi contgen,0x00 afisare: rcall cifra2 rcall cifra1 rcall cifra3 rcall cifra4 rcall cifra5 rcall cifra6 inc contgen rcall resetare_contgen rjmp afisare cifra1: sbi PORTB,4 cbi PORTB,5 ldi R28, 0x60 add R28,contor1 ld R19,Y out PORTD,R19 rcall delay cpi contgen,39 brge crestere1 ret crestere1: cpi contor1,9 brge resetare1 inc contor1 ret resetare1: ldi contor1,0x00 ret cifra2: sbi PORTB,5 cbi PORTB,4 ldi R28,0x60 add R28,contor2 ld R19,Y out PORTD,R19 rcall delay cpi contgen,39 brge crestere2 ret crestere2: cpi contor1,9 brge recalculare2 cpi contor2,6 brge resetare2 ret recalculare2: inc contor2 ret resetare2: ldi contor2,0x00 ret cifra3: cbi PORTB,3 sbi PORTB,2 ldi R28,0x60 add R28,contor3 ld R19,Y out PORTC,R19 rcall delay cpi contgen,39 brge crestere3 ret crestere3: cpi contor2,6 brge comparare3 cpi contor3,10 brge resetare3 ret comparare3: cpi contor1,0 brge recalculare3 ret resetare3: ldi contor3,0x00 ret recalculare3: inc contor3 ret cifra4: cbi PORTB,2 sbi PORTB,3 ldi R28,0x60 add R28,contor4 ld R19,Y out PORTC,R19 rcall delay cpi contgen, 39 brge crestere4 ret crestere4: cpi contor3,10 brge recalculare4 cpi contor4,6 brge resetare4 ret recalculare4: inc contor4 ret resetare4: ldi contor4,0x00 ret cifra5: cbi PORTB,1 sbi PORTB,0 ldi R28,0x60 add R28,contor5 ld R19,Y out PORTA,R19 rcall delay cpi contgen,39 brge crestere5 ret crestere5: cpi contor4,6 brge comparare5 cpi contor5,10 brge resetare5 ret comparare5: cpi contor3,9 brge comparare51 ret comparare51: cpi contor2,6 brge recalculare5 ret recalculare5: inc contor5 ret resetare5: ldi contor5,0x00 ret cifra6: cbi PORTB,0 sbi PORTB,1 ldi R28,0x60 add R28,contor6 ld R19,Y out PORTA,R19 rcall delay cpi contgen,39 brge crestere6 ret crestere6: cpi contor6,3 brge resetare6 cpi contor6,2 brge crestere6b cpi contor5,10 brge comparare61 cpi contor6,3 brge resetare6 ret crestere6b: cpi contor5,4 brge comparare61 ret comparare61: cpi contor4,5 brge comparare62 ret comparare62: cpi contor3,9 brge comparare63 ret comparare63: cpi contor2,6 brge recalculare6 ret resetare6: ldi contor6,0x00 ldi contor5,0x00 ret recalculare6: inc contor6 ret resetare_contgen: cpi contgen,40 brge res ret res: ldi contgen,0x00 ret delay: ldi R25 ,0x40 WGLOOP0: ldi R30, $0A WGLOOP1: ldi R31, $1 WGLOOP2: dec R31 brne WGLOOP2 dec R30 brne WGLOOP1 dec R25 brne WGLOOP0 ; ----------------------------- ;delaying 3 cycles: ; ldi R29, $01 WGLOOP3: dec R25 ; brne WGLOOP3 ; ============================= ret