logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Licznik ma liczyć towary od 1 do 9, wyświetlacz, dsm'51.

asasello88 01 Kwi 2008 13:26 1493 1
  • #1 4980338
    asasello88
    Poziom 10  
    Posty: 21
    Ocena: 1
    Siemka :D:D Moze ktos mi pomóc mam zrobiony program który ma liczyc towary po jego odpaleniu na wyswietlaczu lcd jest napis wybierz liczbe towarow wybieramy od 1-9 i nastepnie po odliczeniu (za pomoca dolaczonej do dsm'51 przystawki ) ma pojawic sie napis max na wyswietlaczu lcd max i wlacza sie brzeczek i po wcisnieciu klawisza program zaczyna sie od nowa
    w kompilatorze jagoda wyskakuja dwa bledy co do wczytania programu ;/
    w instrukcjach ORG 13H i ORG 0100H ale po ich zmianie lub usunieciu jest ok ale na dsm dziala do momentu wcisniecia klawisza potem pokazuje sie na wyswietlaczu lcd odliczanie ale niestety nie odlicza ;/ prosze pomozcie bo jestem w klasie maturalnej i obleje mnie jak mu nie zrobie ;/


    kod porgramu:
    LJMP	START1
    	ORG	100H
    START1:
    
    	MOV	R0,#LCDWC	
    	MOV	R1,#LCDRC	
    
    	MOV	A,#1		
    	LCALL	WRITE1
    
    	MOV	A,#0FH		
    	LCALL	WRITE1		
    
    	INC	R0		
    	MOV	DPTR,#TEXT1	
    
    WRITE_TXT1:
    	CLR	A		
    	MOVC	A,@A+DPTR	
    	JZ	TEXT_END	
    
    	ACALL	WRITE1		
    	INC	DPTR		
    				
    	SJMP	WRITE_TXT1	
    
    TEXT_END:
    	DEC	R0		
    
    				
    	MOV	A,#1
    	LCALL	DELAY_100MS	
    	
    	MOV	A,#18H		
    	LCALL	WRITE1	
    	
    	LCALL 	WAIT_KEY
    	MOV R4,A
    	LJMP	ODLICZANIE
    	
    
    
    WRITE1:
    	MOV	R2,A		
    BUSY1:
    	MOVX	A,@R1		
    	JB	ACC.7,BUSY1	
    	MOV	A,R2		
    	MOVX	@R0,A		
    	RET
    
    
    
    TEXT1:
    	DB	'"WYBIERZ'
    	DB	' ILOSC                          '
    	DB	' PRODUKTOW'
    	DB	' 1-9',0
    		
    					
    
    
    
    
    
    
    
    
    ODLICZANIE:
    
    	B0R3	EQU	3	
    	INT55	EQU	P1.1	
    	SET_8255	EQU	10010011B
    
    LJMP	START
    	ORG	13H
    	MOV	40h,#5
    	PUSH	ACC		
    	PUSH	PSW		
    
    	MOV	R1,#CSIC	
    	MOVX	A,@R1		
    	ANL	A,#03H
    	MOVX	@R1,A		
    
    	CJNE	A,#3,INT_NO3	
    
    
    	INC	R7		
    	MOV	A,R7
    	JB	ACC.0,T1_KIER_OK
    	INC	R5		
    				
    	SJMP	OBIEKT
    T1_KIER_OK:			
    	INC	R6		
    	SJMP	OBIEKT
    
    INT_NO3:
    	CJNE	A,#2,INT_END	
    
    ;przerwanie IPA - TOR 2
    	INC	R7		
    	MOV	A,R7
    	JNB	ACC.0,T2_KIER_OK
    	INC	R5		
    				
    	SJMP	OBIEKT
    T2_KIER_OK:			
    	INC	R6		
    
    OBIEKT:
    	MOV	R1,#CS55C	
    	MOVX	A,@R1
    	ANL	A,#0FH		
    	CJNE	A,#6,INT_END	
    	CJNE	R7,#4,INT_ERROR	
    	CJNE	R6,#4,OK_NO	
    	INC	R2		
    OK_NO:
    	CJNE	R5,#4,INT_ERROR	
    	DEC	R2		
    
    INT_ERROR:
    	MOV	R7,#0		
    	MOV	R6,#0
    	MOV	R5,#0
    
    INT_END:
    	POP	PSW		
    	POP	ACC
    	RETI	
    	ORG	0100H
    START:
    	MOV	R1,#CS55D	
    	MOV	A,#SET_8255
    	MOVX	@R1,A
    	DEC	R1
    	MOV	A,#11101111B	
    	MOVX	@R1,A
    	LCALL	LCD_CLR		
    	MOV	DPTR,#TEXT
    	LCALL	WRITE_TEXT
    	MOV	R1,#CSAD		
    	MOVX	A,@R1		
    	MOV	R1,#CSIC	
    	CLR	A		
    	MOVX	@R1,A
    	INC	A
    	MOVX	@R1,A
    	INC	A
    	MOVX	@R1,A
    	INC	A
    	MOVX	@R1,A
    	CLR	A
    	MOV	R7,A		
    	MOV	R6,A
    	MOV	R5,A
    	MOV	R2,A		
    	MOV	R3,A
    	SETB	EA		
    	SETB	EX1		
    	CLR	INT55		
    LOOP:
    	MOV	A,R2
    	CJNE	A,B0R3,TEST	
    	SJMP	LOOP
    TEST:
    	mov	A,R2
    	mov	R4,A
    	cjne	R4,#4,write
    	SJMP	BZ
    WRITE:
    	MOV	R3,A		
    	ACALL	KURSOR_2L	
    	MOV	A,R3
    	LCALL	WRITE_HEX	
    	SJMP	LOOP
    
    TEXT:
    	DB	'LICZBA GORA -> DOL 00',0
    
    
    
    KURSOR_2L:
    	MOV	A,#10H		
    	LCALL	WRITE_INSTR	
    	MOV	A,#10H
    	LCALL	WRITE_INSTR
    	RET
    
    
    
    
    
    
    
    
    
    BZ:
      	 CLR P1.5   
    	
     	MOV	R0,#LCDWC	
    	MOV	R1,#LCDRC	 
    
    	MOV	A,#1		
    	LCALL	WRITE2
    
    	MOV	A,#0FH		
    	LCALL	WRITE2		
    
    	INC	R0		
    	MOV	DPTR,#TEXT2	
    
    WRITE_TXT2:
    	CLR	A		
    	MOVC	A,@A+DPTR	
    	JZ	TEXT_END2	
    
    	ACALL	WRITE2		
    	INC	DPTR		
    				
    	SJMP	WRITE_TXT2	
    
    TEXT_END2:
    	DEC	R0		
    
    			
    	MOV	A,#1
    	LCALL	DELAY_100MS	
    	
    	MOV	A,#18H		
    	LCALL	WRITE2		
    
    	LCALL WAIT_KEY
    	SETB	P1.7
    	LCALL LCD_CLR
    	LJMP START1
    
    WRITE2:
    	MOV	R2,A		
    BUSY2:
    	MOVX	A,@R1		
    	JB	ACC.7,BUSY2	
    	MOV	A,R2		
    	MOVX	@R0,A		
    	RET
    
    
    TEXT2:
    	DB	' MAX '
    	DB	' MAX '
    	DB	' MAX   '
    	DB	' MAX ',0


    Proszę umieszczać listingi programów w znacznikach "Code". [c_p]
  • #2 4986872
    uzdzik
    Poziom 17  
    Posty: 275
    Pomógł: 13
    Ocena: 15
    zamien kolejność najpierw zrób to co zaczyna sie od 13H a potem to co od 100H mi to kiedyś pomogło
REKLAMA