Микроконтроллеры | TEX учится |
|
---|---|---|
Tadas: А какого черта у Вас закоментирована команда бесконечного цикла ? А она нужна только для отладки, эмулятора, которые не умеет спать. Перед ней стоит команда перевода МК в ждущий режим: mov PCON, #001h |
|
|
TEX: Она нормально работает Где ж нормально? 2) Вы загружаете в R7 константу сс (mov R7,#cc), потом перегружаете в R7 константу #high(timer_reload) (mov A,#high(timer_reload)). После метки tmr0_isr вы вычитаете 1 из R7, но это всегда одно и тоже число, которое вы выводите в порт Р0. Ну и зачем всё это? 3) Вы не выходите из подпрограммы прерываний, поскольку в конце подпрограммы переходите на её начало, разве это нормально? Сделайте обычный цикл в конце концов, и не морочьте всем голову, что х8051 не так работают. 4) Ну чего вы упираетесь, настройте стек на 0х09, да проверьте, как будет программа работать на всех МС. TEX: Просто не знаю как по другому поменять адрес возврата. Просто напишите sjmp timer_reload, поскольку эта инструкция полный функциональный эквивалент вашему нагромождению |
|
|
Я так уже пробовал. Так программы не работают нормально. Пока не выполнено RETI, МК находится в обработке прерывания, и через несколько итераций программы (сколько там позволено вложенных прерываний) программу заклинивает. Я не упираюсь. Я удивляюсь. Программа по шагам прохоженная в эмуле, а тут мне говорят что она нерабочая |
|
|
1) Ну, вам ещё удивляться и удивляться . Проверьте стек после первого РОР, ну и второго тоже. А потом можете проверить после PUSH 2) Формально в программе нет каких-то косяков, ну кроме стека, формально программа рабочая, но вот какие чудеса она при своём выполнении вытворяет...и, главное, за каким шутом? Или чем чудней написана программа, тем модней ? |
|
|
Только что проверил. На метке cskip, SP - 09 После первого POP - 08, после второго - 07. Первый PUSH - 08, второй - 09 Ну, я не знаю как пишется правильно, я пишу, как умею. Я представляю, что создаю некое устройство, потом пытаюсь его блок-схему расписать на ассемблере. Это очень сложно, поэтому программки получаются так себе и кривые. Но я ни на что не претендую, мне и так нравится. |
|
|
Хотя бы так timer equ 65536-62500 org 0h tmr0_isr: clr TR0 |
|
|
Короче, чего-то с питанием МК (или с моими блоками питания) не т-е. Запитал МК от лития 18650 через самодельную платку преобразователя на 5В, все работает. |
|
|
А кто нибудь может объяснить про сегменты, желательно - популярно. Зачем они нужны (то что память МК делится на виды - память программ (FLASH), оперативная - регистровые банки, бит-адресумая, доступная прямо, доступная косвенно и без этого знаю, и могу это использовать), зачем их объявлять, и как вообще пользоваться этими объявлениями. Зачем писать CSEG AT 0, если можно просто написать ORG 0? Зачем мне BSEG, если я могу просто указать нужный мне адрес и номер бита? |
|
|
Это так, пока Ваши программы состоят из одного единственного модуля. |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |