Как написать программу на ассемблере по такому ТЗ?
От: Razorvashka Россия  
Дата: 16.05.07 15:23
Оценка:
Надо с частотой дискретизации опросить 1 дискретный вход.Если он равен 0,то 1 дискретный выход равен 1.если он равен 1,то 1д.выход равен 0.Надо опрашивать каждые 50мс по прерыванию таймер/счетчик 0. На выходе показывать данные с входа порт 1 и выхода порт 0.По схеме первый дискретный вход соответствует на цпу порту 1.0,а выход — порту 0.0

Вот написал код, но не работает...
; ОПРЕДЕЛЕНИЯ
Counter        EQU    R3        ; Счетчик 50 мс-ых интервалов
Flag            EQU    R4        ; Признак окончания интервала в 50 мк

; Настройка векторов прерываний
org 00h                ;     Reset
jmp begin            ;    Запуск микроконтроллера

org 0Bh                ;    Прерывание от таймера 0
jmp Timer0_Int        ;    переход на обработчик

; Обработчик прерывания от таймера 0 
org 30h
Timer0_Int:
    ; настраиваем таймер на 50 мс цикл
    MOV    TH0, #3Ch    ; старший байт таймера
    MOV    TL0, #0B0h    ; младший байт таймера
    MOV    flag, #50    ; выставляем признак того, что прошло 50 мк
RETI    ; выходим из обработчика прерывания

; Программа микроконтроллера
org 50h    ; адрес начала программы
begin:
    ; настраиваем таймер0 на 50 мс цикл
    MOV   TMOD,#01H        ;    таймер0 в режим 1
    MOV    TH0, #3Ch        ;     старший байт таймера    
    MOV    TL0, #0B0h        ;     младший байт таймера


    ; Инициализируем работу с прерываниями
     
    MOV    IE, #0        ; обнуляем 
    SETB   ET0           ; Прерывание от таймера 0 - по переполнению
    SETB   EA           ; разрешаем прерывания
   SETB   TR0           ; запуск таймера 0

        ; цикл работы программы 
next:    
    ; Проверяем окончание интервала в 50 мк
    CJNE    flag, #50, check    ; 
    SJMP next    ;    идем снова на проверку    окончания 50 мк

check:
    ; обнуляем признак 50 мк
    MOV    flag, #0
   JB P1.0,continue
   SETB P0.0
SJMP next;
continue:
   CLR P0.0    
SJMP next;    
end    ; конец программы

16.05.07 21:10: Перенесено модератором из 'Алгоритмы' — Кодт
добавлена разметка — Кодт
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.