Advertisement
VeePollux

HSBDEWYUSHDIA24pontos

Jun 18th, 2019
548
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 40H,#99H
  4.             MOV 41H,#0ADH
  5.             MOV 42H,#0C0H
  6.             MOV 43H,#0CFH
  7.             MOV 44H,#0DCH
  8.             MOV 45H,#0E3H
  9.             MOV 46H,#0E6H
  10.             MOV 47H,#0E3H
  11.             MOV 48H,#0DCH
  12.             MOV 49H,#0CFH
  13.             MOV 4AH,#0C0H
  14.             MOV 4BH,#0ADH
  15.             MOV 4CH,#99H
  16.             MOV 4DH,#85H
  17.             MOV 4EH,#73H
  18.             MOV 4FH,#63H
  19.             MOV 50H,#57H
  20.             MOV 51H,#4FH
  21.             MOV 52H,#4CH
  22.             MOV 53H,#4FH
  23.             MOV 54H,#57H
  24.             MOV 55H,#63H
  25.             MOV 56H,#73H
  26.             MOV 57H,#85H
  27.  
  28.             MOV R2, #0FFH          ;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:       CJNE R2, #00H, LOOP        ;Conversor desligado com R2 em #0FFH
  39.             CJNE R3, #0FFH,SENOIDE    ;Se for #00H é senoidal, se for #0FFH é 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.             MOV R3, #0FFH       ;Define como onda quadrada
  52.             MOV R2, #00H        ;Liga o conversor
  53.             LJMP FIM
  54.  
  55. TESTSEN:    CJNE A, #'S', DESLIGA
  56.             MOV R3, #00H        ;Define como onda senoidal
  57.             MOV R2, #00H        ;Liga o conversor
  58.             LJMP FIM
  59.  
  60. DESLIGA:    CJNE A, #'D', FIM  
  61.             MOV R2, #0FFH       ;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, #0B3H
  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,#40H         ;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