Advertisement
VeePollux

24 pontos

Jun 17th, 2019
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.                 ORG 5000h
  2. ;Valores para a onda senoidal de 24 pontos
  3.             MOV 00H,#4CH
  4.             MOV 01H,#60H
  5.             MOV 02H,#73H
  6.             MOV 03H,#83H
  7.             MOV 04H,#8FH
  8.             MOV 05H,#96H
  9.             MOV 06H,#99H
  10.             MOV 07H,#96H
  11.             MOV 08H,#8FH
  12.             MOV 09H,#83H
  13.             MOV 0AH,#73H
  14.             MOV 0BH,#60H
  15.             MOV 0CH,#4CH
  16.             MOV 0DH,#38H
  17.             MOV 0EH,#26H
  18.             MOV 0FH,#16H
  19.             MOV 10H,#0AH
  20.             MOV 11H,#02H
  21.             MOV 12H,#00H
  22.             MOV 13H,#02H
  23.             MOV 14H,#0AH
  24.             MOV 15H,#16H
  25.             MOV 16H,#26H
  26.             MOV 17H,#38H
  27.  
  28.             SETB P1.1           ;P1.1 como 1 para o conversor começar desligado
  29.             MOV SCON, #01010000b
  30.             MOV 87H, #80H
  31.             MOV TMOD, #00100001b
  32.             MOV IE, #10010000b
  33. ;Valores para taxa de transmissão de 4800bps
  34.             MOV TH1, #0F4H
  35.             MOV TL1, #0F4H
  36.             SETB TR1
  37.  
  38. LOOP:       JB P1.1,LOOP        ;Conversor desligado
  39.             JNB P1.0,SENOIDE    ;Se for 0 é senoidal, se for 1 é quadrada
  40.             LCALL QUADRADA
  41.             LJMP LOOP
  42.  
  43. SENOIDE:    LCALL SENOIDAL
  44.             LJMP LOOP
  45.  
  46.                 ORG 4270H   ;----------------------INTERRUPÇÃO-------------------------
  47.  
  48. SERIAL:     JNB RI, SERIAL      ;Trava nesse ponto até a recepção do oitavo bit de dados
  49.             MOV A, SBUF
  50.             CJNE A, #'Q',TESTSEN   
  51.             SETB P1.0           ;Define como onda quadrada
  52.             CLR P1.1            ;Liga o conversor
  53.             LJMP FIM
  54.  
  55. TESTSEN:    CJNE A, #'S', DESLIGA
  56.             CLR P1.0            ;Define como onda senoidal
  57.             CLR P1.1            ;Liga o conversor
  58.             LJMP FIM
  59.  
  60. DESLIGA:    CJNE A, #'D', FIM  
  61.             SETB P1.1           ;Desliga o conversor
  62.  
  63.  
  64. ;Limpa RI para a próxima recepção e sai da interrupção
  65. FIM:        CLR RI         
  66.             RETI
  67.  
  68. ;Rotina para a onda quadrada
  69. QUADRADA:   MOV A, #0FFH
  70.             LCALL DAL
  71.             LCALL TEMPOQ
  72.             MOV A, #00H
  73.             LCALL DAL
  74.             LCALL TEMPOQ
  75.             RET
  76.  
  77. ;Rotina para onda senoidal
  78. SENOIDAL:   MOV R1,#24          ;Move pra R1 a quantidade de pontos
  79.             MOV R0,#00H         ;Move para R0 os endereços com os valores da onda
  80. PULO:       MOV A, @R0         
  81.             LCALL DAL
  82.             LCALL TEMPOS
  83.             INC R0
  84.             DJNZ R1,PULO
  85.             RET
  86.  
  87. ;Rotina para enviar para o conversor o valor do acumulador
  88. DAL:        MOV DPTR, #0E400H
  89.             MOVX @DPTR, A
  90.             RET
  91.  
  92. ;Rotina de tempo da onda quadrada
  93. TEMPOQ:     MOV TH0, #79H
  94.             MOV TL0, #00H
  95.             SETB TR0
  96. TEMQ:       JNB TF0, TEMQ
  97.             CLR TF0
  98.             CLR TR0
  99.             RET
  100.  
  101. ;Rotina de tempo da onda senoidal
  102. TEMPOS:     MOV TH0, #0FFH
  103.             MOV TL0, #60H
  104.             SETB TR0
  105. TEMS:       JNB TF0, TEMS
  106.             CLR TF0
  107.             CLR TR0
  108.             RET
  109.  
  110.                 END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement