โปรแกรมนับ 4 หลัก ผมเอามาจากหนังสือ ดัดแปลงมานิดหน่อย
คือมันติดตรงที่ มันนับเร็วไปอ่ะครับ รบกวนพี่ช่วยคำนวณหาค่า Timer1 ให้หน่อยครับ i3,i4 คือหน่วยวินาที อยากให้มันนับเป็นวินาที และให้มันลดลงเรื่อยๆๆ
PIC16f877 Crystal=10MHz
#define digit1 portD.f0
#define digit2 portD.f1
unsigned char segment[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int i1=5,i2=9,i3=2,i4=4;
void interrupt()
{
i4--;
if(i4<0)
{
i4=9;
i3--;
}
if(i3<0)
{
i3=5;
i2--;
}
if(i2<0)
{
i2=9;
i1--;
}
if(i1<0)i1=0;
TMR1H=0X0f;
TMR1L=0x0e;
PIR1.TMR1IF=0x0c;
}
void main()
{
trisB=0;
trisC=0;
trisD=0x00;
trisE=1;
T1CON=0x10;
TMR1H=0x0f;
TMR1L=0x0e;
PIE1.TMR1IE=1;
PIR1.TMR1IF=1;
INTCON.PEIE=0x8b;
INTCON.GIE=1;
T1CON.TMR1ON=0;
//if(portE.f2==1)i1++;
while(1)
{
//if(portE.f2==0)i1++;
digit1=0;digit2=1;
portB=segment[i1];
portC=segment[i3];
delay_ms(50);
digit1=1;digit2=0;
portB=segment[i2];
portC=segment[i4];
delay_ms(50);
}
}
อีกอย่างครับพี่ ผมอยากให้ portE รับค่าจากสวิตท์ แล้วเพิ่มค่าใน i2 ผมลองใช้คำสั่ง if ดูแล้ว มันก็ไม่ได้อ่ะ มันต้องใช้คำสั่งไหนและต้องพิมพ์ที่บรรทัดไหนของโปรแกรมครับ
รบกวนหน่อยนะครับ