Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: C8051F040 первые шаги
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
ko.schulz
начал осваивать C8051F040,
с самое простое не получается,
мигание светодиодом.
Не мигает. unsure.gif
Знатоки посмотрите,
може чё подскажите.
Пишу в Keil uVision3
Шью из FlashLoad Lite 5.7.0.0
через FlashBlaster2.

Спасибо.

Код
$NOMOD51
;-----------------------------------------------------------------------------
; EQUATES
;-----------------------------------------------------------------------------
$INCLUDE (C8051F040.inc)

LED         EQU      P6.5       ; LED on target board ('0' is LED ON)
;SYSCLK      EQU      24000      ; SYSCLK frequency in kHz
;TC_10ms     EQU      (SYSCLK / 12) * 10; number of timer counts in 10ms
ROOMCODE    EQU      0xb3f0     ; left-justified ADC value for 25 degrees C.
;-----------------------------------------------------------------------------
; VARIABLES
;-----------------------------------------------------------------------------
MYDATA      SEGMENT DATA        ; declare DATA segment
            RSEG  MYDATA        ; select DATA segment
; ADC data variables
TEMPCODE:   DS    2             ; holding register for temp code (16-bit)
                                ; stored MSB-first (like in 'C' code)
;-------------------
; STACK
STACK        SEGMENT IDATA       ; declare STACK segment
        RSEG  STACK
        DS    80h           ; reserve 128 bytes for stack
;-----------------------------------------------------------------------------
CSEG AT 0
            ljmp  Main
;-----------------------------------------------------------------------------
;Interuptvektor 0x0003 - 0x00a3
;-----------------------------------------------------------------------------
; MAIN PROGRAM CODE
;-----------------------------------------------------------------------------
Temp_2      SEGMENT  CODE                ; declare CODE segment
            RSEG  Temp_2                 ; select CODE segment
            USING 0                      ; using register bank 0
Main:
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        clr    LED
            mov   WDTCN, #0deh           ; disable watchdog timer
            mov   WDTCN, #0adh
        mov   SP, #STACK-1           ; init stack pointer
            mov   OSCXCN, #01110111b; enable external crystal osc/2
            clr   A                      ; wait at least 1ms
            djnz  acc, $                 ;  wait 512us
            djnz  acc, $                 ;  wait 512us
            nop
osc_wait:                                ; poll for XTLVLD-->1
            mov   a, OSCXCN
            jnb   acc.7, osc_wait    ; OSCXCN,7 =1 -quarz rabotaet i stabilen
            mov   P6MDOUT,  #11011111b;p6.5 open drain
            mov   XBR2, #10000000b
blinker:
            setb  LED                    ; turn LED on.
            acall loop
            clr    LED                    ; otherwise, turn LED off then exit
            acall    loop
            ljmp  blinker        ; spin forever
loop:                        ;pri 24 MHz Quarz sysclock/2 = 83nS schrit
            nop                ;16581375 cykl = 1,38 Sek
            nop
            djnz  acc, loop
            djnz  b, loop
       djnz    0x1f, loop
            ret
;-----------------------------------------------------------------------------
; End of file.
        END
pr0m
Цитата(ko.schulz @ Jul 19 2007, 16:58) *
mov P6MDOUT, #11011111b;p6.5 open drain

[/code]


Если диод включен анодом к пину, а катодом к общему проводу (через резистор), то Open drain не годится - когда в порт пишется 1, ток через диод очень мал, так как протекает через внутренний pull-up резистор с довольно большим сопротивлением. Если так, то используй режим push-pull.

гм... увидел коммент в коде:
LED EQU P6.5 ; LED on target board ('0' is LED ON)
Он всё-таки анодом к +VCC. Ну код вроде верный, хотя с непонятными ненужными кусками smile.gif
С 4-го по 7-й порты включать кроссбар не нужно.
Осциллограф вам в помощь...
ko.schulz
Спасибо разобрался,
забыл страницу F переключить
когда порт 6 конфигурировал.
Angelborn
А кто-то знает, где можно скачать Кейл, 3-й например, для работы с C8051Fxxx. Да так, чтобы с лекарством! wink.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.