เกี่ยวกับPIC16f627a
หน้า: [1] 2   ลงล่าง
  พิมพ์  
ผู้เขียน หัวข้อ: เกี่ยวกับPIC16f627a  (อ่าน 35932 ครั้ง)
got_extra
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 73


อีเมล์
« เมื่อ: กรกฎาคม 28, 2010, 07:52:49 pm »

PIC16f627a มันสามารถเขียนโปรแกรมให้เป็นไฟวิ่งรูปแบบต่างๆหลายรูปแบบได้เปล่าครับ.....

คือว่าผมอยากทำแบบไฟวิ่งซัก8ดวง มี5รูปแบบ มีสวิสหนึ่งตัวกดหนึ่งครั้งเป็นไฟวิ่งรูปแบบ1  กดอีกครั้งเป็นไฟวิ่งรูปแบบ2  .............กดแล้วเปลียนไปเรื่อยๆ.จนวนกลับมาทึี่รูปแบบ1....แบบนี้อ่ะครับ...จะต้องเขียนโค้ดโปรแกรมยังไงอ่ะครับ...

 


บันทึกการเข้า

JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #1 เมื่อ: กรกฎาคม 29, 2010, 11:46:09 am »

ทำได้ครับ แล้วจะเขียนภาษาอะไรล่ะ....
บันทึกการเข้า
got_extra
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 73


อีเมล์
« ตอบ #2 เมื่อ: กรกฎาคม 29, 2010, 05:33:34 pm »

เขียนเป็นภาษาซีครับ.....
บันทึกการเข้า
got_extra
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 73


อีเมล์
« ตอบ #3 เมื่อ: กรกฎาคม 30, 2010, 07:29:00 pm »

ใครเขียนเป็นช่วยบอกทีครับ...........
บันทึกการเข้า
kiano♥
kiano555@gmail.com
กลุ่มสนับสนุนLSV+มีน้ำใจ
member
****

คะแนน337
ออฟไลน์ ออฟไลน์

กระทู้: 570


การให้น่าภูมิใจกว่าได้รับ Line ID : Tech64

kiano555@windowslive.com kiano555@yahoo.com
เว็บไซต์ อีเมล์
« ตอบ #4 เมื่อ: กรกฎาคม 30, 2010, 09:25:16 pm »

เขียนเป็นครับ ใจเย็นๆหน่อย สิฟ้าวไปไส
บันทึกการเข้า
got_extra
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 73


อีเมล์
« ตอบ #5 เมื่อ: กรกฎาคม 30, 2010, 10:40:04 pm »

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

โค้ดตามนี้ครับ
main()
{
  char i=0;
  cmcon=0x07;
  portA=0xFF;
  portB=0x00;
  while(1)
  {
  for(i=0;i<2;i++)
   {
   PORTB=(i);
    while(PORTA.F0==1)
   {
   }
     Delay_ms(500);
    }
if(i==0)
    {
      portB=0b11111111;
      Delay_ms(500);
      portB=0b00000000;
      Delay_ms(500);
    }
    else
    if(i==1)
    {
      portB=0b11110000;
      Delay_ms(500);
      portB=0b00001111;
      Delay_ms(500);
    }
    else
    {
      portB=0b11000000;
      Delay_ms(500);
      portB=0b00110000;
      Delay_ms(500);
      portB=0b00001100;
      Delay_ms(500);
      portB=0b00000011;
      Delay_ms(500);
    }
}
}
บันทึกการเข้า
kiano♥
kiano555@gmail.com
กลุ่มสนับสนุนLSV+มีน้ำใจ
member
****

คะแนน337
ออฟไลน์ ออฟไลน์

กระทู้: 570


การให้น่าภูมิใจกว่าได้รับ Line ID : Tech64

kiano555@windowslive.com kiano555@yahoo.com
เว็บไซต์ อีเมล์
« ตอบ #6 เมื่อ: กรกฎาคม 30, 2010, 10:51:36 pm »

ผมว่าผมเคยตอบไปแล้วนะปัญหาข้อนี้

1. โค๊ดผ่าน แต่ไม่ใช่ว่าถูก เช่นเลือกค่า configuration ของ pic ถูกแล้วหรือยัง ตรงด้านล่าง While จะมี for() อยู่ใส่ไว้ทำไม เท่าที่ดูโค๊ดมีผิดหลายที่นะ ใส่วงเล็บไว้ก็ไม่ครบ
2. ต่อวงจรถูกแล้วหรือยัง สวิทช์ต่อถูกไหม มีอาร์พูลอัพหรือเป่า ต่อแบบใช้คริสตอลไหม หรือว่าใช้ system osc ภายใน

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

ลองเอาโค๊ดนี่ไปทดสอบดู วงจรก็ให้ต่อแบบที่แนบมา รับรองทำงานได้เลย วิ่งปรู๊ดๆ เลือกได้ 5 แบบ จริงๆแล้วปรับเลือกความเร็วได้ด้วย แต่ยังไม่ได้เขียนใส่ ให้เขียนต่อเอง

//----------------------------------------------------------------------------
void timer(void){
  char p=0;
  for(p=0;p<20;p++){
    delay_ms(10);
    if(portA.F0==1){
      goto point_out;
    }
  }
  point_out:
}

main(){
char i=0;
cmcon=0x07;
trisA=0xFF;
trisB=0x00;
  while(1){
check_sw:
    if(portA.F0==1){
      i=i+1;
      while(portA.F0==1){;}
    }
    if(i>=6){i=0;}
   
if(i==0){
  portB=0b00000000;
  timer();
  portB=0b11111111;
  timer();
  goto check_sw;
}

if(i==1){
  portB=0b00000011;
  timer();
  portB=0b00001100;
  timer();
  portB=0b00110000;
  timer();
  portB=0b11000000;
  timer();
  goto check_sw;
}

if(i==2){
  portB=0b11000000;
  timer();
  portB=0b00110000;
  timer();
  portB=0b00001100;
  timer();
  portB=0b00000011;
  timer();
  goto check_sw;
}

if(i==3){
  portB=0b10000001;
  timer();
  portB=0b01000010;
  timer();
  portB=0b00100100;
  timer();
  portB=0b00011000;
  timer();
  goto check_sw;
}

if(i==4){
  portB=0b00011000;
  timer();
  portB=0b00100100;
  timer();
  portB=0b01000010;
  timer();
  portB=0b10000001;
  timer();
  goto check_sw;
}
   
if(i==5){
  portB=0b11110000;
  timer();
  portB=0b00001111;
  timer();
  goto check_sw;
}
   
  } // end while-1
} // end main
//-------------------------------------------------------------------
บันทึกการเข้า
got_extra
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 73


อีเมล์
« ตอบ #7 เมื่อ: กรกฎาคม 31, 2010, 06:03:01 pm »

ยังอยู่ให้ขั้นเริ่มต้นครับพึ่งเล่นได้3อาทิตย์(มือใหม่ข้ามขั้นอยากเป็นเร็วๆ...อิอิ) เขียนให้ledกระพริบเป็นจังหวะตามที่ต้องการได้ ทำไฟวิ่งได้ เขียนให้กดสวิสinput ไฟติดกดสวิสไฟดับได้หนึ่งดวง...และแบบง่ายๆประมาณนี้ครับ.......

ขอบคุณมากครับทำได้แล้ว......เดี๋ยวผมจะลองทำให้มันปรับความเร็วได้ดู......แนะแนวทางซักนิดก็ดีครับมือใหม่จริงๆ... lv!
บันทึกการเข้า
got_extra
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 73


อีเมล์
« ตอบ #8 เมื่อ: สิงหาคม 01, 2010, 10:41:41 am »

ขอเสริมหน่อยครับ ผมต่อแบบใช้คริสตอลมาโดยตลอด  แล้วถ้าจะต่อแบบใช้ system osc ภายใน(คือต่อแบบไม่ใช้คริสตอล) ต้องตั้งค่าอย่างไรครับ...... แล้วการต่อแบบใช้คริสตอลกับต่อแบบใช้ system osc ภายในมันแตกต่างการอย่างไร(ข้อดีข้อเสีย)การทำงานเหมือนกันเปล่า.... Sad
บันทึกการเข้า
kiano♥
kiano555@gmail.com
กลุ่มสนับสนุนLSV+มีน้ำใจ
member
****

คะแนน337
ออฟไลน์ ออฟไลน์

กระทู้: 570


การให้น่าภูมิใจกว่าได้รับ Line ID : Tech64

kiano555@windowslive.com kiano555@yahoo.com
เว็บไซต์ อีเมล์
« ตอบ #9 เมื่อ: สิงหาคม 02, 2010, 10:06:10 am »

- osc ภายใน ความเร็วสูงสุดได้แค่ 4 Mhz แต่ใช้คริสตอลได้สูงสุด 20Mhz
- osc ภายใน ความเสถียรต่ำ เปลี่ยนแปลงได้ตามภาวะอุณภูมิ เพราะเป็นแบบ RC ไม่เหมาะกับวงจรที่ต้องการความแม่นยำสูง แต่ใช้คริสตอล จะเสถียรมากกว่า
- osc ภายใน ไม่ต้องต่ออุปกรณ์เพิ่มเติมเพียงแค่เลือกตั้งค่าใน configuration bit ก็ใช้งานได้แล้ว ใช้คริสตอลต้องต่อคริสตอล ต่อซีคัพปลิ้ง

เท่าที่รู้มาก็แบบนี้นะครับ
การใช้งาน osc ภายในให้เปิดดาต้าชีทในหัวข้อ Configuration Bits หรือ CONFIGURATION WORD
เพราะแต่ละโปรแกรมการตั้งค่าจะไม่อยู่ที่เดียวกันแต่จุดประสงค์ก็คือตั้งค่าบิตพวกนี้นั่นเอง อย่าง MikroC ก็จะมีการตั้งค่าโดยเลือกตอนสร้างโปรเจค
หรือเลือกแถบเมนู Project --->Edit Project แล้วเลือกติ๊กถูกตรงหน้าช่องที่ต้องการกำหนด โดยดูอ้างอิงจากดาต้าชีท ว่าตัวไหนกำหนดอย่างไร
บันทึกการเข้า
got_extra
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 73


อีเมล์
« ตอบ #10 เมื่อ: สิงหาคม 04, 2010, 07:17:44 pm »

ขอบคุณครับ............
บันทึกการเข้า
got_extra
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 73


อีเมล์
« ตอบ #11 เมื่อ: สิงหาคม 08, 2010, 07:57:11 pm »

เพิ่มเติมครับ ..โดยปกติเราจ่ายไฟให้วงจร วงจรจะเริ่มทำงานให้แบบที่1ก่อนพอเรากดสวิสก็จะเป็นแบบที่2  แบบที่3.......เป็นอย่างนี้ไปเรื่อยๆ  สมมุติว่่าวงจรทำงานอยู่ที่แบบที่3แล้วเอาแบตออก พอต่อแบตใหม่วงจรก็จะเริ่มต้นทำงานใหม่ในแบบที่1 แต่ผมอยากให้ต่อแบตใหม่วงจรก็จะทำงานแบบที่3เหมือนเดิม (แบบให้มันจำค่าครั้งสุดท้ายที่เอาแบตออก) จนกว่าจะกดสวิสจึงจะเปลี่ยนรูปแบบ  จะทำได้เปล่าครับ...
บันทึกการเข้า
kiano♥
kiano555@gmail.com
กลุ่มสนับสนุนLSV+มีน้ำใจ
member
****

คะแนน337
ออฟไลน์ ออฟไลน์

กระทู้: 570


การให้น่าภูมิใจกว่าได้รับ Line ID : Tech64

kiano555@windowslive.com kiano555@yahoo.com
เว็บไซต์ อีเมล์
« ตอบ #12 เมื่อ: สิงหาคม 08, 2010, 09:26:24 pm »

ได้ เก็บค่าตัวแปรที่ควบคุมรูปแบบไว้ใน EE-Prom เวลาเปิดขึ้นมาใหม่ ก็ให้อ่านค่าตัวแปรนั้นจาก EE-Prom ที่เราเก็บไว้มาใช้งาน
PIC16F627A ที่ใช้อยู่ก็มี EE-Prom อยู่ภายในด้วย การใช้งานถ้าโปรแกรม MikroC ก็ให้อ่านจาก Help
บันทึกการเข้า
got_extra
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 73


อีเมล์
« ตอบ #13 เมื่อ: สิงหาคม 09, 2010, 12:23:16 pm »

ได้ เก็บค่าตัวแปรที่ควบคุมรูปแบบไว้ใน EE-Prom เวลาเปิดขึ้นมาใหม่ ก็ให้อ่านค่าตัวแปรนั้นจาก EE-Prom ที่เราเก็บไว้มาใช้งาน
PIC16F627A ที่ใช้อยู่ก็มี EE-Prom อยู่ภายในด้วย การใช้งานถ้าโปรแกรม MikroC ก็ให้อ่านจาก Help

ลองอ่านดูแล้วครับ และลองอ่านกระทู้จากในgoogleแล้ว แต่ผมไม่เข้าใจจริงๆ.....มันต้องกำหนดค่าในโปรแกรม MikroC  หรือมันต้องเขียนโค้ดเพิ่มครับ...ถ้ามันต้องเขียนโค้ดเพิ่มช่วยยกตัวอย่างให้ดูหน่อยครับจากโค้ดข้างบนก็ได้อธิบายให้ผมด้วยก็ดีครับผมจะได้เข้าใจง่ายๆ......  ***ปล. ขอบคุณมากครับที่สอนผมมาโดยตลอดตอนนี้ผมเริ่มเข้าใจในหลายๆเรื่องแล้วครับ..... lv!**
บันทึกการเข้า
kiano♥
kiano555@gmail.com
กลุ่มสนับสนุนLSV+มีน้ำใจ
member
****

คะแนน337
ออฟไลน์ ออฟไลน์

กระทู้: 570


การให้น่าภูมิใจกว่าได้รับ Line ID : Tech64

kiano555@windowslive.com kiano555@yahoo.com
เว็บไซต์ อีเมล์
« ตอบ #14 เมื่อ: สิงหาคม 09, 2010, 01:38:40 pm »

ยกตัวอย่างโค๊ดบางส่วนมาจากด้านบนครับ

main(){
char i=0;            // ประกาศตัวแปร i เพื่อใช้เป็นตัวเลือกรูปแบบไฟวิ่ง
cmcon=0x07;     // ให้พอตทำงานแบบดิจิตอล
trisA=0xFF;        // ให้พอตเอ ทั้งหมดเป็น อินพุต
trisB=0x00;       // ให้พอตบี ทั้งหมดเป็น เอาพุต
i=eeprom_read(0x00);  // อ่านค่าจาก EE-Prom ในตำแหน่ง 0x00 แล้วเก็บค่าที่อ่านได้ในตัวแปร i
  while(1){
check_sw:
    if(portA.F0==1){   // ถ้ามีการกดสวิทช์ให้ทำงานภายในวงเล็บ
      i=i+1;                  // ตัวแปร i เพิ่มค่าขึ้นทีละ 1 ค่า
      while(portA.F0==1){;}  // ถ้ายังกดสวิทช์ค้างอยู่ ให้วนในลูป จนกว่าจะปล่อยสวิทช์
      if(i>=6){i=0;}               // กำหนดให้ i มีค่าไม่เกิน 6
      eeprom_write(0x00,i);  // เก็บค่า i ไว้ใน EE-Prom ในตำแหน่ง 0x00
    }
   
      ...
      ...
      ...

EE-Prom ในแต่ละตำแหน่งจะอ่านและเขียนได้ 1,000,000 ครั้งเท่านั้น ถ้าเกินกว่านี้จะทำให้อีพรอมตำแหน่งนั้นเสีย ดังนั้นในโปรแกรมของเราต้องดูให้ดี อย่าให้มีการวนลูปเขียนข้อมูลซ้ำๆเข้าในอีพรอม ตัวอย่างโปรแกรมที่เขียนให้ดู จะอ่านอีพรอมเฉพาะตอนที่เริ่มจ่ายไฟเข้าเครื่องเท่านั้น และจะเขียนอีพรอมเฉพาะตอนที่กดสวิทช์เท่านั้น

ถ้าวงจรของท่านกำหนดความถี่ที่ 4Mhz มันจะทำงานที่ความเร็ว 1 ล้านครั้งต่อ 1 คำสั่ง ดังนั้น ถ้าโปรแกรมมีการวนลูปในการอ่านและเีขียนอีพรอม อีพรอมตำแหน่งนั้นๆจะพังภายใน 1-2 วินาที
บันทึกการเข้า
got_extra
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 73


อีเมล์
« ตอบ #15 เมื่อ: สิงหาคม 09, 2010, 02:15:25 pm »

ผมใช้osc ภายในครับ ถ้าผมเขียนEE-Promในโค้ดด้านบนที่เป็นไฟวิ่ง5แบบจะได้เปล่าครับpicมันจะพังเปล่า

และที่ว่าEE-Prom ในแต่ละตำแหน่งจะอ่านและเขียนได้ 1,000,000 ครั้งเท่านั้น และตัวอย่างที่บอกจะเขียนอีพรอมเฉพาะตอนที่กดสวิทช์เท่านั้นหมายถึงถ้าผมกดสวิสเปลี่ยนรูปแบบใช้ไป 1,000,000 ครั้ง pic มันจะเสียเหรอครับผมเข้าใจถูกเปล่า ....
บันทึกการเข้า
oley02
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 6


« ตอบ #16 เมื่อ: สิงหาคม 10, 2010, 02:04:34 pm »

ไม่เสีย...ครับ  มันจะด้าน...  Smiley
บันทึกการเข้า
got_extra
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 73


อีเมล์
« ตอบ #17 เมื่อ: สิงหาคม 10, 2010, 06:46:41 pm »

แล้วผมอ่านในหนังสือเขาบอกว่า 'มีระบบป้องกันการคักลอกข้อมูล'  มันหมายถึงตั้งพาสเวอดให้picเปล่าครับ.. ถ้าผมจะตั้งมันต้องไปเซตค่ายังไงอ่ะครับในหนังสือเขาไม่บอกว่าต้องทำยังไง..... Sad
บันทึกการเข้า
got_extra
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 73


อีเมล์
« ตอบ #18 เมื่อ: สิงหาคม 10, 2010, 06:57:01 pm »

ไม่เสีย...ครับ  มันจะด้าน...  Smiley

มันด้านนี่หมายถึง ผมกดสวิสเปลี่ยนรูปแบบไป1,000,000ครั้ง จากนั้นมันจะไม่จำข้อมูลไว้ในEE-Promแล้ว แต่ระบบที่เขียนไว้อย่างอื่นสามารถใช้ได้ปกติ  กดสวิสเปลี่ยนรูปแบบได้ปกติ  ไฟวิ่งที่เขียนไว้ติดตามปกติ  ขาดแต่พอถอดไฟออก แล้วจ่ายไฟใหม่มันจะเริ่มรูปแบบ 1 มันจะไม่เก็บค่าตัวแปรที่ควบคุมรูปแบบไว้ ประมาณนี้เปล่าครับ.....
บันทึกการเข้า
got_extra
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 73


อีเมล์
« ตอบ #19 เมื่อ: สิงหาคม 11, 2010, 05:36:10 pm »

เงียบเลย...
บันทึกการเข้า
kiano♥
kiano555@gmail.com
กลุ่มสนับสนุนLSV+มีน้ำใจ
member
****

คะแนน337
ออฟไลน์ ออฟไลน์

กระทู้: 570


การให้น่าภูมิใจกว่าได้รับ Line ID : Tech64

kiano555@windowslive.com kiano555@yahoo.com
เว็บไซต์ อีเมล์
« ตอบ #20 เมื่อ: สิงหาคม 11, 2010, 08:56:41 pm »

เวบบอร์ดก็คือเวบบอร์ดครับ ต้องทำใจ บางทีคำตอบมันก็ไม่ไ่ด้มาง่ายๆ ได้่มาแต่ก็ไม่ตรงคำถามเป๊ะๆ แต่ก็ต้องเอาไปเป็นแนวทาง
ไม่ได้กั๊ก แต่บอกไปง่ายๆเด่วก็ลืม
ต้องพยามช่วยตัวเองบ้าง
คำถามเรื่องป้องกันการก๊อปข้อมูลนั้น คำตอบอยู่ในหัวข้อที่ 9 กลับไปอ่าน แล้วทำตามหลายๆรอบ อ่านรายละเอียดให้เยอะๆ ว่าที่มันให้ติ๊กตรงช่องต่างๆ นั้นมันหมายความว่าอะไร
เรื่อง EE-Prom ด้านนั้นผมก็ยังไม่แน่ใจ ว่ามันด้านแล้ว มันจะอ่านข้อมูลออกมาไม่ได้ หรือว่ามันเป็นอย่างไร ยังไม่เคยได้ลองถึงขั้นนั้น

บันทึกการเข้า
got_extra
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 73


อีเมล์
« ตอบ #21 เมื่อ: สิงหาคม 11, 2010, 10:05:48 pm »

ขอบคุณครับทำได้แล้วตอนนี้..........

ส่วนเรื่องเรื่อง EE-Prom ด้าน มันจะอ่านข้อมูลได้เปล่าใครลองแล้วเป็นยังไงเอาข้อมูลมาแชร์ด้วยกันหน่อยนะครับ....... ping!
บันทึกการเข้า
kiano♥
kiano555@gmail.com
กลุ่มสนับสนุนLSV+มีน้ำใจ
member
****

คะแนน337
ออฟไลน์ ออฟไลน์

กระทู้: 570


การให้น่าภูมิใจกว่าได้รับ Line ID : Tech64

kiano555@windowslive.com kiano555@yahoo.com
เว็บไซต์ อีเมล์
« ตอบ #22 เมื่อ: สิงหาคม 11, 2010, 10:30:05 pm »

ถ้าไฟวิ่งของท่าน กดเปลี่ยนค่าวันละ 100 ครั้ง
อีพรอมตำแหน่งนั้นจะมีอายุการใช้งาน 1000000/100=10000 วัน หรือ 10000/365=27 ปี!!
ถ้าใช้ตำแหน่งที่ 0x00 ผ่านไปแล้ว 27 ปีกลัวว่ามันจะพัง ก็ให้เปลี่ยนไปใช้ตำแหน่งอื่นอีก เพราะมันยังเหลือให้ท่านใช้งานอีก 127 ตำแหน่ง
สรุปได้ว่า ไฟวิ่งของท่านต้องเอามาอัพข้อมูลเพื่อเปลี่ยนตำแหน่งอีพรอมทุกๆ 27 ปี
รวมอายุการใช้งานไฟวิ่งและของอีพรอมในปิคตัวนี้เป็น 128x27=3465 ปีครับผม
บันทึกการเข้า
got_extra
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 73


อีเมล์
« ตอบ #23 เมื่อ: สิงหาคม 12, 2010, 11:08:34 am »

ขอบคุณครับเข้าใจกระจ่างเลย.......
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #24 เมื่อ: สิงหาคม 15, 2010, 11:29:24 pm »

ถ้า lock data แล้ว จะทำใ้ห้อายุการใช้งานของ flash สั้นลงมากนะครับควร lock เมื่อทำเป็น product ที่สมบูรณ์แล้วเท่านั้น
เวลา programs pic ไม่จำเป็นต้องลบก่อนครับเขียนทับได้เลย
ยืดอายุ flash ได้อีก (mcs-51 ต้องลบก่อนไม่งั้นเขียนไม่ได้....เวงเอ้ย) ซึ่งถ้าเราใช้ bootloader ก็จะเป็นลักษณะนี้....
ส่วนที่ว่า eeprom มันด้าน มันก็เหมือนเอาปากกาหมึกหมดไปเขียนหนังสือ ถามว่าเขียนได้มั๊ย ตอบ...เขียนได้ แต่รู้มั๊ยว่าเขียนอะไรไปบ้าง ตอบ...Huh?
ซึ่งมันจะไปมีปัญหาตอน verify ครับ ว่าข้อมูลที่อ่านกับเขียนไม่ตรงกัน แล้วก็ error ... จบ Cheesy
บันทึกการเข้า
got_extra
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 73


อีเมล์
« ตอบ #25 เมื่อ: กันยายน 08, 2010, 09:35:44 pm »

ขอบคุณครับ.........................


แล้วจากโค้ดด้านบนคำสั่ง  asm{}  เป็นคำสั่งอะไรหรอครับ....มันมีหลักการใช้ยังไงช่วยอธิบายให้หน่อยนึงครับ......
บันทึกการเข้า
kiano♥
kiano555@gmail.com
กลุ่มสนับสนุนLSV+มีน้ำใจ
member
****

คะแนน337
ออฟไลน์ ออฟไลน์

กระทู้: 570


การให้น่าภูมิใจกว่าได้รับ Line ID : Tech64

kiano555@windowslive.com kiano555@yahoo.com
เว็บไซต์ อีเมล์
« ตอบ #26 เมื่อ: กันยายน 09, 2010, 06:22:55 am »

ที่โปรแกรม MikroC กดปุ่ม F1 ที่คีย์บอร์ดเพื่อเปิด Help ในช่องค้นหาพิมพ์คำที่สงสัยลงไป เช่น asm

บันทึกการเข้า
got_extra
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 73


อีเมล์
« ตอบ #27 เมื่อ: กันยายน 10, 2010, 09:03:54 am »

ผมลองเข้าไปอ่านดูแล้วครับแต่ยังไม่ค่อยเข้าใจ..ภาษาอังกฤษไม่แข็งแรง....
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #28 เมื่อ: กันยายน 10, 2010, 08:24:26 pm »

ขอบคุณครับ.........................


แล้วจากโค้ดด้านบนคำสั่ง  asm{}  เป็นคำสั่งอะไรหรอครับ....มันมีหลักการใช้ยังไงช่วยอธิบายให้หน่อยนึงครับ......

ใช้แทรกคำสั่งภาษา asm ครับ...
บันทึกการเข้า
หน้า: [1] 2   ขึ้นบน
  พิมพ์  
 
กระโดดไป: