Dissertacao Mestrado

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

Dissertacao Mestrado

Mensagempor tcpipchip » 01 Jun 2012 13:02

Anexo...caso queira ler...
http://www.inf.furb.br/~maw/dissertacao/
Nao é a ultima versao...
Foi muito legal faze-la...deu trabalho...tinha que ter 25 artigos publicados em 4 anos
TCPIPCHIP
Código: Selecionar todos
org h'0000
 
LJMP INICIO
.org h'3
LJMP ext_0
.org h'b
LJMP timer_0
.org h'13
LJMP ext_1
.org h'1b
LJMP timer_1
.org h'23
LJMP serial


; VERIFICARA O QUE HA NO BARRAMENTO E VERIFICA QUAL REGISTRADOR A SER
; CONSULTADO

ext_1:
    ;<==== COMECO

    PUSH PSW

    PUSH DPH
    PUSH DPL
    MOV DPTR,#slot
    PUSH ACC
    MOVX A,@DPTR
    CJNE A,#0,REG_B
    POP ACC
    MOVX @DPTR,A
    POP DPL
    POP DPH
    AJMP SAI_INT

REG_B:
   POP ACC
   POP DPL
   POP DPH


   PUSH DPH
   PUSH DPL
   MOV DPTR,#slot
   PUSH ACC
   MOVX A,@DPTR
   CJNE A,#1,REG_DPH
   MOV A,B
   MOVX @DPTR,A
   POP ACC
   POP DPL
   POP DPH
   AJMP SAI_INT

REG_DPH:
   POP ACC
   POP DPL
   POP DPH


   PUSH DPH
   PUSH DPL
   PUSH B
   MOV B,DPH
   MOV DPTR,#slot
   PUSH ACC
   MOVX A,@DPTR
   CJNE A,#2,REG_DPL
   MOV A,B
   MOVX @DPTR,A
   POP ACC
   POP B
   POP DPL
   POP DPH
   AJMP SAI_INT

REG_DPL:

   POP ACC
   POP B
   POP DPL
   POP DPH


   PUSH DPH
   PUSH DPL
   PUSH B
   MOV B,DPL
   MOV DPTR,#slot
   PUSH ACC
   MOVX A,@DPTR
   CJNE A,#3,REG_TH0
   MOV A,B
   MOVX @DPTR,A
   POP ACC
   POP B
   POP DPL
   POP DPH
   AJMP SAI_INT

REG_TH0:
   POP ACC
   POP B
   POP DPL
   POP DPH

   PUSH DPH
   PUSH DPL
   PUSH B
   MOV B,TH0
   MOV DPTR,#slot
   PUSH ACC
   MOVX A,@DPTR
   CJNE A,#4,REG_TL0
   MOV A,B
   MOVX @DPTR,A
   POP ACC
   POP B
   POP DPL
   POP DPH
   AJMP SAI_INT


REG_TL0:
   POP ACC
   POP B
   POP DPL
   POP DPH

   PUSH DPH
   PUSH DPL
   PUSH B
   MOV B,TL0
   MOV DPTR,#slot
   PUSH ACC
   MOVX A,@DPTR
   CJNE A,#5,REG_TH1
   MOV A,B
   MOVX @DPTR,A
   POP ACC
   POP B
   POP DPL
   POP DPH
   AJMP SAI_INT

REG_TH1:

   POP ACC
   POP B
   POP DPL
   POP DPH

   PUSH DPH
   PUSH DPL
   PUSH B
   MOV B,TH1
   MOV DPTR,#slot
   PUSH ACC
   MOVX A,@DPTR
   CJNE A,#6,REG_TL1
   MOV A,B
   MOVX @DPTR,A
   POP ACC
   POP B
   POP DPL
   POP DPH
   AJMP SAI_INT

REG_TL1:

   POP ACC
   POP B
   POP DPL
   POP DPH

   PUSH DPH
   PUSH DPL
   PUSH B
   MOV B,TL1
   MOV DPTR,#slot
   PUSH ACC
   MOVX A,@DPTR
   CJNE A,#7,REG_R0
   MOV A,B
   MOVX @DPTR,A
   POP ACC
   POP B
   POP DPL
   POP DPH
   AJMP SAI_INT

REG_R0:

   POP ACC
   POP B
   POP DPL
   POP DPH

   PUSH DPH
   PUSH DPL
   PUSH B
   MOV B,R0
   MOV DPTR,#slot
   PUSH ACC
   MOVX A,@DPTR
   CJNE A,#8,REG_R1
   MOV A,B
   MOVX @DPTR,A
   POP ACC
   POP B
   POP DPL
   POP DPH
   AJMP SAI_INT

REG_R1:

   POP ACC
   POP B
   POP DPL
   POP DPH

   PUSH DPH
   PUSH DPL
   PUSH B
   MOV B,R1
   MOV DPTR,#slot
   PUSH ACC
   MOVX A,@DPTR
   CJNE A,#9,REG_R2
   MOV A,B
   MOVX @DPTR,A
   POP ACC
   POP B
   POP DPL
   POP DPH
   AJMP SAI_INT

REG_R2:

   POP ACC
   POP B
   POP DPL
   POP DPH

   PUSH DPH
   PUSH DPL
   PUSH B
   MOV B,R2
   MOV DPTR,#slot
   PUSH ACC
   MOVX A,@DPTR
   CJNE A,#10,REG_R3
   MOV A,B
   MOVX @DPTR,A
   POP ACC
   POP B
   POP DPL
   POP DPH
   AJMP SAI_INT

REG_R3:

   POP ACC
   POP B
   POP DPL
   POP DPH

   PUSH DPH
   PUSH DPL
   PUSH B
   MOV B,R3
   MOV DPTR,#slot
   PUSH ACC
   MOVX A,@DPTR
   CJNE A,#D'11,REG_R4
   MOV A,B
   MOVX @DPTR,A
   POP ACC
   POP B
   POP DPL
   POP DPH
   AJMP SAI_INT


REG_R4:

   POP ACC
   POP B
   POP DPL
   POP DPH

   PUSH DPH
   PUSH DPL
   PUSH B
   MOV B,R4
   MOV DPTR,#slot
   PUSH ACC
   MOVX A,@DPTR
   CJNE A,#D'12,REG_R5
   MOV A,B
   MOVX @DPTR,A
   POP ACC
   POP B
   POP DPL
   POP DPH
   AJMP SAI_INT

REG_R5:

   POP ACC
   POP B
   POP DPL
   POP DPH

   PUSH DPH
   PUSH DPL
   PUSH B
   MOV B,R5
   MOV DPTR,#slot
   PUSH ACC
   MOVX A,@DPTR
   CJNE A,#D'13,REG_R6
   MOV A,B
   MOVX @DPTR,A
   POP ACC
   POP B
   POP DPL
   POP DPH
   AJMP SAI_INT


REG_R6:

   POP ACC
   POP B
   POP DPL
   POP DPH

   PUSH DPH
   PUSH DPL
   PUSH B
   MOV B,R6
   MOV DPTR,#slot
   PUSH ACC
   MOVX A,@DPTR
   CJNE A,#D'14,REG_R7
   MOV A,B
   MOVX @DPTR,A
   POP ACC
   POP B
   POP DPL
   POP DPH
   AJMP SAI_INT

REG_R7:

   POP ACC
   POP B
   POP DPL
   POP DPH

   PUSH DPH
   PUSH DPL
   PUSH B
   MOV B,R7
   MOV DPTR,#slot
   PUSH ACC
   MOVX A,@DPTR
   CJNE A,#D'15,REG_TCON
   MOV A,B
   MOVX @DPTR,A
   POP ACC
   POP B
   POP DPL
   POP DPH
   AJMP SAI_INT

REG_TCON:

   POP ACC
   POP B
   POP DPL
   POP DPH

   PUSH DPH
   PUSH DPL
   PUSH B
   MOV B,TCON
   MOV DPTR,#slot
   PUSH ACC
   MOVX A,@DPTR
   CJNE A,#D'16,REG_TMOD
   MOV A,B
   MOVX @DPTR,A
   POP ACC
   POP B
   POP DPL
   POP DPH
   AJMP SAI_INT

REG_TMOD:

   POP ACC
   POP B
   POP DPL
   POP DPH

   PUSH DPH
   PUSH DPL
   PUSH B
   MOV B,TMOD
   MOV DPTR,#slot
   PUSH ACC
   MOVX A,@DPTR
   CJNE A,#D'17,REG_IE
   MOV A,B
   MOVX @DPTR,A
   POP ACC
   POP B
   POP DPL
   POP DPH
   AJMP SAI_INT

REG_IE:

   POP ACC
   POP B
   POP DPL
   POP DPH

   PUSH DPH
   PUSH DPL
   PUSH B
   MOV B,IE
   MOV DPTR,#slot
   PUSH ACC
   MOVX A,@DPTR
   CJNE A,#D'18,REG_SP
   MOV A,B
   MOVX @DPTR,A
   POP ACC
   POP B
   POP DPL
   POP DPH
   AJMP SAI_INT

REG_SP:

   POP ACC
   POP B
   POP DPL
   POP DPH

   PUSH DPH
   PUSH DPL
   PUSH B
   MOV B,SP
   PUSH ACC
   MOV A,B
   SUBB A,#6
   MOV B,A
   POP ACC
   MOV DPTR,#slot
   PUSH ACC
   MOVX A,@DPTR
   CJNE A,#D'19,REG_PSW
   MOV A,B
   MOVX @DPTR,A
   POP ACC
   POP B
   POP DPL
   POP DPH
   AJMP SAI_INT

REG_PSW:

   POP ACC
   POP B
   POP DPL
   POP DPH

   PUSH ACC
   PUSH DPH
   PUSH DPL
   PUSH B
   PUSH B
   MOV B,R0
   MOV R0,SP
   MOV A,R0
   SUBB A,#D'5
   MOV R0,A
   MOV A,@R0
   MOV B,A
   MOV DPTR,#slot
   PUSH ACC
   MOVX A,@DPTR
   CJNE A,#D'20,MEMORIA_INTERNA
   MOV A,B
   MOVX @DPTR,A
   POP ACC
   POP B
   MOV R0,B
   POP B
   POP DPL
   POP DPH
   POP ACC
   AJMP SAI_INT

MEMORIA_INTERNA:

   POP ACC
   POP B
   POP DPL
   POP DPH
   POP ACC

   PUSH DPH
   PUSH DPL
   PUSH ACC
   PUSH B
   MOV DPTR,#slot
   PUSH ACC
   MOVX A,@DPTR
   MOV B,R0
   MOV R0,A
   MOV A,@R0
   MOV R0,B
   MOVX @DPTR,A
   POP ACC
   POP B
   POP ACC
   POP DPL
   POP DPH
   AJMP SAI_INT

SAI_INT:

   POP PSW
   RETI

INICIO:

; PROGRAMA /INT1 PARA QUE GERE UMA INTERRUPCAO NA DESCIDA DE BORDA

  MOV IE,#B'10000100
  SETB IT1

 ; PROGRAMA PINO T1 COMO CONTADOR
 ; ZERA TL1. QUANDO DIFERENTE DE UM, HOUVE UMA ESCRITA

  MOV TMOD,#B'01010000
  MOV TL1,#0
  SETB TR1

 ; INFORMACAO DE QUE A placa ESTA slotADA
 ; O PC VAI TER QUE LER, APOS UM RESET, O VALOR 128 PELO slot

 MOV DPTR,#slot
 MOV A,#D'128
 MOVX @DPTR,A

 ; R2 E R3 SERAO PONTEIRO PARA A RAM

 MOV R3,#H'80
 MOV R2,#H'00

 ; AQUI AGUARDA O TAMANHO DO PROGRAMA
 ; PRIMEIRO VEM O BYTE MAIS SIGNIFICATIVO


 ESP_H:
 LCALL ESPERA_DADO_slot
 MOVX A,@DPTR
 MOVX @DPTR,A
 MOV R1,A

 ; SEGUNDO VEM O BYTE MENOS SIGNIFICATIVO

 ESP_L:
 LCALL ESPERA_DADO_slot
 MOVX A,@DPTR
 MOVX @DPTR,A
 MOV R0,A

 ; AGUARDA O PROGRAMA A SER EXECUTADO
 ; O PC VAI TRASMITIR O CODIGO OBJETO PELO slot
 ; JOGUE NA RAM 6264, A PARTIR DO ENDERECO 8000H


 ESP_C:
 LCALL ESPERA_DADO_slot
 MOVX A,@DPTR
 MOVX @DPTR,A
 LCALL JOGA_RAM


 ; VERIFICA SE JA RECEBEU O PROGRAMA COMPLETO
 ; SE NAO, CONTINUA RECEBENDO

 MOV A,R0
 DEC R0
 JNZ MSB
 DEC R1
 MSB:
 MOV A,R0
 ORL A,R1
 JNZ ESP_C

 ; OPS, JA RECEBEU TODO O CODIGO DE MAQUINA
 ; AGUARDA APENAS UMA CONFIRMACAO PARA INICIAR A EXECUCAO

 ESP_A:
 LCALL ESPERA_DADO_slot

; MANTEM VALORES DO 89C51 COMO SE RESETASSE DO ZERO

  CLR TR1
  MOV ACC,#0
  MOV B,#0
  MOV DPTR,#0000
  MOV PSW,#0
  MOV SP,#7
  MOV TMOD,#0
  MOV TL1,#0
  MOV TH1,#0
  MOV R0,#0
  MOV R1,#0
  MOV R2,#0
  MOV R3,#0
  MOV R4,#0
  MOV R5,#0
  MOV R6,#0
  MOV R7,#0

 ; SALTA PARA A RAM E EXECUTA PROGRAMA

 LJMP H'8000

 JOGA_RAM:

 PUSH DPH
 PUSH DPL
 MOV DPH,R3
 MOV DPL,R2
 MOVX @DPTR,A
 INC DPTR
 MOV R3,DPH
 MOV R2,DPL
 POP DPL
 POP DPH
 RET

 ESPERA_DADO_slot:

 MOV TL1,#0
 AGUAR_1:
 MOV A,TL1
 JZ AGUAR_1
 MOV TL1,#0
 RET

 .org h'4000
 slot:
 .org h'8000
PROGRAMA_EM_RAM:
.org h'8003
ext_0:
.org h'800b
timer_0:
.org h'801b
timer_1:
.ORG h'8023
serial:
.ORG h'802b
timer_2:
 RAM:
.END
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor chrdcv » 01 Jun 2012 17:26

Parabéns!

:wink:
Seu Madruga: "O trabalho não é ruim, ruim é ter que trabalhar"
Avatar do usuário
chrdcv
Dword
 
Mensagens: 1580
Registrado em: 13 Out 2006 14:13


Voltar para 8051

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x