Сейчас на форуме: Magister Yoda, vasilevradislav, tyns777, zombi-vadim (+3 невидимых) |
![]() |
eXeL@B —› Программирование —› Помогите с контроллером на ассемблере |
Посл.ответ | Сообщение |
|
Создано: 12 июня 2008 21:49 · Личное сообщение · #1 Вот код: org 0h ; переход по адресу 0h jmpa cc_UC,start ; безусловный переход на метку start org 98h ; переход по адресу 98h jmpa cc_UC, IntT6INT ; безусловный переход на метку IntT6INT org 300h ; переход по адресу 300h start: calla cc_UC,initT6 ; вызов подпрограммы без дополнительных условий mov r5, #0 LOOP: nop ; пустая операция cmp r5, #250 jmpa cc_Z, END ; безусловный переход на метку LOOP mov r2,p8 mov r1, #0f038h exts 0ffh,1 mov [r1],r2 mov buscon2, #004C0h ;Максимальное замедление. jmpa cc_UC,LOOP END: mov r6, #0 org 1068h ; переход по адресу 1068h IntT6INT: add r5,#1 ; содерхимое Т6 заносим в регистр r1 reti ; безусловный переход на метку start initT6: bclr T6CON.6 ; запретить прерывание Т6 ::: bclr - очистка бита ::: movb T6IC,#01111111b mov CAPREL,#15536 mov t6,#15536 mov T6CON,#1000000001000000b bset PSW.11 ret это программа программирующая таймер c167 режим работы по прерываниям, а надо по ожиданию прерывания сделать. ----- Research For Food ![]() |
|
Создано: 13 июня 2008 03:08 · Личное сообщение · #2 daFix пишет: это программа программирующая таймер c167 режим работы по прерываниям, а надо по ожиданию прерывания сделать. Я никогда не видел этот проц, но в принципе, что ты хочешь сделать? Прочитал предложение - не понимаю что ты спрашиваешь. Ты хочешь ждать прерывания таймера крутя цикл? Или наоборот, крутить цикл не запрашивая прерывание? Или ты спрашиваешь как запросить прерывание таймера? ![]() |
|
Создано: 13 июня 2008 07:49 · Поправил: btCode · Личное сообщение · #3 daFix пишет: org 0h ; переход по адресу 0h org не выполняет перехода, она указывает по какому адресу разместить следующий за ней код. daFix пишет: jmpa cc_UC,start ; безусловный переход на метку start интересная конструкция, почему в переходе указаны две метки? про этот процессор идет речь? --> C167 datasheet <-- http://www.datasheetsite.com/datasheet/C167 --> Infineon C167-LM datasheet <-- http://www.keil.com/dd/chip/2913.htm ![]() |
|
Создано: 13 июня 2008 21:18 · Личное сообщение · #4 |
|
Создано: 13 июня 2008 21:34 · Личное сообщение · #5 daFix пишет: Крутить цикл не запрашивая прерывания Тогда тебе надо найти инструкцию которая возвращает tick counter из спец. регистра. В спеке будет сказано столько этих ticks в секунду для конкретной частоты кристала. Пишешь маленькую ф-цию которая получает, скажем, милисекунды в регистре, считывает tick counter, пересчитывает милисекунды в ticks и крутит такой цикл:
![]() |
|
Создано: 13 июня 2008 21:50 · Личное сообщение · #6 |
![]() |
eXeL@B —› Программирование —› Помогите с контроллером на ассемблере |