ช่วยดูโปรแกรม (c microcontroller) ให้หน่อยครับ

Post a reply

Smilies
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: ช่วยดูโปรแกรม (c microcontroller) ให้หน่อยครับ

ช่วยดูโปรแกรม (c microcontroller) ให้หน่อยครับ

by chanonzaza » 11/12/2012 1:56 am

อยากขอคำปรึกษาครับ คือ เป็นวงจรตรวจสอบกราวน์ครับ ตัวเครื่องจะติดอยู่กับคน ใช้หลักการถ่ายเทประจุ เมื่อผู้ใช้ใส่รองเท้าหรือไม่ได้เตะกับสิ่งใดๆไฟจะเตือนสีเขียว ถ้าถอดรองเท้าหรือไปแตะกับสิ่งใดๆเกิดการถ่ายเทประจุ ไฟก็จะเตือนขึ้นมาเป็นสีแดงครับ

ปัญหาตอนนี้คือ พยายามเขียนตัวหน่วงเวลา ก็คืออยากให้หน่วงสัญญาณเมื่อเข้ามา 3 วินาที(ป้องกันการแตะปล่อยๆเร็ว) และ หน่วงเวลาอีก3 วินาทีแสดงสัญญาณไฟครับ อันนี้เป็นอันที่ผมเขียนเอง ช่วยดูให้หน่อยครับ ขอบคุณล่วงหน้าครับ

#include<reg51.h>
#include<intrins.h>
sbit P33 = P3^3;
sbit LED1 = P3^4;
sbit LED2 = P3^5;
sbit LED3 = P3^7;
void external1_isr(void);
void delay_10ms(void);

/********Main Program*********/
void main(void)
{
TMOD = 0x01;
IT1 = 1;
EX1 = 1;
EA = 1;

while(1)
{
if(P33 == 1)
{
LED1 = 0;
LED2 = 1;
LED3 = 0;
delay_10ms();
}
else
}
LED1 = 1;
LED2 = 0;
LED3 = 1;
delay_10ms();
}
}
}
void external1_isr(void)interrupt 1
{
P33 =~ P33;
}

/*******Timer Function*******/

void delay_10ms(void)
{
// 12Mhz/12 = 100Khz
// 1/100Khz = 1us
// Over_Time/1us
// 10ms/1us = 10000
// 65536 - 10000 = 55536 = D8F0
TH0 = 0xD8;
TL0 = 0xF0;
TR0 = 1; // Stop Timer0
while(!TF0);
TR0 = 0; // Stop Timer0
TF0 = 0;
}

Top