Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Программная инженерия > Микроконтроллеры, робототехника, схемотехника, 3D принтеры
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2021, 12:52   #1
Cyber321
Новичок
Джуниор
 
Регистрация: 17.09.2018
Сообщений: 49
По умолчанию Система перерываний. Таймеры МК 8051

Здравствуйте, нужно написать код под это условие

Последовательность прямоугольных импульсов на выходе любого порта микроконтроллера с параметрами:
a. T = 406 мс,
b. T = 406 мс, со скважностью S = 24%.

Вот мой код на assembly:
Код:
CLOCK = 1000
;===================================================================
#include "io8051.h"                   
        ASEGN CODE_SEG02:CODE,0 
        jmp Start 
        ASEGN CODE_SEG02:CODE,0x0B
        jmp timer0                    
;===================================================================
        RSEG CODE_SEG:CODE           
                                     
Start:                               
        call init_timer 
loop: 
        jmp loop                      
init_timer:
        MOV TL0, #LOW(65535-CLOCK)     
        MOV TH0, #HIGH(65535-CLOCK)    
        clr TMOD.0                    
        setb TMOD.1                   
        clr TMOD.2                    
        clr TMOD.3                   
 
                                       
        setb TCON_TR0                 
        setb IE_ET0                    
        setb IE_EA                     
        ret 
;===================================================================
timer0:
        MOV TL0, #LOW(65535-CLOCK)    
        MOV TH0, #HIGH(65535-CLOCK)   
        cpl P2.0
        reti
;===========
Ниже расположена схема из протеуса:
Изображения
Тип файла: png Без имени.png (83.1 Кб, 28 просмотров)
Cyber321 вне форума Ответить с цитированием
Старый 26.02.2022, 11:42   #2
Nif-naf
Форумчанин
 
Аватар для Nif-naf
 
Регистрация: 05.09.2016
Сообщений: 131
По умолчанию

У вас микрсек. Или милисек. Если послед. Интерфеис то 2400бод это 400 микросек. Напиши. А прерывание любое или по инт.
Немного о GoAsm.

Последний раз редактировалось Nif-naf; 26.02.2022 в 11:49.
Nif-naf вне форума Ответить с цитированием
Старый 01.03.2022, 12:31   #3
Nif-naf
Форумчанин
 
Аватар для Nif-naf
 
Регистрация: 05.09.2016
Сообщений: 131
Счастье

Команды call нет совсем. Для получения скважности в паузе надо два , три acall dly
Код:
$mod8051
outbuf data 22h
k bit TCON.5
v bit p2.0
i bit IE.1
t bit IE.7
o bit Tmod.0
m bit Tcon.4
org 0
ljmp start
org 0b
clr k
inc outbuf
reti
start:
setb t
setb v
acall dly
clr v
acall dly; pause
ljmp start
dly:
setb i
setb o
setb m
mov a, #04h
cjne a,outbuf,dly
ret
Немного о GoAsm.

Последний раз редактировалось Nif-naf; 02.03.2022 в 10:02. Причина: 1
Nif-naf вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таймеры ATmega16(A). 25-й кадр Помощь студентам 0 22.05.2014 08:51
Таймеры/счетчики abused Помощь студентам 0 05.06.2011 22:29
Таймеры tools Qt и кроссплатформенное программирование С/С++ 3 30.05.2010 23:12
Таймеры Sergeu Общие вопросы C/C++ 2 25.03.2010 12:13
Таймеры EdNovice Общие вопросы .NET 1 06.03.2009 11:26