|
|
|
|
А при P0 АСС обнулялся ? Если отыграть обратно заработает нормально ?
|
|
|
Не работает. Просто не работает. Не работают даже самые простейшие программки из 4-х строчек, если в них используется ACC. Забросил пока это дело в долгий ящик, может отлежится и пройдет. Из всех нормально заработал МК STC11F16XE, им и буду пользоваться. |
|
|
дааааа очень страная история...темная... ждем таки продолжения -фикса косяка!
|
|
|
Продолжения наверное не будет. Буду брать китайские контроллеры серии STC11. Они хоть работают. |
|
|
Может быть всё таки в церковь сходить ? Я бы понял, если один экземпляр МК глючил. Ну там кристалл с дефектом - чем чёрт не шутит. Но глюк в нескольких МК, и даже разных производителей - не верю. Во сяком случае никогда такого не наблюдал. А в своё время много проектов на семействе i8051 сделал. И в серию запускал. Как ни странно, АСС всегда работал так, как в книжке написано.
|
|
|
Я просто не понимаю что происходит. А, еще AT89C51RC заработал, он паянный, выпаян из какого-то контроллера приточно-вытяжной вентиляции. Им проверил свои параллельные программаторы, они, кстати, работают. Может статикой их все побил, я ж не церемонюсь с заземлениями. |
|
|
TEX: Я просто не понимаю что происходит Происходит простая вещь - программа ваша плохо написана и, на мой взгляд, не работает так как нужно. Из мейна программа плавно переходит в тело подпрограммы прерывания. Ну это бы ладно, но вы стек не настроили (по умолчанию он устанавливается на 0х07, а это адрес регистра R7). Затем вы выполняете две инструкции РОР, содержимое аккумулятора пишется в R7-R6. После этого вы пишете в R7-R6 константу timer_reload и затем прыгаете по этому содержимому с помощью инструкции RETI. Но timer_reload НЕ является адресом вашей программы, вы прыгаете непонятно куда. Если там куда вы прыгнули ничего не прошито, т.е. торчат 0хFF, то выполняется инструкция MOV R7,#0хFF до тех пор пока программа не придёт к адресу 0х0000. Всё опять повторится сначала. Как-то так. Добавлю. Ко всем прочим чудесам вы еще время от времени меняете содержимое регистра R7. |
|
|
То GM Если можете/хотите (можете меня очистить/исцелить, шутка а ля Спаситель) порекомендуйте действия по выяснению причины нестопроцентной работгспособности программы для PICa, которая инкрементирует ячейку ОЗУ и проверяет её на заданное число. Программа работает правильно в 90-95 процентах запуска. Глазами это видно, что электрод врезается в деталь бесконечно, а не на заданную глубину.Саму программу быстро показать не могу. |
|
|
T GM: программа ваша плохо написана Она нормально работает 1) в эмуляторе, 2 ) в протеусе 3) до этих непоняток - на любых контроллерах что есть. timer_reload - как раз адрес, я выкидываю из стека исходный адрес возврата, и кладу туда нужный мне адрес. Это из литературы, это я не сам придумал. Просто не знаю как по другому поменять адрес возврата. |
|
|
А какого черта у Вас закоментирована команда бесконечного цикла ? Ведь так вхождение в подпрограмму прерывания от таймера происходит вне зависимости от самого таймера. При каждом возникновении настоящего прерывания указатель стека продвинется на два адресса вверх и через некоторое время выйдет за пределы ОЗУ. Тогда естественно Ваши POP и PUSH потеряют смысл и на timer_reload уже никогда не попадёте. |
|
|
|
|