
ВЫЧ.ТЕХ / Лабораторные работы(Борисов) / Исследование таймеров
.docxФедеральное агентство связи РФ
Сибирский Государственный Университет
Телекоммуникаций и Информатики
Кафедра САПР
Лабораторная работа №4
«Изучение таймеров микроконтроллера»
Выполнил:
Лупашко Е.М. гр. Р-73
Проверил:
Борисов А.В.
Новосибирск 2011
1 Цели работы
1 Изучить особенности работы таймеров микроконтроллера. 2 Изучить методику конфигурирования таймеров. 3 Научиться формировать с помощью таймера временные интервалы. 4 Изучить способы отладки программ на учебном лабораторном стенде LESO1.
2 Структурная схема таймера
Рисунок 2.1 – Структурная схема Таймера 0 в режиме 1.
3 Расчет начальных значений счетных регистров
4 Обоснование выбора значения регистра TMOD
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
Gate |
C/T |
M1 |
M0 |
Gate |
C/T |
M1 |
M0 |
|
Биты управления Таймером 1 |
Биты управления Таймером 0 |
Рисунок 4.1 – Назначение бит регистра TMOD
Поскольку в работе используется Таймер 0 – биты 4-7 не используются. Таймер 0 работает в режиме таймера (подсчет импульсов внутреннего генератора), поэтому биту 2 присваивается 0. В режиме таймера бит Gate не используется, поэтому биту 3 также присваивается 0. Таймер 0 работает в режиме 1, поэтому битам 1 и 0 присваивается значение 01.
5 Графическая схема алгоритма программы
6 Исходный текст программы
int I;
sbit P00=0x80; //LED
sfr TMOD=0x89;
sfr TCON=0x88;
sbit TF0=0x8D;
sbit TR0=0x8C;
sfr TL0=0x8A;
sfr TH0=0x8C;
delay() { //30 ms delay-function beinning
TMOD=0x01; //timer initialization
TH0=0x0A;
TL0=0x3D;
TR0=1; //timer starts
while(!TF0);
TF0=0;
} //30 ms delay-function ending
main() {
while(1) { //eternal cycle
P00=1; //LED switches on
for (I=1; I<200; I++) //6 sec delay
{delay();}
P00=0; //LED switches off
for (I=1; I<200; I++) //6 sec delay
{delay();}
}}
7 Файл листинга
C51 COMPILER V8.12 LAB4 11/18/2011 18:33:14 PAGE 1
C51 COMPILER V8.12, COMPILATION OF MODULE LAB4
OBJECT MODULE PLACED IN Lab4.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE Lab4.c BROWSE DEBUG OBJECTEXTEND SYMBOLS
line level source
1 int I;
2 sbit P00=0x80; //LED
3 sfr TMOD=0x89;
4 sfr TCON=0x88;
5 sbit TF0=0x8D;
6 sbit TR0=0x8C;
7 sfr TL0=0x8A;
8 sfr TH0=0x8C;
9 delay() { //30 ms delay-function beinning
10 1 TMOD=0x01; //timer initialization
11 1 TH0=0x0A;
12 1 TL0=0x3D;
13 1 TR0=1; //timer starts
14 1 while(!TF0);
15 1 TF0=0;
16 1 } //30 ms delay-function ending
17 main() {
18 1 while(1) { //eternal cycle
19 2 P00=1; //LED switches on
20 2 for (I=1; I<200; I++) //6 sec delay
21 2 {delay();}
22 2 P00=0; //LED switches off
23 2 for (I=1; I<200; I++) //6 sec delay
24 2 {delay();}
25 2 }}
C51 COMPILER V8.12 LAB4 11/18/2011 18:33:14 PAGE 2
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
delay. . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
P00. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0080H 1
TMOD . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0089H 1
I. . . . . . . . . . . . . . . . . . . PUBLIC DATA INT 0000H 2
TF0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008DH 1
TH0. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008CH 1
TL0. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008AH 1
TR0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008CH 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 81 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
8 Выводы
В ходе выполнения данной лабораторной работы я познакомился с особенностями таймеров микроконтроллера ADuC842.
- изучил структурную схему таймеров данного микроконтроллера и их назначение;
- изучил различные режимы работы таймеров и область их применения;
- научился конфигурировать таймеры при помощи регистра специальных функций TMOD;
- научился управлять работой таймера при помощи регистра специальных функций TCON;
- приобрел навыки по формированию временных интервалов произвольной длительности при помощи таймеров;
- оценил погрешность формирования временного интервала. Величина погрешности: