Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
 
Hunter217
0 / 0 / 0
Регистрация: 15.09.2016
Сообщений: 6
#1

Задача с таймером на Ассемблере

27.11.2017, 17:08. Просмотров 227. Ответов 4
Метки нет (Все метки)

Необходимо написать программу для генерирования ТС1 временных меток длительностью 40 мс при Fosc = 12 МГц. протестировать программу (2-3 примера).
С языком я знаком очень и очень мало, пробовал делать сам выдает ошибку "*** error 65: access violation at C:0x0000 : no 'execute/read' permission"
Кто сможет помочь буду очень признателен.
вот код который писал я:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <reg51.h>
JMP START                           //Команда перехода по метке START
TRANS:                              //Метка перехода TRANS
        MOV TH1,#0x63;              //Загрузили старший байт таймера
        MOV TL1,#0xBF;              //Загрузили младший байт таймера
        MOV TCON,#0x40;             //Сбросили бит переполнения TF1, установив новое значение регистру TCON
        RET;                        //Команда возращение в тело программы
        
START:  MOV TMOD,#0x10;             //Устанавливаем режим работы таймера
        MOV IE,#0x88;               //Разрешили прерывание таймера 1
        MOV TH1,#0x63;              //Загрузили старший байт таймера
        MOV TL1,#0xBF;              //Загрузили младший байт таймераTL1 = 0xBF; 
        MOV TCON,#0x40;             //Устанавливаем разрешение на прерывание от таймера
 
        
C860:                               //метка С860
        JNB 0X88.7,c860             //Eсли бит переполнения(TF1) равен нулю то переход по метке,иначе следующая строчка
        CALL TRANS                  //Вызов подпрограммы
            
C861:                               //метка С860
        JNB 0X88.7,c861             //Eсли бит переполнения(TF1) равен нулю то переход по метке,иначе следующая строчка
        CALL TRANS                  //Вызов подпрограммы
        
C862:                               //метка С862    
        JNB 0X88.7,c862             //Eсли бит переполнения(TF1) равен нулю то переход по метке,иначе следующая строчка
        CALL TRANS                  //Вызов подпрограммы
        JMP C860                    //Переход по метке, необходимо для обеспечения бесконечного цикла
End
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2017, 17:08
Ответы с готовыми решениями:

Проблема с таймером на ассемблере
Всем доброго времени суток. Я только начал изучать ассемблер. До этого работал...

проблема с таймером
Добрый вечер. Начал недавно заниматься программированием микроконтроллеров...

Проблемы с таймером
Проблема заключается в следующем. Имеется такая вот подпрограмма: ...

проблема с таймером 1
написал прогу в которой работает таймер1 в реале не рабоает, почему не понятно...

Attiny10, неясность с таймером.
Приветствую всех, форум читал, но без особой нужды старался не писать, теперь...

4
northener
пофигист широкого профиля
3418 / 2318 / 630
Регистрация: 15.07.2013
Сообщений: 13,700
28.11.2017, 01:24 #2
Смущает меня строчка
#include <reg51.h>
Действительно ли нужна программа на ассемблере?
Если да, то могу предложить вариант для классического ассемблера Intel 51, если уточните задачу.
Что подразумевается под "временных меток длительностью 40 мс"?

P.S. В любом случае ваш код не может быть решением "задачи с таймером".
0
pyzhman
760 / 456 / 63
Регистрация: 15.05.2012
Сообщений: 2,553
28.11.2017, 19:01 #3
Цитата Сообщение от northener Посмотреть сообщение
Смущает
Да, есть такие компиляторы.
0
paskal
450 / 299 / 28
Регистрация: 15.08.2011
Сообщений: 915
02.12.2017, 17:40 #4
Hunter217, Во первых, вы бы заметно облегчили задачу если бы сказали каким компилятором пользуетесь.
Во вторых кто выдает эту ошибку? Ассемблер, линковщик, или при запуске отладки она выскакивает?

По виду это напоминает keil, а ошибка похожа на попытку выполнения кода из ОЗУ, или наоборот, запись данных в код. А связано это может быть с тем что сегменты неправильно определены. У вас они кстати вообще не прописаны.
0
northener
пофигист широкого профиля
3418 / 2318 / 630
Регистрация: 15.07.2013
Сообщений: 13,700
03.12.2017, 02:04 #5
Цитата Сообщение от paskal Посмотреть сообщение
Во вторых кто выдает эту ошибку?
А кто кроме отладчика может выдать такую ошибку?
0
03.12.2017, 02:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2017, 02:04

ATmega8 работа с таймером
Всем привет. начинаю знакомится с программирование микроконтроллеров. дошел до...

Работа с таймером PIC16F877A
Мне необходимо реализовать систему автополива, у меня есть 5 выходов RA каждый...

Работа с таймером ATmega8535
Помогите с программой, пожалуйста! АЦП работает хорошо. Таймер работал, пока...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru