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