Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ORG 5000h
- ;Valores para a onda senoidal de 24 pontos
- MOV 40H,#99H
- MOV 41H,#0ADH
- MOV 42H,#0C0H
- MOV 43H,#0CFH
- MOV 44H,#0DCH
- MOV 45H,#0E3H
- MOV 46H,#0E6H
- MOV 47H,#0E3H
- MOV 48H,#0DCH
- MOV 49H,#0CFH
- MOV 4AH,#0C0H
- MOV 4BH,#0ADH
- MOV 4CH,#99H
- MOV 4DH,#85H
- MOV 4EH,#73H
- MOV 4FH,#63H
- MOV 50H,#57H
- MOV 51H,#4FH
- MOV 52H,#4CH
- MOV 53H,#4FH
- MOV 54H,#57H
- MOV 55H,#63H
- MOV 56H,#73H
- MOV 57H,#85H
- MOV R2, #0FFH ;P1.1 como 1 para o conversor começar desligado
- MOV SCON, #01010000b
- MOV 87H, #80H
- MOV TMOD, #00100001b
- MOV IE, #10010000b
- ;Valores para taxa de transmissão de 4800bps
- MOV TH1, #0F4H
- MOV TL1, #0F4H
- SETB TR1
- LOOP: CJNE R2, #00H, LOOP ;Conversor desligado com R2 em #0FFH
- CJNE R3, #0FFH,SENOIDE ;Se for #00H é senoidal, se for #0FFH é quadrada
- LCALL QUADRADA
- LJMP LOOP
- SENOIDE: LCALL SENOIDAL
- LJMP LOOP
- ORG 4270H ;----------------------INTERRUPÇÃO-------------------------
- SERIAL: JNB RI, SERIAL ;Trava nesse ponto até a recepção do oitavo bit de dados
- MOV A, SBUF
- CJNE A, #'Q',TESTSEN
- MOV R3, #0FFH ;Define como onda quadrada
- MOV R2, #00H ;Liga o conversor
- LJMP FIM
- TESTSEN: CJNE A, #'S', DESLIGA
- MOV R3, #00H ;Define como onda senoidal
- MOV R2, #00H ;Liga o conversor
- LJMP FIM
- DESLIGA: CJNE A, #'D', FIM
- MOV R2, #0FFH ;Desliga o conversor
- ;Limpa RI para a próxima recepção e sai da interrupção
- FIM: CLR RI
- RETI
- ;Rotina para a onda quadrada
- QUADRADA: MOV A, #0B3H
- LCALL DAL
- LCALL TEMPOQ
- MOV A, #00H
- LCALL DAL
- LCALL TEMPOQ
- RET
- ;Rotina para onda senoidal
- SENOIDAL: MOV R1,#24 ;Move pra R1 a quantidade de pontos
- MOV R0,#40H ;Move para R0 os endereços com os valores da onda
- PULO: MOV A, @R0
- LCALL DAL
- LCALL TEMPOS
- INC R0
- DJNZ R1,PULO
- RET
- ;Rotina para enviar para o conversor o valor do acumulador
- DAL: MOV DPTR, #0E400H
- MOVX @DPTR, A
- RET
- ;Rotina de tempo da onda quadrada
- TEMPOQ: MOV TH0, #79H
- MOV TL0, #00H
- SETB TR0
- TEMQ: JNB TF0, TEMQ
- CLR TF0
- CLR TR0
- RET
- ;Rotina de tempo da onda senoidal
- TEMPOS: MOV TH0, #0FFH
- MOV TL0, #60H
- SETB TR0
- TEMS: JNB TF0, TEMS
- CLR TF0
- CLR TR0
- RET
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement