Programa para MCS-51

Sylvia
08 de Septiembre del 2008
Alguien puede corregirme este ejercico???

Ahi va el enunciado:
Hacer un programa para q el data logger anterior guarde cada conjunto de 16K muestras a la memoria de datos seleccionada con las entradas SEL1(P3.5) i SEL0(P3.4). És necesario considerar que el tiempo entre muestra i muestra sea de 100 microsegundos. Cuando se hayan entrado 16K bytes de una rafaga de datos ya se puede empezar a transmitir un dato detras de otro.
El sistema hace ciclicamente este proceso de entrar datos de golpe i transmite una vez completados.
Comunicaciones serie són en formato UART 8 bits a 115200 bps.


Aqui el codigo

#include(Reg32.inc)
SEL1 BIT P3.5
SEL2 BIT P3.4
cont XDATA
contfinal XDATA
continicial DATA 35h
suma DATA 36h
un EQU R7
dos EQU R6
tres EQU R5

CSEG AT 0
JMP MAIN
CSEG AT 03h
JMP INT_TIM0

MAIN:
CALLhab_int
CALLhab_tim0_tim2
CALLhab_port_serie
CALLfcarrega_dades
CALLport_serie
MOV zero,#00h
MOV un,#10h
MOV dos,#01h
MOV tres,#11h

REP: MOV A, SEL0
ADD A,SEL1
MOV suma, A

CJNE suma zero, fun
MOV cont, #0000h
MOV contfinal1, #3FFFh

fun: CJNE suma un, fdos
MOV cont, #4000h
MOV contfinal, #7FFFh

fdos: CJNE suma dos, ftres
MOV cont, #8000h
MOV contfinal, #BFFFh

ftres: MOV cont, #C000h
MOV contfinal, #FFFFh

MOV A, cont
MOV continicial, A
SETB TR0
JMP fcarregar_dades

hab_int: SETB EA
SETB ET0
SETB ET2
CLR EXEN2
RET

hab_tim0_tim2: MOV TMOD, #01h
SETB TR2
CLR RL2
MOV TH0, #0FFh
MOV TL0, #85h
MOV RCAP2H, 0FFh
MOV RCAP2L, 0FCh
SETB TR2
RET

hab_port_serie: MOV SCON, 40h
RET

fcarrega_dades: CJNE cont, contfinal, $



fport_serie: MOV A, continicial
MOV cont, A
MOVX A, @cont
MOV SBUF, A
CJNE cont contfinal, fport_serie
JNB TI, $
CLR TI
RET

INT_TIM0: MOVX DPTR, #P1
MOVX @DPTR, P1
ADD cont, #0001h
MOV TH0, #FFh
MOV TL0, #85h
RETI