#include<reg51.h>
sbit P33 = P3^3;
sbit LED1 = P3^4;
sbit LED2 = P3^5;
sbit LED3 = P3^7;
void delay_30ms(unsigned char i)
{
// 3S = 3000mS = 100*30mS
// 30ms = 65536-( (30*10^-3)/(12/(11.0592*10^6)) ) = 37888
// 37888 = 0x5580
TL1=0x80; // load TL with 0x00
TH1=0x55; //load TH with 0xDC
TF1=0; //clear timer1 flag
TR1=1; //start Timer1
for( ; i ; i--) {
while(!TF1){;} //wait for timer1 overflow
TL1=0x80; // load TL with 0x00
TH1=0x55; //load TH with 0xDC
TF1=0; //clear timer1 flag
}
TR1=0; //stop Timer1
}
void main(void)
{
TMOD = 0x10; //Timer 1, mode 1 (16-bit)
while(1){
delay_30ms(100); // 3s
if(P33==1){
LED1 = 0;
LED2 = 1;
LED3 = 0;
}
else{
LED1 = 1;
LED2 = 0;
LED3 = 1;
}
}
}
อยากเขียนแบบใช้ timer2 auto reload ค่า tl2 th2 ครับ ใครพอจะมีตัวอย่างให้ดูบ้างไหมครับ ขอบคุณพี่ขนมสาคูที่ช่วยแก้โค้ดข้างบนด้วยครับ
ช่วยดูโปรแกรมหน่อยครับ
sbit P33 = P3^3;
sbit LED1 = P3^4;
sbit LED2 = P3^5;
sbit LED3 = P3^7;
void delay_30ms(unsigned char i)
{
// 3S = 3000mS = 100*30mS
// 30ms = 65536-( (30*10^-3)/(12/(11.0592*10^6)) ) = 37888
// 37888 = 0x5580
TL1=0x80; // load TL with 0x00
TH1=0x55; //load TH with 0xDC
TF1=0; //clear timer1 flag
TR1=1; //start Timer1
for( ; i ; i--) {
while(!TF1){;} //wait for timer1 overflow
TL1=0x80; // load TL with 0x00
TH1=0x55; //load TH with 0xDC
TF1=0; //clear timer1 flag
}
TR1=0; //stop Timer1
}
void main(void)
{
TMOD = 0x10; //Timer 1, mode 1 (16-bit)
while(1){
delay_30ms(100); // 3s
if(P33==1){
LED1 = 0;
LED2 = 1;
LED3 = 0;
}
else{
LED1 = 1;
LED2 = 0;
LED3 = 1;
}
}
}
อยากเขียนแบบใช้ timer2 auto reload ค่า tl2 th2 ครับ ใครพอจะมีตัวอย่างให้ดูบ้างไหมครับ ขอบคุณพี่ขนมสาคูที่ช่วยแก้โค้ดข้างบนด้วยครับ