Перейти к содержанию

Афанасий Яковлев

Members
  • Постов

    3
  • Зарегистрирован

  • Посещение

Электроника

  • Стаж в электронике
    Менее года

Достижения Афанасий Яковлев

Новичок

Новичок (1/14)

  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме

Последние значки

0

Репутация

  1. Спасибо Геннадий, по вашему совету получилось. Вы правы на счет того что я не представляю как работают МК. Спасибо за раб пример. Думаю тема закрыта. Всем бооольшое спасибо за ваши отзывчивость!!!
  2. А цель проста для интереса, и еще я заметил что на ASM бинарный код получается намного меньшего размера чем на си. На си писать меньше, а на ASM больше, но код получается меньше. И еще потому что я начинаю на ATTINY13A у которой флэш память на 1Кб. На си работает как надо(или как задумывалось), а на асм нет=) вот я и спрашиваю у ASM пишущих. Как сказал @snn_krs попробую тогда на флаг переполнения.
  3. .include "tn13Adef.inc" ; Macros ##################################################### ;RAM segment .dseg ;Program segments FLASH .cseg ;Interupts ##################################################### .org 0x00 rjmp RESET ; Reset Handler 0x0000 ;rjmp EXT_INT0 ; IRQ0 Handler 0x0001 ;.org 0x02 ;rjmp PCINTGO ; PCINT0 Handler 0x0002 ;rjmp TIM0_OVF ; Timer0 Overflow Handler 0x0003 ;rjmp EE_RDY ; EEPROM Ready Handler 0x0004 ;rjmp ANA_COMP ; Analog Comparator Handler 0x0005 ;rjmp TIM0_COMPA ; Timer0 CompareA Handler 0x0006 ;rjmp TIM0_COMPB ; Timer0 CompareB Handler 0x0007 ;rjmp WATCHDOG ; Watchdog Interrupt Handler 0x0008 ;rjmp ADC ; ADC Conversion Handler 0x0009 ;Initial ##################################################### RESET: ;initial STACK LDI R16, RAMEND OUT SPL, R16 ;set counter bit in 0 LDI R16, 0x00 OUT TCNT0, R16 ;select timer clok LDI R16, 0x05 OUT TCCR0B, R16 LDI R20, 0x25 LDI R21, 0x07 ;port setting LDI R16, 0x07 OUT DDRB, R16 LDI R16, 0x00 OUT PORTB, R16 start: LDI R17, 0xff IN R1, TCNT0 CP R17, R1 BREQ incr rjmp start incr: inc R18 CP R18, R20 BREQ LedOn rjmp start LedOn: IN R16, PORTB EOR R16, R21 OUT PORTB, R16 LDI R18, 0x00 rjmp start Здрастье, я новичок в деле авр, наверху код который был переведен с си на асм результат работы не должно было отличаться от си, но что то оно работает не так как хотелось бы. Частота мигание диодов слишком частое. В чем может быть ошибка? Фюзы выставлены так чтобы частота МК была 9.6 МГец Формула расчета ПерТ0 = 1024/ЧастМК Примерное переполнение Счетчика 37 раз что приблизительно 1 сек. Но как уже писал оно не 1с а намного меньше . Внизу код из си #include <avr/io.h> //PB0-2 led int i = 0; int main(void){ DDRB = 0x07; PORTB = 0x00; TCNT0 = 0x00; TCCR0B = 0x05; while(1){ if (TCNT0 == 255){ i++; TCNT0 = 0x00; } if (i == 37){ PORTB ^= 0x07; i = 0; } } }
×
×
  • Создать...