|
Помогите чайнику !
Осваиваю работу с прерываниями для AT89C51.
Налабал прогу, но что-то не фурычит.
Посмотирте кому не в лом. Где грабли.
Или киньте какой-нибудь рабочий примерчик пжлст !
Компилятор Franklin.
Заранее спасибо.
$INCLUDE (REG51.INC)
CSEG
ORG 0000h
AJMP MAIN
ORG 000BH
reti;AJMP INDY
ORG 0023H
AJMP SERIAL
WREN EQU P1.7 ;выход управления напрвлением передачи для MAX485
svdiod EQU P1.6 ;Управление светодиодом
MAIN:
clr ea
MOV SP,#078H ; установка вершины стека 78Н-7FH
CLR TR1 ;остановка таймера 1
mov PCON,#80H ;удвоение частоты =on
MOV SCON,#07Ch ;
MOV TMOD,#021H ;установка режима работы таймеров
MOV TH0,#0FCH ;период 10 мс
MOV TL0,#06CH ;младший байт
MOV TH1,#0FDh ;константа для скорости 9600
SETB ES ;ВКЛЮЧЕНИЕ ПРЕРЫВАНИЯ от СОМ порта
SETB PS ;Установка приоритета на СОМ
CLR PT0
SETB ET0 ;прерывание по таймеру вкл
SETB TR0 ;Запуск таймера
SETB TR1 ;запуск таймера СОМ порта
SETB EA ;Разрешение прерываний
clr wren
lop:
nop
ajmp lop
SERIAL:
jnb ri,nori
clr svdiod
CLR EA
PUSH PSW
SETB PSW.4 ;
CLR PSW.3 ;Банк регистров 2 , для ПОРТА
PUSH ACC
CLR RI
MOV A,SBUF
setb wren
MOV SBUF,A ;TRANSMIT SYMBOL
L1: JNB TI,L1 ;WAIT FOR END OF TRANS. SYMBOL
CLR TI
MOV R0,#255
MOV R1,#255
MAIN1:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R0,MAIN1
DJNZ R1,MAIN1
clr wren
setb svdiod
SER1: POP ACC
POP PSW
SETB EA
nori:
RETI
END
E-mail: info@telesys.ru