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 00H,#4CH
- MOV 01H,#60H
- MOV 02H,#73H
- MOV 03H,#83H
- MOV 04H,#8FH
- MOV 05H,#96H
- MOV 06H,#99H
- MOV 07H,#96H
- MOV 08H,#8FH
- MOV 09H,#83H
- MOV 0AH,#73H
- MOV 0BH,#60H
- MOV 0CH,#4CH
- MOV 0DH,#38H
- MOV 0EH,#26H
- MOV 0FH,#16H
- MOV 10H,#0AH
- MOV 11H,#02H
- MOV 12H,#00H
- MOV 13H,#02H
- MOV 14H,#0AH
- MOV 15H,#16H
- MOV 16H,#26H
- MOV 17H,#38H
- SETB P1.1 ;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: JB P1.1,LOOP ;Conversor desligado
- JNB P1.0,SENOIDE ;Se for 0 é senoidal, se for 1 é 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
- SETB P1.0 ;Define como onda quadrada
- CLR P1.1 ;Liga o conversor
- LJMP FIM
- TESTSEN: CJNE A, #'S', DESLIGA
- CLR P1.0 ;Define como onda senoidal
- CLR P1.1 ;Liga o conversor
- LJMP FIM
- DESLIGA: CJNE A, #'D', FIM
- SETB P1.1 ;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, #0FFH
- 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,#00H ;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