Trungkien - BT Timer

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

1. Dùng ngắt timer 0 để quét led, thời gian delay mỗi led là 2 ms.

Sử dụng:
Setup_timer_0(RTCC_DIV_16|RTCC_INTERNAL)
Viết chương trình thực hiện: hiển thị chữ “ddCA” trên 4 LED. Tính thời gian
ngắt timer 0

#include <16F877A.h>
#FUSES NOWDT, HS, NOPUT, PROTECT, NODEBUG, NOBROWNOUT,
NOLVP
#use delay(clock=8000000)
// Chương trình ngắt timer 1
#INT_TIMER0
void qled()
{ Output_d(0xff);// tắt các led
Output_b(0x85); output_low(PIN_D3); delay_ms(2);// “d”
Output_d(0xff);// tắt các led
Output_b(0x85); output_low(PIN_D2); delay_ms(2); // “d”
Output_d(0xff);// tắt các led
Output_b(0x63); output_low(PIN_D1); delay_ms(2);// “C”
Output_d(0xff);// tắt các led
Output_b(0x11); output_low(PIN_D0); delay_ms(3);// “A”
}
//-------CHUONG TRINH CHINH---------
Void main()
{
enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER0);
Setup_timer_0(RTCC_DIV_16|RTCC_INTERNAL)
while(TRUE);
}

2. Dùng ngắt timer 1 để quét led, thời gian delay mỗi led là 2 ms. Sử dụng:
Setup_timer_1(T1_INTERNAL| T1_DIV_BY_4)
- Viết chương trình hiển thị số tăng dần từ 0 đến 9999 trên 4 LED 7S.

#include <16F877A.h>
#FUSES NOWDT, HS, NOPUT, PROTECT, NODEBUG, NOBROWNOUT,
NOLVP
#use delay(clock=8000000)

const unsigned char maled[10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82,0xF8,
0x80, 0x90};
int16 dem,chuc,donvi,nghin,tram;

#INT_TIMER1
void qled()
{
set_tris_c(0x00);
set_tris_a(0x00);
output_c(0);
while(true)
{
nghin=dem/1000;
tram = (dem - nghin*1000)/100;
chuc=(dem - nghin*1000 - tram*100)/10;
donvi=dem - nghin*1000 - tram*100 - chuc*10;
//----------------------\\
output_c(maled[nghin]);
ra0=0;
delay_ms(2);
ra0=1;
//-----------hien thi so hang nghin------\\
output_c(maled[tram]);
ra1=0;
delay_ms(2);
ra1=1;
//---------hien thi so hang tram---------\\
output_c(maled[chuc]);
ra2=0;
delay_ms(2);
ra2=1;
//---------hien thi so hang chuc---------\\
output_c(maled[donvi]);
ra3=0;
delay_ms(2);
ra3=1;
//---------hien thi so hang donvi---------\\
dem++;
if(dem==1500)
{
dem=0;}}

Void main()
{
enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER1);
Setup_timer_1(T1_INTERNAL| T1_DIV_BY_4)
while(TRUE);
}}
3. Dùng ngắt timer 1 để quét led, thời gian delay mỗi led là 3 ms. Sử dụng:
Setup_timer_1(T1_INTERNAL| T1_DIV_BY_8)
- Viết chương trình led sáng dần từ D1 đến D8, thời gian delay 200 ms, lặp lại
50 lần đồng thời hiển thị số lần trên LED1 đến LED4 theo dạng: “Ct.XX

#include < 16f877A.h >

# FUSES NOWDT, HS, NOPUT, PROTECT, NODEBUG, NOBROWNOUT,


NOLVP

#use delay(clock=8000000)

#INT_TIMER1

Unsigned char maled [9] = {0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};

Void qled()

For (int8 k=0; k<50; k++)

For (int8 i=0; i<9; i++)

{output_c (maled [i]); delay_ms (300);}}}

Void main ()

{
enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER1);
Setup_timer_1(T1_INTERNAL| T1_DIV_BY_8)
while(TRUE);
}}

You might also like