Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: не загружается программа
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
sergey sva
Здравствуйте.
Помогите разобраться с такой проблемой, контроллер 89с51ed2 после включения питания не запускается программа. подключение ног контроллера такое : RST кондер к + и резистор к минусу. EA ALE_PROG PSEN к + . для программирования устанавливаю на PSE 0 (на плате джампер) запускается бут лоадер,
если из него запустить программу (кнопка flip start aplication) то все работает, а если снять джампер то есть на psen + . то программа не стартует. пробовал устанавливать бит BLGB и снимать, результат прежний.
Палыч
BLJB должен быть незапрограммирован (BLJB=1), т.е. во Flip галки стоять не должно. Но, помниться, что в одной из партий Т89С51АС2 от Atmel W&M этот бит работал строго наоборот. Надеюсь, что когда Вы снимали галку с BLJB, то после этого нажимали кнопку "Set device special bytes". Можно еще посоветовать установить BSB в ноль (не забудьте нажать кнопку "Set..."). Кстати, результат установки Special Bytes можно (и нужно) проверить кнопкой "Reads device special bytes".
sergey sva
Цитата(Палыч @ Dec 7 2007, 19:43) *
BLJB должен быть незапрограммирован (BLJB=1), т.е. во Flip галки стоять не должно. Но, помниться, что в одной из партий Т89С51АС2 от Atmel W&M этот бит работал строго наоборот. Надеюсь, что когда Вы снимали галку с BLJB, то после этого нажимали кнопку "Set device special bytes". Можно еще посоветовать установить BSB в ноль (не забудьте нажать кнопку "Set..."). Кстати, результат установки Special Bytes можно (и нужно) проверить кнопкой "Reads device special bytes".


а за что отвечают биты BSB EB SBV? в моей версии флип нет такой кнопки.
sergey sva
Код
$NOMOD51

; Standard SFR Symbols
ACC     DATA    0E0H
B       DATA    0F0H
SP      DATA    81H
DPL     DATA    82H
DPH     DATA    83H

                NAME    ?C_STARTUP


?C_C51STARTUP   SEGMENT   CODE
?STACK          SEGMENT   IDATA

                RSEG    ?STACK
                DS      1

                EXTRN CODE (?C_START)
                PUBLIC  ?C_STARTUP

                CSEG    AT      0
?C_STARTUP:     LJMP    STARTUP1

                RSEG    ?C_C51STARTUP




STARTUP1:            
                MOV     0x8E, 0x10                                  ; [b]вот если убираю  эту строчку то программа начинает
                                                            ; запускаться но размер  XDATA уменьшается до 256 вместо
                                                            ;1792[/b]


IF IDATALEN <> 0
                MOV     R0,#IDATALEN - 1
                CLR     A
IDATALOOP:      MOV     @R0,A
                DJNZ    R0,IDATALOOP
ENDIF

IF XDATALEN <> 0
                MOV     DPTR,#XDATASTART
                MOV     R7,#LOW (XDATALEN)
  IF (LOW (XDATALEN)) <> 0
                MOV     R6,#(HIGH (XDATALEN)) +1
  ELSE
                MOV     R6,#HIGH (XDATALEN)
  ENDIF
                CLR     A
XDATALOOP:      MOVX    @DPTR,A
                INC     DPTR
                DJNZ    R7,XDATALOOP
                DJNZ    R6,XDATALOOP
ENDIF

IF PPAGEENABLE <> 0
                MOV     PPAGE_SFR,#PPAGE
ENDIF

IF PDATALEN <> 0
                MOV     R0,#LOW (PDATASTART)
                MOV     R7,#LOW (PDATALEN)
                CLR     A
PDATALOOP:      MOVX    @R0,A
                INC     R0
                DJNZ    R7,PDATALOOP
ENDIF

IF IBPSTACK <> 0
EXTRN DATA (?C_IBP)

                MOV     ?C_IBP,#LOW IBPSTACKTOP
ENDIF

IF XBPSTACK <> 0
EXTRN DATA (?C_XBP)

                MOV     ?C_XBP,#HIGH XBPSTACKTOP
                MOV     ?C_XBP+1,#LOW XBPSTACKTOP
ENDIF

IF PBPSTACK <> 0
EXTRN DATA (?C_PBP)
                MOV     ?C_PBP,#LOW PBPSTACKTOP
ENDIF

                MOV     SP,#?STACK-1

; This code is required if you use L51_BANK.A51 with Banking Mode 4
;<h> Code Banking
; <q> Select Bank 0 for L51_BANK.A51 Mode 4
#if 0  
;     <i> Initialize bank mechanism to code bank 0 when using L51_BANK.A51 with Banking Mode 4.
EXTRN CODE (?B_SWITCH0)
                CALL    ?B_SWITCH0; init bank mechanism to code bank 0
#endif
;</h>
                LJMP    ?C_START

                END
sergey sva
Цитата(sergey sva @ Dec 8 2007, 13:58) *
Код
$NOMOD51

; Standard SFR Symbols
ACC     DATA    0E0H
B       DATA    0F0H
SP      DATA    81H
DPL     DATA    82H
DPH     DATA    83H

                NAME    ?C_STARTUP
?C_C51STARTUP   SEGMENT   CODE
?STACK          SEGMENT   IDATA

                RSEG    ?STACK
                DS      1

                EXTRN CODE (?C_START)
                PUBLIC  ?C_STARTUP

                CSEG    AT      0
?C_STARTUP:     LJMP    STARTUP1

                RSEG    ?C_C51STARTUP
STARTUP1:            
                MOV     0x8E, 0x10                                 ; [b]вот если убираю  эту строчку то программа начинает
                                                        ; запускаться но размер  XDATA уменьшается до 256 вместо
                                                        ;1792[/b]
IF IDATALEN <> 0
                MOV     R0,#IDATALEN - 1
                CLR     A
IDATALOOP:      MOV     @R0,A
                DJNZ    R0,IDATALOOP
ENDIF

IF XDATALEN <> 0
                MOV     DPTR,#XDATASTART
                MOV     R7,#LOW (XDATALEN)
  IF (LOW (XDATALEN)) <> 0
                MOV     R6,#(HIGH (XDATALEN)) +1
  ELSE
                MOV     R6,#HIGH (XDATALEN)
  ENDIF
                CLR     A
XDATALOOP:      MOVX    @DPTR,A
                INC     DPTR
                DJNZ    R7,XDATALOOP
                DJNZ    R6,XDATALOOP
ENDIF

IF PPAGEENABLE <> 0
                MOV     PPAGE_SFR,#PPAGE
ENDIF

IF PDATALEN <> 0
                MOV     R0,#LOW (PDATASTART)
                MOV     R7,#LOW (PDATALEN)
                CLR     A
PDATALOOP:      MOVX    @R0,A
                INC     R0
                DJNZ    R7,PDATALOOP
ENDIF

IF IBPSTACK <> 0
EXTRN DATA (?C_IBP)

                MOV     ?C_IBP,#LOW IBPSTACKTOP
ENDIF

IF XBPSTACK <> 0
EXTRN DATA (?C_XBP)

                MOV     ?C_XBP,#HIGH XBPSTACKTOP
                MOV     ?C_XBP+1,#LOW XBPSTACKTOP
ENDIF

IF PBPSTACK <> 0
EXTRN DATA (?C_PBP)
                MOV     ?C_PBP,#LOW PBPSTACKTOP
ENDIF

                MOV     SP,#?STACK-1

; This code is required if you use L51_BANK.A51 with Banking Mode 4
;<h> Code Banking
; <q> Select Bank 0 for L51_BANK.A51 Mode 4
#if 0  
;     <i> Initialize bank mechanism to code bank 0 when using L51_BANK.A51 with Banking Mode 4.
EXTRN CODE (?B_SWITCH0)
                CALL    ?B_SWITCH0; init bank mechanism to code bank 0
#endif
;</h>
                LJMP    ?C_START

                END



не пойму что я делаю не так, пробовал и через аккумулятор записывать в адрес 0x8E значение 0x10,
не чего не помогает .

MOV 0x8E, 0x10

если эу строчку убрать все ок, может нужно как то подругому записывать в регистр auxr число 0x10.
sergey sva
есть такая мысль что startup фаил выполняется не первым,
может как то можно выставить приоритет на выполнение.?
То есть получается компилятор создает такой код что сначала, заполняется буфер Xdata, а потом происходит настройка (размера xdata) регистра auxr. но если запускть,из boon loader все работает почемуто.
sergey sva
я с асмом мало работал поэтому такой вопрос, команда MOV 0x8E , 0x10 копирует значение 0x10 в регистр
по адресу 0x8E, или из адреса 0x10 в адресу 0x8E ?
DASM
Она записывает в SFR (AUXR0) по адресу 0x8E значение из памяти по адресу 0x10, то есть скорее всего мусор.
Кооректно 0x10 константу пишем так - - mov AUXR0, #10
(ye или если в хидере нет этого регистра) то mov 0x8E, #0x10
sergey sva
Цитата(DASM @ Dec 9 2007, 21:22) *
Она записывает в SFR (AUXR0) по адресу 0x8E значение из памяти по адресу 0x10, то есть скорее всего мусор.
Кооректно 0x10 константу пишем так - - mov AUXR0, #10
(ye или если в хидере нет этого регистра) то mov 0x8E, #0x10

вот блин я опростоволосился, все выходные провозился и только сейчас доперло что записывал не значение 0x10 в AUXR ,а значение из адреса 0x10 в AUXR .
сделал так и все пошло Mov 0x8E , #0x10. благодарю DASM за помощь smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.