Sie sind auf Seite 1von 5

EX1.

1: ORG 0 MOV R0,#50H MOV A,#1H CALL INTERNA MOV DPTR,#2200H MOV A,#1H CALL EXTERNA sJMP $ INTERNA: MOV @R0,A INC A INC R0 CJNE A,#16H,INTERNA RET EXTERNA: MOVX @DPTR,A INC A INC DPTR CJNE A,#16,EXTERNA RET EX1.2.: ORG 0 MOV DPTR,#2100H MOV A,#01H MOV R0,#30H MOVX @DPTR,A MOV @R0,A INC A INC DPTR INC R0 CJNE A,#11H,LOOP1 MOV DPTR,#2300H MOV R0,#30H MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR CJNE R0,#40H,LOOP2 SJMP $

; ARMAZENA AT A=15H

;ARMAZENA AT A=15H

LOOP1:

LOOP2:

EX1.3.: ORG 0 MOV DPTR, #TAB MOV R0, #30H ;endereo para gravao da memria interna LOOP1: MOVC A, @A+DPTR CJNE A,#00H, LOOP2 00 MOV A, R0 SUBB A, #30H uencia ;compara e analisa se chegou no fim dos dados = ;o acumulador passa a ter o nmero de dados da seq

MOV 20H, A ncia SJMP $

;move para o endereo 20h o nmero de dados da seque

LOOP2: MOV @R0, A ;move dado para o endereo da RAM interna INC R0 ;move para prxima posio INC DPTR ;move para prximo dado MOV A, #00H SJMP LOOP ;volta para loop END EX1.4.: ORG 0 MOV P1, #00H ;zera as portas MOV P2, #00H L1: MOV A, #09H ;referencia para quando for mudar para 10, e no 0A L2: CJNE A, #00, L3 ;testa e v se chegou em 9 MOV R0, P2 ;manipulao para prxima instruo CJNE R0, #99H, L4; testa e v se chegou em 99 MOV P2, #00H ;se chegou em 99, zera o acumulador SJMP L5 L3: DEC A ;se no chegou em 9... INC P1 ;...conta normalmente as duas portas INC P2 SJMP L2 L4: MOV A, P2 ;se for 9... ADD A, #07H ;...adiciona 7 para ir para 10, e no 0A MOV P2, A L5: INC P1 SJMP L1 END

EX1.5.: ORG 0 MOV R0, #00H MOV DPTR, #8200H LOOP1: MOVX A, @DPTR CJNE A, #00H, LOOP2 MOV 40H, R0 da string RET LOOP2: MOV DPH, #83H MOVX @DPTR, A MOV DPH, #82H INC R0 INC DPTR SJMP LOOP END EX1.6.: ORG 0 MOV R2,#40H CALL LOOP ;zera o acumulador R0 ;compara e analisa se o fim dos dados ;move para o endereo interno o nmero de caracteres

;aponta para endereo de gravao da memria externa ;move dado para novo endereo da memria externa ;aponta de volta para local dos dados ;somador do nmero de caracteres ;prximo dado ;volta para loop

SJMP $ LOOP: CLR A MOV A,R0 ADDC A,R1 MOV @R2, A INC R0 INC R1 INC R2 CJNE R2, #44H, LOOP RET

END EX1.7.: ORG 0 MOV DPTR, #TAB MOV R0, #30H ;endereo para gravao da memria interna LOOP1: MOVC A, @A+DPTR CJNE A,#00H, LOOP2 00 MOV A, R0 MOV R0,#30H SUBB A, #30H MOV R1, A CALL LOOP3 SJMP $ LOOP2: MOV @R0, A INC R0 INC DPTR MOV A, #00H SJMP LOOP END LOOP3: MOV DPTR, 3100H MOV A, @R0 MOVx @DPTR,A DEC R1 INC R0 INC DPTR CJNE R1,#00H, LOOP3 RET EX1.9 INT: ORG 0 SJMP PROG ORG 001BH CLR EA INC P1 MOV TH1, #0FDH MOV TL1, #7FH SETB EA RETI ;inicia programa ;pula para comeo do programa ;programa a interrupo do timer ;conta a cada 640 ciclos do timer ;recarrega o timer ;compara e analisa se chegou no fim dos dados =

;move para o R1 o nmero de dados da sequencia

;move dado para o endereo da RAM interna ;move para prxima posio ;move para prximo dado ;volta para loop

PROG:

SETB ET1 MOV TMOD, #10H ;timer 1 modo 1 MOV TH1, #0FDH

MOV TL1, #7FH SETB EA SETB TR1 SJMP $ END EX1.10 INT:

;setado o timer... ;...dispara o timer ;espera a interrupo

ORG 0 SJMP PROG ORG 000BH ;rotina de interrupo CLR EA CPL P1.7 ;faz a onda quadrada SETB EA MOV TH0, #0D7H ;reacarrega o timer RETI SETB ET0 MOV TH0, #0D7H ;timer 0 no modo 0 SETB EA SETB TR0 SJMP $ ;fim lgico END ORG 0 SJMP PROG ORG 000BH CLR EA SETB C SETB EA RETI ;interrupo utilizada para as rotinas criadas

PROG:

EX1.11

PROG:

ACALL ROTS CPL P1.0 SJMP PROG ; rotina de 50ms CLR C SETB ET0 MOV TMOD, #01H MOV TH0, #3CH MOV TL0, #0AFH SETB EA SETB TR0 JNC $ RET

ROTMS:

ROTS: L1:

; rotina de 5s MOV A, #00H MOV R0, #00H CLR C SETB ET0 SETB EA MOV TMOD, #01H MOV TH0, #3CH MOV TL0, #0AFH SETB TR0 JNC $ INC R0 CJNE R0, #64H, L1

RET END EX1.12: ORG 0 SJMP PROG ORG 0003H ;rotina de interrupo externa 0 MOV DPTR, #4000H MOVX A, @DPTR INC A MOV DPTR, #4200H MOVX @DPTR, A MOV P0, A RETI ORG 0013H ;rotina de interrupo externa 1 MOV DPTR, #4200H MOVX A, @DPTR MOV P1, A RETI ORG 001BH ;rotina de interrupo do timer 1 MOV A, P2 MOV DPTR, #4000H MOVX @DPTR, A MOV TH1, #9EH MOV TL1, #57H RETI PROG: SETB EX0 SETB EX1 SETB ET1 SETB PX1 SETB PX0 CLR PT1 SETB EA MOV TMOD, #10H MOV TH1, #9EH MOV TL1, #57H SETB TR1 SJMP $ END ;seta as interrupes ;estabelece as prioridades das interrupes

;timer 1 modo 1 ;carrega 25 ms ;dispara timer ;fim lgico

Das könnte Ihnen auch gefallen