พิมพ์หน้านี้ - ช่วยด้วยครับ....คอมไพล์แล้วerror

LSVคลังสมองออนไลน์ "ปีที่14"

► อิเล็กทรอนิกส์ ► => ใช้งานPICด้วยภาษาASM => ข้อความที่เริ่มโดย: got_extra ที่ กรกฎาคม 24, 2010, 08:46:14 pm



หัวข้อ: ช่วยด้วยครับ....คอมไพล์แล้วerror
เริ่มหัวข้อโดย: got_extra ที่ กรกฎาคม 24, 2010, 08:46:14 pm
int conv7segment(in number);
main()
 {
  int i;
  TRISB = 0x00;
  CMCON = 0x07;
  while(1)
  {
    for(i=0;i<10;i++)
   {
   PORTB=(i);
    while(PORTA.F0==1);
   {
   }
     Delay_ms(1000);
    }
  }
}
int conv7segment(int number);
{
  switch (number);
  {
   case 1; return 0x06;
   case 2; return 0x5b;
   case 3; return 0x4f;
   case 4; return 0x66;
   case 5; return 0x6d;
   case 6; return 0x7d;
   case 7; return 0x07;
   case 8; return 0x7f;
   case 9; return 0x6f;
   case 0; return 0x3f;
   }
}

ตามนั้นครับคอมไพล์แล้วerror ต้องแก้ตรงไหนอีกครับ...... cry2!!


หัวข้อ: Re: ช่วยด้วยครับ....คอมไพล์แล้วerror
เริ่มหัวข้อโดย: kiano♥ ที่ กรกฎาคม 24, 2010, 10:28:36 pm
แก้หลายที่ ดูเปรียบเทียบเองแล้วกัน
ทำไมไม่ลองดูว่ามันเออเร่ออย่างไร แล้วค่อยๆไล่ไป
ฟังก์ชั่น conv7segment เขียนขึ้นมาแต่ไม่มีการเรียกใช้งาน งง
ถ้าไม่รู้ว่าจะแก้อย่างไร ก็ลองเขียนทีละน้อยๆ แล้วกดคอมไพไปเรื่อยๆครับ

int conv7segment(int number);
main()
 {
  int i;
  TRISB = 0x00;
  CMCON = 0x07;
  while(1)
  {
    for(i=0;i<10;i++)
   {
   PORTB=(i);
    while(PORTA.F0==1)
   {
   }
     Delay_ms(1000);
    }
  }
}
int conv7segment(int number)
{
 switch (number)
  {
   case 1: return 0x06;
   case 2: return 0x5b;
   case 3: return 0x4f;
   case 4: return 0x66;
   case 5: return 0x6d;
   case 6: return 0x7d;
   case 7: return 0x07;
   case 8: return 0x7f;
   case 9: return 0x6f;
   case 0: return 0x3f;
   }
}


หัวข้อ: Re: ช่วยด้วยครับ....คอมไพล์แล้วerror
เริ่มหัวข้อโดย: got_extra ที่ กรกฎาคม 24, 2010, 11:14:18 pm
ขอบคุณมากครับทำได้แล้ว........ lv!

แล้วถ้าจะสั่งให้ตรง case 1: return 0x06; (แสดงเป็นเลข1) มันกระพริบจะทำได้เปล่าครับต้องใช้คำสั่งอะไรรบกวนหน่อยครับ.....(พึงเล่นpicได้3วันเองแต่เริ่มชอบแล้ว..อิอิ) ping!


หัวข้อ: Re: ช่วยด้วยครับ....คอมไพล์แล้วerror
เริ่มหัวข้อโดย: kiano♥ ที่ กรกฎาคม 25, 2010, 07:44:25 am
ให้ทดลองกับโค๊ดนี้นะ
//
//   counter 0~9 PIC16F628
//                          0 1  2  3  4   5   6   7  8   9
unsigned const number[10]={63,6,91,79,102,109,125,39,127,111};

main(){
char i;
cmcon=0x07;
trisA=0x00;
trisB=0x00;
while(1){
  i++;
  if(i>=10){
    i=0;
  }
  portB=number[ไอ];
  delay_ms(500);
  portB=0x00;
  delay_ms(500);
} // end while(1)
} // end main


หัวข้อ: Re: ช่วยด้วยครับ....คอมไพล์แล้วerror
เริ่มหัวข้อโดย: got_extra ที่ กรกฎาคม 25, 2010, 09:44:16 am
แบบนี้คอมไพล์ผ่าน แต่พอมาต่อวงจรไม่มีอะไรเกิดขึ้นเลยครับงง........ผมใช้PIC16F627Aครับ............. shocked2


หัวข้อ: Re: ช่วยด้วยครับ....คอมไพล์แล้วerror
เริ่มหัวข้อโดย: got_extra ที่ กรกฎาคม 25, 2010, 05:24:50 pm
แบบข้างบนผมต่อวงจรแล้วไม่เกิดอะไรเลยครับ.....คอมไฟล์ก็ผ่าน....

*****
ถ้าจะลองแบบนี้ได้เปล่าครับ.....(เป็นไฟได้กระพริบ3รูปแบบมีสวิสกดเปลี่ยนรูปแบบ).หรือจะต้องแก้ตรงไหนอีกครับเพราะผมคอมไฟล์แล้วผ่านแต่ต่อวงจรไม่มีอะไรเกิดขึ้น....ป.ล.ผมใช้pic 16F627A ใช้คลิสตอล 4MHz. ต่อสวิสเปลี่ยนรูปแบบเข้าที่ขา17   shocked2
 
main()
{
  char p=0;       
  cmcon=0x07;   
  portA=0xFF;     
  portB=0x00;     
  while(1)
  {
    if(portA.f0==0)
    {
      p++;
      while(portA.f0==0)
      {
        portB=0xFF;       
      }
      if(p>2)
      {
        p=0;
      }
    }
    if(p==0)                   
    {
      portB=0b11111111;
      delay_ms(500);
      portB=0b00000000;
      delay_ms(500);
      portB=0b00001111;
      delay_ms(500);
      portB=0b11100000;
      delay_ms(500);
    }
else
{
    if(p==1)                 
    {
      portB=0b11110000;
      delay_ms(500);
      portB=0b00001111;
      delay_ms(500);
      portB=0b11111111;
      delay_ms(500);
      portB=0b00000000;
      delay_ms(500);
    }
else
{                 
      portB=0b11000000;
      delay_ms(500);
      portB=0b00110000;
      delay_ms(500);
      portB=0b00001100;
      delay_ms(500);
      portB=0b00000011;
      delay_ms(500);
    }
    }
 
  }
}
void timer(void)
{
  delay_ms(100);
}