AT89C51ED2

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Russian to

Threaded View
Привет All!

Сабж прошивать научился, только вот никак не хочет по UART'у работать. Вот так
я начальную инициализацию произвожу:
        clr     tro
        clr     tr1
        mov     scon,#01011010b
        tmod    #10h
        mov     t2con
        anl     pcon,#7Fh
        mov     BDRCON,#1Ch
        mov     a,#7Dh
        mov     BRL,A
Пытаюсь тактовую частоту подать прямо с внутреннего генератора, не используя
таймеры. Может кто подскажет, что я делаю не так. И еще надо включать режим в
котором команды выполняются за 6 тактов, или не обязательно. Может кто
подскажет, что я делаю не так ? Кто-нибудь пытался использовать такой режим ?

     С уважением, Ivan Melnikov        Среда Июнь 08 2005 23:00.


... "С кем поведёшься, так тебе и надо!"

AT89C51ED2
Hello Ivan.

Wed Jun 08 2005 23:00, Ivan Melnikov wrote to All:

 IM> Сабж прошивать научился, только вот никак не хочет по UART'у работать.
 IM> Вот так я начальную инициализацию произвожу:

Вот тебе моя инициализация, поправь что нужно, выкинь что не нужно - должно
работать. :)  Хотя я сейчас обратил внимание, что у тебя ED2 - я такого
кристалла не знаю, работал только с RD2, изучал RB2/RC2/RD2.


Reset:  mov     SP,#STKPTR        ;загрузка указателя стека

;                      M0  EXTRAM ;
;                       │XS1│     ;AUXR.5=M0      ext. XRAM timing
;                       │ │ │     ;
        mov     AUXR,#00001100b   ;AUXR.3=XRS1    internal XRAM size
;                          │ │    ;AUXR.2=XRS0    025%6..310%24
;                         XS0│    ;AUXR.1=EXTRAM  external XRAM enable
;                            AO   ;AUXR.0=AO      ALE output


;                      PCAX T0X    ;CKCON.6=WDX2   WD   x2 off
;                        │T2X│     ;CKCON.5=PCAX2  PCA  x2 off
;                        │ │ │     ;CKCON.4=SIX2   UART x2 off
        mov     CKCON,#01010111b   ;CKCON.3=T2X2   T2   x2 off
;                       │ │ │ │    ;CKCON.2=T1X2   T1   x2 off
;                      WDX│T1X│    ;CKCON.1=T0X2   T0   x2 off
;                        SIX  X2   ;CKCON.0=X2     X2 mode ON



        clr     a               ;очистка ОЗУ
        mov     r0,#0
        DO
          mov     @r0,a
        LOOP    djnz,r0

;инициализация таймеров 0 и 1

        mov     TMOD,#22h       ;режим 2 - автозагрузка
        mov     TH0,#RLD_E
        mov     TH1,#RLD_E

;инициализация прерываний
;                               ;IE.7EA%   Общее разрешение прерываний
;                    ET2 ET0    ;IE.6EC%   Прерывание от PCA
;                  EA │ET1│     ;IE.5=ET2  ... от таймера 2 (8052)
;                   │ │ │ │     ;IE.4=ES   ... от UART
        mov     IE,#11101010b   ;IE.3=ET1  ... от таймера 1
;                    │ │ │ │    ;IE.2=EX1  ... от INT1
;                    │ES │EX0   ;IE.1=ET0  ... от таймера 0
;                   EC  EX1     ;IE.0=EX0  ... от INT0
;


;                    TF0 IE0    ;TCON.7=TF1  флаг прерывания таймера 1
;                  TF1│IE1│     ;TCON.6=TR1  запуск таймера 1
;                   │ │ │ │     ;TCON.5=TF0  флаг прерывания таймера 0
        mov   TCON,#01010101b   ;TCON.4=TR0  запуск таймера 0
;                    │ │ │ │    ;TCON.3=IE1  был падающий фронт на INT1
;                    │TR0│IT0   ;TCON.2=IT1  прерывание по фронту на INT1
;                   TR1 IT1     ;TCON.1=IE0  ... на INT0
;                               ;TCON.0=IT0  ... на INT0


        mov     RCAP2H, # > RLD_U    ;значение авто-перезагрузки таймера 2
        mov     RCAP2L, # < RLD_U    ; (делитель для UART)

;                   RCLK C/T2   ;T2CON.7=TF2    переполнение таймера 2
;                  TF2│XN2│     ;T2CON.6=EXF2   переполнение от внеш. сигнала
;                   │ │ │ │     ;T2CON.5=RCLK   приемник UART - от таймера 2
        mov  T2CON,#00110100b   ;T2CON.4=TCLK   передатчик UART ---
;                    │ │ │ │    ;T2CON.3=EXEN2  разрешение реакции на T2EX
;                    │TCK│CP/RL2;T2CON.2=TR2    запуск таймера 2
;                  EXF2 TR2     ;T2CON.1=C/T2   1: счетчик, 0: таймер
;                               ;T2CON.0=CP/RL2 1: capture, 0: reload


; Устанавливаем приоритеты прерываний

                                ;ПРИОРИТЕТ ПРЕРЫВАHИЯ (IP:LOW BYTE IPH: HIGH)
;                    PT2 PT0
;                     │PT1│     ;IP.6=PPC  ... PCA
;                     │ │ │     ;IP.5=PT2  ... таймера 2 (8052)
        mov    IPH,#00000000b   ;IP.4=PS   ... RS-232
        mov     IP,#00001111b   ;IP.3=PT1  ... таймера 1
;                    │ │ │ │    ;IP.2=PX1  ... INT1
;                    │PS │PX0   ;IP.1=PT0  ... таймера 0
;                   PPC PX1     ;IP.0=PX0  ... INT0


;                        CPS0
;                         │     ;CMOD.2=CPS1    00 CPer/6 01 CPer/2
        mov  CMOD, #00000001b   ;CMOD.1=CPS0    10 T0 OVR 11 P1.2 pin
;                        │ │    ;CMOD.0  Enable INT
;                        │ECF
;                       CPS1

;                   CR          ;CCON.7CF%  PCA FLAG
;                    │          ;CCON.6=CR  PCA RUN
        mov  CCON, #01000000b   ;
;                   │           ;CCON.0..CCON.4 -> CCF0..CCF4
;                   CF

        mov     WDTPRG,#7

        mov     DPTR,#0         ;очистка XRAM
        DO
          clr     a
          movx    @DPTR,a
          inc     DPTR
          mov     a,DPH
        LOOP    ne,a,#>XEND


        call    InitRS          ;Инициализация встроенного UART

        setb    EA

        ... >>> переходим к главному циклу


; подпрограмма инициализации UART

InitRS:

;
;                      SM2  TI    SCON.7  SM0 ─┐
;                    SM0│TB8│     SCON.6  SM1 ─┼─ режим (бит 7 - младший)
;                     │ │ │ │     SCON.5  SM2 ─┘
SCON_INIT0      equ   01011110b ; SCON.4  REN     разрешение приема
;                      │ │ │ │    SCON.3  TB8     toTransmit Bit 8
;                     SM1│RB8│    SCON.2  RB8     Received Bit 8
;                       REN  RI   SCON.1  TI      флаг окончания передачи
;                                 SCON.0  RI      флаг принятого байта

        orl     PCON,#80h       ;Double rate
        mov     SCON,#SCON_INIT0

        mov     a,SBUF          ;очистка приемника

        ret


Quoted text here. Click to load it


bit7    equ     10000000b
bit6    equ     01000000b
bit5    equ     00100000b
bit4    equ     00010000b
bit3    equ     00001000b
bit2    equ     00000100b
bit1    equ     00000010b
bit0    equ     00000001b


AUXR    reg     08Eh
mAO     equ     bit0    ;ALE output 0 STD  1 BLOCK
mEXTRAM equ     bit1    ;access internal XRAM = 0
mXRS0   equ     bit2    ;XRAM size (11 = 1024)
mXRS1   equ     bit3
mM0     equ     bit5    ;1: stretch external RAM RD/WR timing

AUXR1   reg     0A2h    ;note: INC AUXR1 correctly swaps DPTR0/DPTR1
mDPS    equ     bit0    ;select DPTR
mENBOOT equ     bit5    ;1: enable boot rom


CKCON   reg     08Fh    ;Clock control
mX2     equ     bit0    ;X2 mode=1
mT0X2   equ     bit1    ;Timer 0 -- X2 OFF = 1
mT1X2   equ     bit2    ;Timer 1
mT2X2   equ     bit3    ;Timer 2
mSIX2   equ     bit4    ;UART
mPCAX2  equ     bit5    ;PCA
mWDX2   equ     bit6    ;Watchdog


WDTRST  equ     0A6h    ;WDT Reset : to run/reset WDT write 01E 0E1
                        ; (at 12 MHz):
WDTPRG  equ     0A7h    ;0    1    2    3    4    5    6   7
                        ;16ms 32ms 65ms 131  262  542  1s  2s

IPL     equ     0B8h    ;lower  priority bits

iPX0    reg     IPL.0   ;eXternal 0     (REG for direct bit access)
iPT0    reg     IPL.1   ;Timer 0
iPX1    reg     IPL.2   ;eXternal 1
iPT1    reg     IPL.3   ;Timer 1
iPS     reg     IPL.4   ;Serial
iPT2    reg     IPL.5   ;Timer2
iPPC    reg     IPL.6   ;PCA


IPH     equ     0B7h    ;higher priority bits

mPX0    equ     bit0    ;eXternal 0
mPT0    equ     bit1    ;Timer 0
mPX1    equ     bit2    ;eXternal 1
mPT1    equ     bit3    ;Timer 1
mPS     equ     bit4    ;Serial
mPT2    equ     bit5    ;Timer2
mPPC    equ     bit6    ;PCA

PCL     equ     0E9h    ;PCA counter LOW
PCH     equ     0F9h    ;PCA counter HIGH

CMOD    equ     0D9h    ;PCA counter mode

mECF    equ     bit0    ;enable counter overflow INT
mCPS0   equ     bit1    ; 0  CPeri/6  1 CPeri/2
mCPS1   equ     bit2    ;10 T0 OVR   11 P1.2 pin
mWDTE   equ     bit6    ;PCA WDT enable
mCIDL   equ     bit7    ;counter idle control

CCON    reg     0D8h

iCR     reg     CCON.6  ;start PCA counter
iCF     reg     CCON.7  ;PCA overflow/int

EECON   reg     0D2h    ;RD2 ONLY!  EEPROM control register

mEEBUSY equ     bit0    ;EEPROM busy
mEEE    equ     bit1    ;EE space mapping


EETIM   reg     0D3h    ;RD2 ONLY!  EEPROM timer register

FCON    reg     0D1h    ;FLASH programming register

mFBUSY  equ     bit0    ;FLASH busy
mFPS    equ     bit3    ;FLASH space mapping


Dimmy.


Re: AT89C51ED2
Здравствуй, All!


Как сабж жить ?


           C уважением, Pavel.

Re: AT89C51ED2
 

"Pavel Merkulov" сообщил в новостях следующее:
Quoted text here. Click to load it
-------------^^^^
Quoted text here. Click to load it
Я так понял шить? Если да, то береш прогу у атмела "flip",
делаеш плату с панелькой под сабж и ставиш на нее MAX232 или аналог.
Ну и радуешся жизни.




Site Timeline