Показать сообщение отдельно
Старый 05.08.2010, 08:26   #513   
Форумец
 
Сообщений: 8
Регистрация: 24.07.2010
Возраст: 35

BOURNE вне форума Не в сети
Пришел мне по почте 18f4550, рад , что могу начать осваивать
Почитал даташит и состряпал небольшую программку на асме, которая выводит в порт В бегущий огонек, в симуляции мплаб и в протеусе все работает превосходно, но собрал на макетке в железе, и получилось так,что результат не соответствует ожиданиям
Во-первых, на выводах порта Б логическая единица почему-то 1В, и диоды горят очень блекло. Во-вторых, бегущего огонька- нет, сначала могут загореться все светодиоды, а потом выключишь-включишь питание, и горит всего один. использую внутренние синхроимпульсы.
У меня предположение, что возможно это происходит из-за того , что я неправильно устанавливаю биты конфигурации для задания этих импульсов. Покажите пожалуйста как правильно записывать конфигурацию для мк и как правильно использовать внутренний синхрогенератор, потому что запутался какой регистр надо использовать osccon или osctune
Код на асм:

;бегущий огонек,модель 2(с таймером_0 и прерыванием)
;порт В-активен,TMR0,внутренний генератор
list p=18f4550
osccon equ 0xfd3
intcon equ 0xff2
intcon2 equ 0xff1
adcon1 equ 0xfc1
tmr0 equ 0xfd6
tmr0l equ 0xfd6
tmr0h equ 0xfd7
t0con equ 0xfd5
status equ 0xfd8
trisb equ 0xf93
portb equ 0xf81
latb equ 0xf8a

org 00
goto start

org 0x000008
goto interrupt

org 0x12
start
movlw b'0110011'
movwf osccon ;конфигурация осциллятора
movlw b'10100000'
movwf intcon ; установка прерывания
bcf intcon2,7 ; pull-up для выводов порта В(но на выводах все -равно 1В)
movlw 0x00
movwf trisb ;порт Б на выход
movlw 0x0f
movwf adcon1 ; выводы digital
movlw b'00000001'
movwf latb ; зажигаю первый светодиод
bcf status,0
movlw b'10000101'
movwf t0con ; установка таймера
clrf tmr0l ; его очистка
loop
nop
goto loop

org 0x0c
interrupt
rlcf latb,1
bcf intcon,2 ; очистка флага прерывания
retfie
end
Буду признателен за помощь
  Ответить с цитированием