roboforum.ruТехнический форум по робототехнике. |
|
|
brvc _s_100
_s_d2b:
ldi res1, 0 ; старший
ldi res2, 0 ; младший
ld tmp1, x+
_s_100:
subi tmp1, 1
brcs _s_end_100
subi res2, 0x9C
sbci res1, 0xFF
rjmp _s_100
_s_end_100:
ld tmp1, x+
_s_10:
subi tmp1, 1
brcs _s_end_10
subi res2, 0xF6
sbci res1, 0xFF
rjmp _s_10
_s_end_10:
ld tmp1, x
add res2, tmp1
ldi tmp1, 0
adc res1, tmp1
_s_end:
ret
Полностью в код не вникал, но вот такие строчки мне тут не нравятся: ...
Флаг V используется только при работе с данными со знаком - вероятнее всего ошибка именно в этом.
SiemX писал(а):Что будет если к меге16 подключить кварц на 17.734 мгц?
#include <tiny45.h>
#include <delay.h>
// Analog Comparator interrupt service routine
interrupt [ANA_COMP] void ana_comp_isr(void)
{
PORTB.2=ACSR.5; // вывод состояния бита ACO в Порт B бит 2
delay_ms(20);
}
void main(void)
{
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
// Input/Output Ports initialization
// Port B initialization
// Func5=In Func4=In Func3=In Func2=Out Func1=In Func0=In
// State5=T State4=T State3=T State2=0 State1=T State0=T
PORTB=0x00;
DDRB=0x04;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFh
// OC1A output: Disconnected
// OC1B output: Disconnected
// Timer 1 Overflow Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
PLLCSR=0x00;
TCCR1=0x00;
GTCCR=0x00;
TCNT1=0x00;
OCR1A=0x00;
OCR1B=0x00;
OCR1C=0x00;
// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x00;
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
USICR=0x00;
// Interrupt on Output Toggle
ACSR=0x08;
// Global enable interrupts
#asm("sei")
while (1){};
};
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4