Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Abdullaev_ret_331.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.67 Mб
Скачать

52. Светофор жұмысын реализациялайтын программалық код жазыңыз (delay көмегімен).

#include <tiny2313.h>

#include <delay.h>

void main (void)

{

#pragma optsize –

CLKPR=0x80;

CLKPR=0x00;

#ifdef _OPTIMIZE_SIZE_

#pragma optsize +

#endif

PORTB=0x00;

DDRB=0x80;

ACSR=0x80;

DIDR=0x00;

while (1)

{

PORTB.7=1; //жасыл

delay_ms (100);

PORTB.7=0;

delay_ms (100);

PORTB.7=1; //жасыл

delay_ms (100);

PORTB.7=0;

delay_ms (100);

PORTB.7=1; //жасыл

delay_ms (100);

PORTB.7=0;

delay_ms (10);

PORTB.6=0; //сары

delay_ms (600);

PORTB.6=0;

delay_ms(10);

PORTB.5=1; //қызыл

delay_ms(3000);

PORTB.6=1;

delay_ms (600);

PORTB.6=0;

PORTB.5=0;

delay_ms (10);

PORTB.7=1;

delay_ms (3000);

PORTB.7=0;

delay_ms (100);

}

}

53. Төмендегі суретке сәйкес жарықдиодтардың ретпен жану программалық кодын жазыңыз.

#include <avr/io.h>

#include <avr/interrupt.h> 

unsigned char temp; 

ISR (TIMER1_COMPA_vect)

{

if ((PINC&(1 << PC0)) == 0) 

{

temp = temp >> 1; 

if (temp == 0)

{ temp = 0b10000000;}

}

else

{

temp = temp << 1; 

if (temp == 0)

{ temp = 0b00000001;}

}

PORTD = temp; 

int main(void)

DDRC = 0x00;

PORTC |= (1 << PC0); 

DDRD = 0x0F;

PORTD = 0x00; 

TCCR1A = 0x00;

TCCR1B = (1 << CS12)|(0 << CS11)|(1 << CS10)|(1 << WGM12); 

TCNT1 = 0x00;

OCR1A = 780; 

TIMSK |= (1 << OCIE1A); 

temp = 0b00000000;  

sei(); 

while (1) {}; 

}

54. MC9S12C128 микроконтроллеріндегі TIM таймер модулі. Негізгі функциялары. Уақыт базасының санағышы. Модульді басқарушы негізгі регистрлар. TIM(TimerInterfaceModule) таймері модулінің құрылымы үш негізгі функцияға негізделген:

• Кіріс захват (IC — InputCapture).  Кіріс захват функциясы МК-дің кірісіндегі импульсті сигналдардың бірден бірнешеуінің уақыт параметрлеріне өлшеу жүргізуге мүмкіндік береді. Кіріс захваттың жүйе бөлігі порттың кірісіндегі бірлік және нөлдік күйлердің ұзақтығын (1,а-сур.), сонымен қатар периодты импульсті сигналдың толтыру коэффициенті немесе жиілігін өзгерту үшін жасалған болуы мүмкін(1,а-сур.).

(а)

(б)

1-сур. ШИМ синалдың уақыттық сипаттамалары

• Шығыс салыстыру(OC — OutputCompare). Шығыс салыстыру функциясы МК-ге бірнеше шығысында период және қайталланатын сигналдар үшін толтыру коэффициенті, қайталанбайтын сигналдар үшін бірлік немесе нөлдік күйдің ұзақтығы сияқты берілген уақыт сипаттамалары бар импульсті тізбектерді(последовательность) шығаруға мүмкіндік береді.

Уақыт базасының санағышы. 2-суретте құрылымдық сұлбасы берілген 16 разрядты TCNT уақыт базасының санағышы TIM таймері модулінің негізгі блогы болып табылады. Санағыштың ағымдағы коды реалды уақыт моментінің санауы ретінде захват/салыстыру барлық каналдарында қолданылады. Сол себептен бұл санағыш уақыт базасының санағышы деп аталады. Бұл санағыш еркін санайтын санағыш деп те аталады. Егер таймер модулінің жұмысы рұқсат етілген болса, онда уақыт базасының санағышы $0000 минималды кодынан бастап $FFFF максималды кодына дейін үзіліссіз санау жүргізеді. Ары қарай санау кодтың удеу ретімен жалғасады. 216 –ға тең санағыштың санау коэффициентін өзгерту секілді, санағышты программаның басқаруымен тоқтату мүмкін емес. Санағыштың ағымдағы күйі екі 8-разрядты регистрлерде көрсетіледі: TCNTH — санағыштың үлкен биті, TCNTL —санағыштың кіші биті. МК жады картасында бұл регистрлер келесі адрестер бойынша орналасады: $0084 — TCNTH, $0085 — TCNTL. Осы екі регистрдің орнына санағыштың ағымдағы күйіндегі TCNT уақыт базасының 16-разрядты регистрін құралады. TCNT аты әдетте файлда хабарланады.

Модульді басқарушы негізгі регистрлар. TSCR (TimerSystemControlRegister) модульді басқарушы негізгі регистр $0086 адресі бойынша МК жадысында орналасады. Регистрдің форматы 2-суретте берілген.

Регистрдің үлкен биті TEN таймер модулінің функциялануы рұқсат береді(TEN=1 болғанда) немесе рұқсат бермейді(TEN=0 болғанда). Құрылғы жұмысысының процесінде бұл бит таймер модулін қосу немесе өшіру үшін қолданылады. Егер басқару алгоритмінде таймердің функциялары қолданылмаса, модулді өшіру энергия қолдануды азайту жағынан пайдалы.

2-сур. TCSR регистрінің форматы

TFFCA биті таймер модулі жағдайының жалауша сбросының механизмін басқарады. Егер TFFCA биті 0-ге орнатылған болса, онда программаның басқаруымен орнатылған флаг битіне 1 жазылғанда берілген жалаушалардың сбросы үшін қарапайым процедураны қолдануға тура келеді. Орнатылған жалауша битіне 0 жазу мүмкіндігі жалаушаны өзгеріссіз қалдырады.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]