MC51 - T2CON problem

magixe magixe@volny.cz
Sobota Leden 15 17:55:58 CET 2005


Dobrý den všem - pokusím se popsat svuj problém .

"Hraji" si zde s 89C51ED2 a měl jsem udělaný seriový kanal pomocí T1
(9600,8,n,1)
V hlavní smyčce jsem si "Oblizoval" RI bit  čímž jsem si zjistil že přišel
byte do SBUF o:))

No přislo na to že jsem potřebovat T0 i T1 pro jiný učel  a tak chci použít
T2 jako generátor
pro UART .
 T0 používám jako časovač  , a T1 tež jako časovač ale v INTU


Nuže po startu procu dělám toto >>
(Je to psáno v MC ale myslím že je to čitelné)

Procedure Init         ; RS232, SINGLE  processor
WrSp 80h               ; Stack POinter

WrTH1  DCh
WrTL1  00h
WrTH0  252
WrTL0  122

WrAdr RCAP2L B1h       ; RCAP2L
WrAdr RCAP2H FFh       ; RCAP2H  pro K= 9600 Baud
WrT2CON 00110100b     ; PREHOZENI RS232 NA T2 aby byl T1 volny ?

WrTMOD  00010001b      ; timer1: 16Bit , timer0: 16 Bit
WrTCON  01010000b      ; start timer 0 and 1
WrSCON  01010010b      ; init RS232: mode 1
WrPCON  10000000b      ; 80H, SMOD=1
WrIE 10001000b         ; counter 1 Interrupt Enabled
A 255
WrP0
WrP2
WrP3
WrP1                   ; Hodime porty do H

----------------------------------------------------------------------------
-------
No to sice funguje ale z nějakého "blbého" duvodu si to vubec nevšímá RI
bitu v hl smyčce.
Když dám zpět T1 na kanál UART tak to funguje jak z praku.



Našel jsem si tedy na stránkách atmelu jejich demo kde je ukázáno jak se
T2CON pracuje a spáchal jsem to podle nich


Procedure Init         ; RS232, SINGLE  processor
WrSp 80h               ; Stack POinter
WrSCON  01010000b      ; init RS232: mode 1 REN ON
WrT2CON 00110000b      ; PREHOZENI RS232 NA T2 aby byl T1 volny ?
WrAdr RCAP2H FFh       ; RCAP2H  pro K= 9600 Baud
WrAdr RCAP2L B1h       ; RCAP2L
SetBit TR2             ; T2 run

WrTH1  DCh
WrTL1  00h
WrTH0  252             ; divide by 942 : 1ms
WrTL0  122
WrTMOD  00010001b      ; timer1: 16Bit , timer0: 16 Bit
WrTCON  01010000b      ; start timer 0 and 1
WrPCON  10000000b      ; 80H, SMOD=1
WrIE 10001000b         ; counter 1 Interrupt Enabled
A 255
WrP0
WrP2
WrP3
WrP1                   ; Hodime porty do H

-------------------------------------------------

To ovšem nefunguje vubec a nejede ani hl smyčka - procesor je tuhý o:)))
Takže kdo mě prosím nakope a vysvětlí co je blbě - pdf jsem prolez ....

Pro koho je to nečitelný pošlu i ASM ...













Další informace o konferenci Hw-list