[PIC TUTORIAL] Bài 3 Định thời tạo xung vuông có tần số 100Hz, duty cycle 40% tại RD0
Sơ đồ mạch điện
Chương trình mẫu
DOWNLOAD FILE MÔ PHỎNG + CODE
(Bấm vào link đợi 5s, sau đó bấm "Skip Ad" sẽ ra link download)
Chương trình mẫu
#include "16f887.h"
#include "def_16f887.h"
#fuses HS,PUT,NOWDT,NOPROTECT,NOLVP
#use delay(Clock = 8000000) //Thach anh 8MHz
#define offset 20 //
int8 temp = 0;
#int_TIMER1
void TIMER1_isr(void)
{
set_timer1(63536+offset);
temp++;
if(temp==10) temp=0;
if(temp <=4) RD0 = 1;
else RD0 = 0;
}
void main()
{
//Khoi tao T1 va ngat.
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); //T1 dem xung noi, ti le chia 1
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
set_timer1(63536+offset); //Thach anh 8 MHz => CK may = 4/8 = 0,5us
//1000US ngat 1 lan = 2000xung = 65536 - 63536
//Thiet lap cac pin xuat nhap
set_tris_d(0x00); //PORTD xuat du lieu.
//----------------------------
while(1);
}
DOWNLOAD FILE MÔ PHỎNG + CODE
(Bấm vào link đợi 5s, sau đó bấm "Skip Ad" sẽ ra link download)
No comments