Professional Documents
Culture Documents
Timer
Timer
Timer
TIMER
Bài 5: TIMER
T0,T2: 8bit
T1:16bit
Slide 2
TIMER
Slide 3
TIMER
Slide 4
TIMER
Slide 5
TIMER
Slide 6
TIMER
Slide 7
TIMER
Slide 8
TIMER
#include <main.h>
#INT_RTCC
void RTCC_isr(void)
{
}
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1|RTCC_8_bit); //51,2 us overflow
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
while(TRUE)
{
//TODO: User Code
}
}
Slide 9
TIMER
Timer đếm từ 6 đến 255 sẽ tràn, số lần lặp lại 10.000 lần sẽ được thời gian delay 1s.
Chú ý: Timer0 là Timer 8 bit nên giá trị đếm sẽ từ 0 đến 255, sau đó quay về 0 thì
mới xãy ra tràn.
Slide 10
TIMER
set_timer0(value);
set_timer1(value);
set_timer2(value);
Slide 11
TIMER
#include <main.h>
Int16 dem;
#INT_RTCC
void RTCC_isr(void)
{
set_timer0(6);
dem++;
}
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1|RTCC_8_bit); //51,2 us overflow
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
set_timer0(6);
while(TRUE)
{
//TODO: User Code
}
}
Slide 12
TIMER
while(1){
if (dem == 10000)
{
// code 1
dem=0;
}
}
Slide 13
TIMER
Ví dụ 1: Viết chương trình sáng – tắt LED D1 chu kỳ 1s dùng ngắt Timer 0
Slide 14
TIMER
#include <main.h>
int8 led7[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
int16 dem;
#INT_RTCC
void RTCC_isr(void)
{
set_timer0(6);
dem ++ ;
}
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2|RTCC_8_bit); //102 us overflow
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
set_timer0(6);
while(TRUE)
{
//TODO: User Code
}
}
Slide 15
TIMER
while(TRUE)
{
//TODO: User Code
if(dem==10000)
{
dem=0;
output_toggle(Pin_B0);
}
}
}
Slide 16
TIMER
Ví dụ 1: Viết chương trình hiển thị từ 0-9 delay 1s dùng ngắt Timer 0
Slide 17
TIMER
#include <main.h>
int16 dem, counter;
#INT_RTCC
void RTCC_isr(void)
{
set_timer0(6);
dem ++ ;
}
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2|RTCC_8_bit); //102 us overflow
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
set_timer0(6);
while(TRUE)
{
//TODO: User Code
}
}
Slide 18
TIMER
while(TRUE)
{
//TODO: User Code
if(dem==10000)
{
dem=0;
counter ++;
if(counter>9) counter =0; // Nếu biến counter >9 thì counter = 0
}
output_B(led7[counter]);
}
}
Slide 19
LED 7 ĐOẠN
Ví dụ 2: Viết chương trình hiển thị từ 0-99 delay 1s dùng ngắt Timer 0
Slide 20
TIMER
#include <main.h>
int8 led7[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
int16 dem, counter;
#INT_RTCC
void RTCC_isr(void)
{
set_timer0(6);
dem ++ ;
}
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2|RTCC_8_bit); //102 us overflow
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
set_timer0(6);
while(TRUE)
{
//TODO: User Code
}
}
Slide 21
TIMER
while(TRUE)
{
if(dem==10000)
{
dem=0;
counter ++;
if(counter>99) counter =0; // Nếu biến counter >99 thì counter = 0
}
chuc = counter/10;
dvi = counter % 10;
output_B(led7[counter]);
output_high(pin_D0);
output_low(pin_D1);
delay_ms(1);
output_low(pin_D0);
output_B(led7[dvi]);
output_high(pin_D1);
output_low(pin_D0);
delay_ms(1);
output_low(pin_D1);
}
}
Slide 22
LED 7 ĐOẠN
Bài tập 1: Viết chương trình hiển thị MSSV lên 4 led 7 đoạn
Bài tập 2: Viết chương trình hiển thị: 00-59 dung Timer (1s)
Bài tập 3: Viết chương trình hiển thị: HH:MM:SS dùng Timer (1s)
Slide 23