ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
152526 Топик полностью
Сергей Борщ (02.04.2009 01:11, просмотров: 207) ответил Sergfs на Если числo 0хFFFFF450 "магическое" то много экономии не будет точно;-) во всяком случае по скорости.
А, то есть должны найтись желающие перевести 0x00000088 в двоичный вид, открыть даташит, найти каким битам это соответствует и после этого думать - правильно это или нет? Я предоставил вам возможность сделать то же самое в обратном порядке - переведите T0_ENABLED | T0_PERIODIC | T0_DIV_1 в шестнадцатиричный вид. Эта комбинация 100% работает. Для поиска ошибки в вашем коде надо еще проверить, действительно ли 0xfffff450 - адрес gp1dat. Ну и нафига выполнять лишнюю работу? Принцип IBM гласит: "Машина должна работать, а человек - думать". Так вот пусть компилятор (если уж очень хотите - ассемблер) подставляет адрес вмеcто irqen, t0con и числовые значения на место T0_ENABLED. Он умеет это делать моментально и в отличие от вас ни разу не ошибется. Выкладывая такой код вы показываете неуважение к участникам конференции - неужели трудно было удалить закомментированные участки? Почему кто-то должен разбираться где играем, где не играем, а где рыбу заворачивали? Что будет делать ваша программа, проинициализировав таймер? Где настройка стеков?
Если числo 0хFFFFF450 "магическое"
Любое число, появляющееся в тексте программы вместо символического имени является магическим. Потому что если вы напишете 0хFFFFE450 или 0хFFFFF460 - искать ошибку будете долго. Не говоря уже о том сколько кода вам придется перелопатить, если вы переместите светодиод на другой порт. P.S. Вот вам пример кода, сгенерированного компилятором:
    PLLKEY1 = 0xAA;
   10540:	e3e02cfb 	mvn	r2, #64256	; 0xfb00
   10544:	e3a030aa 	mov	r3, #170	; 0xaa
   10548:	e1423ebf 	strh	r3, [r2, #-239]
    PLLCON = PLL_INTERNAL_CLK | CLK_INT_PLL;
   1054c:	e3a03021 	mov	r3, #33	; 0x21
   10550:	e54230eb 	strb	r3, [r2, #-235]
    PLLKEY2 = 0x55;
   10554:	e3a03055 	mov	r3, #85	; 0x55
   10558:	e1423eb7 	strh	r3, [r2, #-231]
А вы догадаетесь, что некоторые константы экономнее грузить через mvn Rx, #Imm, LSL N? И будете в каждой константе искать такие возможности сэкономить? В отличие от вас компилятор искать такие возможности не устанет. Судя по качеству приведенного вами кода - писать вы не умеете даже на ассемблере. Тогда откуда же у вас основания для рассуждений о небходимых объемах кода для С? Так что "Нудануда" - это к вам.