Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Генратор тактов на AT89
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры
Muxamor
Народ надо сделать генератор тактовых ипульсов трех дипозонный

1) 2ms-20ms шаг 10

2) 20ms-200ms шаг 10

3) 20ms-2000ms шаг10

Зочу делать на 89 ! Кто что может посоветовать как грамотно алгоритм ореализовать? а то на ум чет п риходят только задержки!

Если кто делал такую фичу не поделитесь ?
АДИКМ
Поскольку в AT89 аппаратного ШИМа нет и не будет, то конечно задержками. Таймер есть и не один, частоты у вас невысокие, так что нет проблем.
Muxamor
Скинь те ктонить пример запуска таимер счетчика ! А то както раньше мне он не нужен был совсем!
shamray
Можно так

// CPU clock speed
#define F_OSC 16000000 // 16MHz processor
//#define F_OSC 14745000 // 14.745MHz processor
//#define F_OSC 8000000 // 8MHz processor
//#define F_OSC 7372800 // 7.37MHz processor
//#define F_OSC 4000000 // 4MHz processor
//#define F_OSC 3686400 // 3.69MHz processor

//#define CPU_DIV 12
#define CPU_DIV 6 //internal divider

#define F_CPU F_OSC/CPU_DIV

#define F_CPU_1000 F_CPU/1000

void timer0init(u08 ms)
{
IEN0_bit.ET0=1;
TMOD_bit.M00=1;
TMOD_bit.M10=0; //16 bit
TMOD_bit.C_T0=0;
TCON_bit.TR0=1;
TIMER0RELOAD=0xffff-(F_CPU_1000*ms);
}

void timer1init(u08 ms)
{
IEN0_bit.ET1=1;
TMOD_bit.M01=1;
TMOD_bit.M11=0; //16 bit
TMOD_bit.C_T1=0;
TCON_bit.TR1=1;
TIMER1RELOAD=0xffff-(F_CPU_1000*ms);
}

void maain (void)
{
timer0init(2); //time 2 ms
timer0init(10); //time 10 ms
EA=1;
}
Muxamor
А в асеблере есть ?

А то я на Си не пишу и его не знаю!
almay
А просто на делителе не хочеш пооробовать, если конечно задача стоит получить только заданную сетку частот.
Muxamor
Ну мне надо еще управление организовать между режимами !

Как на делителе ?



Вот нащел тут такю програмулину

;организация перехода к метке NEXT при переполнении Т/С0

ORG 0BH ;адpec вектора прерывания от Т/С0

CLR TCON.4 ;останов Т/С0

RETI ;выход из подпрограммы обработки прерывания

[/size]

[size="3"] ORG 100H ;начальный адрес программы


MOV TMOD, #01H ;настройка Т/С0

MOV TL0, #LOW(NOT(50000-1)) ;загрузка таймера

MOV TH0, #HIGH(NOT(50000-1))

SETB TCON.4 ;старт Т/С0

SETB IE.1 ;перевод в режим холостого хода

SETB PCON.0

NEXT: ...

зачем перходить в режим холостого хода и что дает SETB PCON.0?
АДИКМ
Холостой ход нужен для снижения потребления. В данном случае это не актуально.

Просто после выполнения SETB PCON.0 процессор уснет, а после переполенения таймера (прерывания) продоолжит выполнение программы с метки NEXT.
Muxamor
А как сделать чтобы когда он переполнялся выставлялась единица на определенный порт !

Вообщим суть в том чтобы перед включения таимера я на пин подаю единицу а после переполнения я должен подать ноль ! Как так сказать написать прально это все?
almay
а) Если делать на делителе то каждую частоту подаеш на цифровой коммутатор.
б) В начальных установках выполняеш SETB Рх.х,затем при обработке прерывания инвертируеш текущее состояние Рх.х. Только учти, что время работы счетчика должно быть равным 1/2 от требуемой.
Muxamor
Данная программа вроди должн авыполнять задержку 50 мс!

Пишу как там и почемуто не работает !

напишите че куда добавить чаинику!
Muxamor
ДА еще компилятор ругаеться на ORG 0BH и на SETB PCON.0
Muxamor
С ругательвом компелятора на ORG 0BH разобрался но на SETB PCON.0 всеравно ругаеться.

пиши вот такую прогу и не рабьотает так ка надо в чем дело ?

SCL EQU P1.4



SETB IE.7
Start:
CLR SCL
Call Zapusk
ORG 0BH
CLR TCON.4
RETI
Zapusk:
ORG 100H

MOV TMOD, #01H ;
MOV TL1, #LOW(NOT(10-1)) ;
MOV TH1, #HIGH(NOT(10-1))
SETB TCON.4 ;
SETB IE.1 ;
Jerdedo:
Setb SCL
JMP Start




end




Muxamor
Народ елки палки посоветйте че не так то ?
Roma_te
Цитата(Muxamor @ Dec 29 2005, 16:52) *
С ругательвом компелятора на ORG 0BH разобрался но на SETB PCON.0 всеравно ругаеться.

Регистр PCON не предусматривает побитовой адресации, поетому с ним надо работать через маску. Попробуй MOV PCON, #80H
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.