Здравствуйте. У меня такая проблема, при отлаживание в VMLAB at90s2313 , вот такого участка кода
#include ‹io2313v.h›
#pragma interrupt_handler zahvatT:4
unsigned int g;
void main( ) {
DDRD=0x00;
ACSR=0X04;
TCCR1B=0X41;
SREG=128;
TIMSK=8;
while(1){
}
}
void zahvatT() {
g=ICR1L;
g |=ICR1H‹‹8;
}
VMLAB не реагирует на изменение уровня сигнала на входах компаратора, а на считывание регистра ICR1 отвечает вот так «Attempt to read in a forbidden/reserved position»
Просмотрев асм версию вот что увидел:
g=ICR1L;
B424 IN 2,0x24 In from I/O location
2433 CLR R3 Exclusive OR
92300000 STS 0x0000,R3 Store direct to data space
92200060 STS 0x0060,R2 Store direct to data space
g |=ICR1H‹‹8;
B425 IN R2,0x25 In from I/O location
2433 CLR R3 Exclusive OR
2C32 MOV R3,R2 Copy register
2422 CLR R2 Exclusive OR
90400060 LDS R4,0x0060 Load direct from data space
90500061 LDS R5,0x0061 Load direct from data space
2842 OR R4,R2 Logical OR
2853 OR R5,R3 Logical OR
92500061 STS 0x0061,R5 Store direct to data space
92400060 STS 0x0060,R4
Я чего-то не понимаю???
компилятор ICC v6.31A
отладчик VMLAB v3.12