Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

А CV позволяет копировать 16-битные регистры в переменные целиком?...

Отправлено Dikoy 17 апреля 2008 г. 17:10


(пользую 1.25.5 pro и ATtiny2313). Он позволяет копировать в переменные 16-и битные регистры целиком?
То есть вместо:

unsigned int Int_Stop_Time;

Int_Stop_Time = ((TCNT1H<<8) | TCNT1L);

написать:

Int_Stop_Time = TCNT1;

Компилятор это пропускает, но если на первый вариант в ассемблерном листинге вполне понятные сдвиги/копирования, то на второй он генерит что-то мне непонятное... Сначала думал, что он только младший байт копирует, но не похоже... Кто-нибудь так делал когда-нибудь? Я и раньше замечал, что он пропускает такие конструкции, но предпочитал пользоваться провереным способом. А сейчас время выполнения жмёть...

Вот что он генерит на оба варианта:

; 47 // External Interrupt 1 service routine
; 48 interrupt [EXT_INT1] void ext_int1_isr(void)
; 49 {

.CSEG
_ext_int1_isr:
ST -Y,R0
ST -Y,R26
ST -Y,R30
IN R30,SREG
ST -Y,R30
; 50 if(Int_Marker != OCCUPIED) {
LDI R30,LOW(252)
CP R30,R2
BREQ _0x3
; 51 Int_Start_Time = TCNT1;
__INWR 4,5,44
; 52 MCUCR &= ~(1<<ISC10); // to falling mode
IN R30,0x35
ANDI R30,0xFB
OUT 0x35,R30
; 53 Int_Marker = OCCUPIED;
LDI R30,LOW(252)
RJMP _0x9
; 54 } else {
_0x3:
; 55 Int_Stop_Time = ((TCNT1H<<8) | TCNT1L);
IN R30,0x2D
MOV R26,R30
LDI R30,LOW(8)
RCALL __LSLB12
MOV R26,R30
IN R30,0x2C
OR R30,R26
MOV R6,R30
CLR R7
; 56 // Int_Stop_Time = TCNT1;
; 57 MCUCR |= (1<<ISC10); // to rising mode
IN R30,0x35
ORI R30,4
OUT 0x35,R30
; 58 Int_Marker = SET;
LDI R30,LOW(238)
_0x9:
MOV R2,R30
; 59 }
; 60 }
LD R30,Y+
OUT SREG,R30
LD R30,Y+
LD R26,Y+
LD R0,Y+
RETI
; 61



Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 234:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru