Заманауи микроконтроллер



Pdf көрінісі
бет24/64
Дата31.12.2021
өлшемі3,85 Mb.
#21593
1   ...   20   21   22   23   24   25   26   27   ...   64
Бағдарлама мысалдары 
 

Мысал.  ТО  таймерінің  уақыттық  интервалдар  сұрыпталу  режимі.  ТО 
таймер үзіліссіздігінің счеттан тыс санын бағдарламада құрамыз. 
 
 
 
 
Бағдарламаның ерекшеліктерін қарастырамыз: 
а)  бағдарлама басында i глобалдық үзілісі келтірілген,бастапқы яғни  i=0; 
б)  барлық порттардан тек  D порты иницирленген, port_init функциясы –жұмыс 
шешімі болып табылады; 
в)  timer0_init  функциясы  ТО  таймерінің  жұмыс  параметрінің  шешімінде 
орындалады.  Бастапқыда  счетчик  тоқтайды,ол  үшін  басқару  регистрында 
нөлдік мән жазылады  
 
TCCR0 = 0x00; 
 
Одан кейін счетчик регистрінің бастапқы мәні жазылады 
 
TCNT0 = 0x64; 
 
Және  жұмыс  режимінде  KDEL  бөлінгіші  үшін  талап  етілген  мәндер 
жазылады. 


39 
 
TCCR0 = 0x05;//TCRR0=0000 0101 
 
Бағдарлама  жолында  1024-ке  тең  бөлінгіш  коэфициенті  және  счетчиктік  
Normal жұмыс режимі орындалады. 
г) бағдарлама жолында 
#pragma interrupt_handler timer0_ovf_isr:10 void timer0_ovf_isr(void) 

TCNT0 = 0x64;//
бастапқы мәніне орнату 
i++;// i үзілістік инкремент}
 
ТО счетчиктік толысу арқылы үзіліссіз қамту құрылады,10-толысу арқылы 
үзіліссіз  вектор  номері,  (5-ші  кестеде  көрсетілген),  ал  timerOovfisr  функция 
атауы,  үзіліссіздіктің  пайда  болуын  шақырады.  Теле  функцияның  екі  ғана 
операторы бар:  
1. 
TCNT0 = 0x01 счеттік регистрінің бастапқы мәніне орнатылады;  
2. 
i бөлінісінің глобалдық инкрементирленуі.  
Үзіліссіздіктің  пайда  болуы  кезінде  i  мәні  бірлік  кезінде  ұлғаяды. 
Микроконтроллерде қандай жиілікте болады? Осы жиілікті есептейміз: 
 
f= f
CLK
 / K
DEL
 
/ Е
T0
,  
 
мұнда f
CLK
 – 
кварцтық резонатордың жиілігі f
CLK
 
=8 МГц; 
K
DEL
 – 
бөлінгіш коэфициенті, KDEl =1024; 
Е
T0
 -  
ТО счетчик сыйымдылығы, Ето=255; 
N – 
счетчиктің бастапқы мәні, N=0x64=100. 
 
Мәніне формулаға салып, сонда алатынымыз 
 
f= 8 000 000 / 1024 / (255-
100) = 50 Гц, 
 
ТО  таймерінің  үзіліссіздігі  секундына  50  рет  орындалатыны  және  i 
бөлінгіш мәнін ұлғайтуға келісілген; 
д)  init_devices  функциясы  TIMSK=0x01  қатарында  ең  маңызды  функция 
болып табылады, ТО счетчик толысуының үзіліссіздігіне мүмкіндік береді; 
Шынымен  TIMSK=0000  0001  екілік  түріне  және  TOIEO=1  биті  3.4.3 
кестеде келтірілген; 
е)  main  функциясы  барлық  құрылғылардың  инициялизациясынан  кейін 
PORTD=l шексіз операторы орындалады; 
і үзіліс мәнінің бастапқы  D  портын шығарады. 

мысал ТО таймерін кең импульсті модуляция режимінде қолдану. 
 


40 
 
 
 
Тапсырманы орындауға 
 
1. 
"Мысал  1"  бағдарлама  берілгенінде  D  порты  жіберілгенде  не  болатынын 
есептеп көріңіз? Бағдарламаны қосып, тексеріңіз  
2. 
Бағдарламаны  D портының шығыстық мәні  1 Гц жиілікке өзгертетіндей 
етіңіз. 
3. 
Бағдарламаның  скважность ын өзгертіп  дискреттілік өзгеруі  (РА4...РА6 
шығысы) осындай жағдайда: у = 0; 0,125; 0,25; 0,375; 0,5; 0,675; 0,75; 1. 
4. 
Т2 таймеріне аналогтық берілісін орындау  
5. 
8  разрядты  таймерді  қолдану  кезінде  бағдарламаға  «интенсивтілік 
тапсырмасын»  жазыңыз:  ТО  таймерінің  РА5  кірісінің  «1»  сигналын 
жіберу. (ШИМ режим жұмысы) 5 секунд ішінде 0 ден 1 линейлік өзгереді 
(Т2  таймері  көмегімен  күшею  беріледі,  толысу  кезіндегі  үзіліссіз  жұмыс 
істеу). РА5 сигналын түсіру кезінде сондай темппен 1 ден 0-ге өзгереді



Достарыңызбен бөлісу:
1   ...   20   21   22   23   24   25   26   27   ...   64




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет