Ответ:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено новичок123 18 ноября 2003 г. 17:25
В ответ на: Алгоритм декодирования разыскивается - програмный последовательный интерфейс отправлено VVT 18 ноября 2003 г. 16:22

От Keil166 кусок от монитора:


$IF (SERIAL2)
;********************************************************************
;* Initialization of simulated Serial Interface 2 *
;********************************************************************

T_LINE BIT P3.9 ; Transmit Data Line TxD
T_OUT BIT DP3.9 ; Port direction register for TxD
R_LINE BIT P3.8 ; Receive Data Line RxD
R_IN BIT DP3.8 ; Port direction register for RxD


STATES_PER_BIT EQU (CPU_CLOCK / BAUDRATE)

BSET T_LINE ;
BSET T_OUT ; set TxD to output
BCLR R_IN ; set RxD to input
CALL AFTER_GO

JMP CC_UC,MON166


INSTAT: BSET R4.0 ; INPUT STATUS OF SERIAL INTERFACE
RET

OUTSTAT: BSET R4.0 ; OUTPUT STATUS OF SERIAL INTERFACE
RET


;*************** CHARACTER INPUT-ROUTINE ************************

INCHAR: PUSH R2
PUSH R3
MOV R3,#8 ; Bit counter
MOV R4,#00H

STARTBIT: JNB R_LINE,STARTBIT ; Wait until last data bit is over
STARTBIT1: JB R_LINE,STARTBIT1; Wait for startbit
MOV R2,DPP0:C_VAR1 ; Startbit valid, begin sampling !
WAIT1: SUB R2,#1 ;
JMPR CC_NZ,WAIT1 ;
RECEIVE: BMOV R4.8,R_LINE ; Bit input
SHR R4,#1
SUB R3,#1
JMPR CC_Z,LASTBIT ; Last bit ?

MOV R2,DPP0:C_VAR2 ; Sample period generation
WAIT2: SUB R2,#1
JMPR CC_NZ,WAIT2
JMPR CC_UC,RECEIVE

LASTBIT: POP R3
POP R2
RET

;*************** CHARACTER OUTPUT-ROUTINE *******************

OUTCHAR: PUSH R2
PUSH R3
PUSH R4
OR R4,#0100H ; Insert stopbit
SHL R4,#1 ; Insert startbit
MOV R3,#10 ; Bit counter

NEXTBIT: ASHR R4,#1
BMOV T_LINE,C ; Bit output

MOV R2,DPP0:C_VAR3
WAIT: SUB R2,#1
JMPR CC_NZ,WAIT ; Baud rate generation

SUB R3,#1
JMPR CC_NZ,NEXTBIT ; Last bit ?

POP R4 ; Yes
POP R3
POP R2
RET

CLR_TI: RET ; IS NOT USED

SET_TI: RET ; IS NOT USED

CLR_RI: RET ; IS NOT USED

CLR_SER_IE: RET ; IS NOT USED

SET_SER_IE: RET ; IS NOT USED

RD_RIE: RET ; IS NOT USED

RD_TIE: RET ; IS NOT USED

WR_RIE: RET ; IS NOT USED

WR_TIE: RET ; IS NOT USED

WR_RIR: RET ; IS NOT USED

WR_TIR: RET ; IS NOT USED

BEFORE_GO: RET ; IS NOT USED


AFTER_GO: SCXT MDC,#010H
PUSH MDH
PUSH MDL
MOV DPP0,#PAG MON166_W_DATA
MOV R1,DPP3:BUSCON0 ; Programmed number of waitstates
AND R1,#000FH
MOV R2,#15
SUB R2,R1 ; ACT = State times for one
ADD R2,#3 ; external memory access
MOV R1,DPP3:BUSCON0
SHR R1,#5
AND R1,#0001H
SUB R2,R1
JNB BUSCON0.6,NMBUS
ADD R2,#1 ; Multiplexed bus

NMBUS: MOV R3,#14 ; Non-multiplexed bus
JB BUSCON0.7,BIT_16_1
ADD R3,#13 ; 8-Bit bus (16 ACTs)
BIT_16_1: MOV R13,#STATES_PER_BIT ; 16-Bit bus (8 ACTs)
MUL R3,R2 ;
SUB R13,MDL
SUB R13,#4
SHR R13,#2 ; Remaining states for loop
MOV DPP0:C_VAR2,R13

MOV R13,#STATES_PER_BIT ; Multiply by 1.5
MOV R3,R13
SHR R3,#1
ADD R13,R3

MOV R3,#11
JB BUSCON0.7,BIT_16_2
ADD R3,#14; ; 8-Bit Bus
BIT_16_2: MUL R3,R2
SUB R13,MDL
SUB R13,#2
SHR R13,#2
MOV DPP0:C_VAR1,R13

MOV R13,#STATES_PER_BIT
MOV R3,#13
JB BUSCON0.7,BIT_16_3
ADD R3,#10 ; 8-Bit Bus
BIT_16_3: MUL R3,R2
SUB R13,MDL
SUB R13,#4
SHR R13,#2
MOV DPP0:C_VAR3,R13
POP MDL
POP MDH
POP MDC
RET

$ENDIF

INSTALLCODE ENDP
INIT_CODE ENDS

END



Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru