วันศุกร์ที่ 31 ตุลาคม พ.ศ. 2557

ปรับจูนช่องทีวี SONYรุ่นKV-SW21M60





ปรับจูนช่องทีวี SONYรุ่นKV-SW21M60
25/8/2557 SONGHAI PRAPATRUNGSEE
ปรับจูนช่องทีวี SONYรุ่นKV-SW21M60

การซ่อมต้องใส่รองเท้า และห้ามเปียกน้ำ
เพราะอาจเป็นอันตรายถึงชีวิตได้

ทีวีประเทศไทย
ระบบภาพ ใช้ระบบPAL หรืออัตโนมัติ
ถ้าใช้ระบบNTSC จะไม่มีสี กลายเป็นภาพขาวดำ

ระบบเสียง ใช้ระบบ B/G
ถ้าใช้ระบบอื่นจะทำให้เสียงซ่า
และอาจทำให้ภาพไม่สวยหรือไม่มีสีด้วย

ช่อง5 อยู่ย่าน VHFบน ความถี่ 175.25MHZ
ช่อง7 อยู่ย่าน VHFบน ความถี่ 189.25MHZ
ช่อง9 อยู่ย่าน VHFบน ความถี่ 203.25MHZ
ช่อง11 อยู่ย่าน VHFบน ความถี่ 217.25MHZ
ช่องITV อยู่ย่าน UHF ความถี่ 535.25MHZ
ช่อง3 อยู่ย่าน UHF ความถี่ 559.25MHZ

ช่อง5  7  9  11 อยู่ย่าน VHFบน
ช่อง ITV กับ ช่อง3 อยู่ย่าน UHF

ช่อง5 จะมีความถี่ต่ำที่สุด
ช่อง3 จะมีความถี่สูงที่สุดตามลำดับ

การตั้งช่องให้เสียบเสาอากาศและกดรีโมทไปที่ทีวีก่อน
จึงจะสามารถตั้งช่องได้
ถ้าเป็นภาษาอังกฤษให้กดเป็นภาษาไทยก่อน
โดยการกดที่ปุ่มMENU
กดเลื่อนลงไปที่SETTING
กดOK
กดเลื่อนลงไปที่SETUP
กดOK กดOK
กดเลื่อนลงไปที่THAI
กดOK
แล้วกดMENUออกมาเท่านี้ก็ได้ภาษาไทยแล้ว

ปรับแบบอัตโมมัติ
กดMENU
กดเลื่อนลงไปที่ ตั้งค่า
กดOK
กดเลื่อนลงไปที่ ปรับช่องทีวี
กดOK
กดOK  ปรับอัตโนมัติ
กดOK  ใช่
เท่านี้ก็จูนอัตโนมัติแล้ว

ปรับแบบเลือกเอง
กดMENU
กดเลื่อนลงไปที่ ตั้งค่า
กดOK
กดเลื่อนลงไปที่ ปรับช่องทีวี
กดOK
กดเลื่อนลงไปที่ ปรับแบบเลือกเอง
กดOK  ที่ ช่อง
กดเลื่อนขึ้นหรือลงเพื่อเลือกเป็นช่อง5
กดOK 
กดเลื่อนลงไปที่ระบบทีวี เลือก B/G
กดเลื่อนลงไปที่ VHFล่างหรือ VHFบน หรือUHF
กดOK
กดเลื่อนซ้าย หรือเลื่อนขวาจนเจอช่องที่ตรงกับช่อง5
กดOK
กดเลื่อนขึ้นไปที่ ช่องแล้วทำตามขั้นตอนเดิมจนครบทุกช่อง
แล้วกดMENUออกมา
เท่านี้ก็จะได้เลขที่ตรงกับช่องที่กดแล้ว

ในกรณีที่ปรับช่องบางช่องไม่ได้ให้ขยับเสาอากาศ


ปรับจูนช่องทีวี SKGรุ่นSK 2019




ปรับจูนช่องทีวี SKGรุ่นSK 2019
21/8/2557 SONGHAI PRAPATRUNGSEE
ปรับจูนช่องทีวี SKGรุ่นSK 2019

การซ่อมต้องใส่รองเท้า และห้ามเปียกน้ำ
เพราะอาจเป็นอันตรายถึงชีวิตได้

ทีวีประเทศไทย
ระบบภาพ ใช้ระบบPAL หรืออัตโนมัติ
ถ้าใช้ระบบNTSC จะไม่มีสี กลายเป็นภาพขาวดำ

ระบบเสียง ใช้ระบบ BG
ถ้าใช้ระบบอื่นจะทำให้เสียงซ่า
และอาจทำให้ภาพไม่สวยหรือไม่มีสีด้วย

ช่อง5 อยู่ย่านV-H ความถี่ 175.25MHZ
ช่อง7 อยู่ย่านV-H ความถี่ 189.25MHZ
ช่อง9 อยู่ย่านV-H ความถี่ 203.25MHZ
ช่อง11 อยู่ย่านV-H ความถี่ 217.25MHZ
ช่องITV อยู่ย่านUHF ความถี่ 535.25MHZ
ช่อง3 อยู่ย่านUHF ความถี่ 559.25MHZ

การตั้งช่องให้กดรีโมทไปที่ทีวีก่อนจึงจะสามารถตั้งช่องได้
ถ้าเป็นภาษาอังกฤษให้กดเป็นภาษาไทยก่อน
โดยการกดที่ปุ่มMENU2ครั้ง
เมื่อเจอLANGUAGE ให้กด+ เพื่อเปลี่ยนเป็นภาษาไทย

กดเมนูไปเรื่อยๆจนกว่าจะเจอโปรแกรมค้นหา
กดลูกศรชี้ลงมาที่ค้นหาอัตโนมัติ
กด+หรือ- จากนั้นทีวีก็จะตั้งช่องไปเรื่อยๆจนครบทุกช่อง
เท่านี้ก็เสร็จแล้ว

แต่ช่องจะไม่ตรงกับตัวเลข
ถ้าต้องการให้ตรงกับตัวเลขก็ต้อง
กดเมนูเข้าไป โปรแกรมค้นหา
แล้วกดลูกศรชี้ลงไปที่ ค้นหาทีละช่อง
ถ้ากด+ ความถี่จะค่อยๆสูงขึ้น
ถ้ากด- ความถี่จะค่อยๆลดลง
ให้กด+หรือ-ไปเรื่อยๆจนกว่าจะเจอช่องที่ต้องการ

ช่อง5  7  9  11 อยู่ย่าน V-H
ช่อง ITV กับ ช่อง3 อยู่ย่าน UHF
ช่อง5 จะมีความถี่ต่ำที่สุด

ช่อง3 จะมีความถี่สูงที่สุด


วันพฤหัสบดีที่ 30 ตุลาคม พ.ศ. 2557

คอมเมนท์ MCS51




คอมเมนท์ MCS51
7/7/2557 SONGCHAI PRAPATRUNGSEE
คอมเมนท์ MCS51

คอมเมนท์(COMMENT)แปลว่า คำอธิบาย
// เครื่องหมายสแลช 2อัน
เป็นคำอธิบายได้ 1บรรทัด

/* */ เครื่องหมายสแลชดอกจัน ดอกจันสแลช
เป็นคำอธิบายได้ตั้งแต่ 1บรรทัดจนถึงหลายบรรทัด

หมายความว่าเมื่อคอมไพล์เลอร์(ผู้แปล)
เจอเครื่องหมายเหล่านี้ก็จะไม่ทำการคอมไพล์(แปล)
เป็นไฟล์HEX

ตัวอย่างเช่น
/* Project     : LED
    Date         : 7/7/2557
    Author      : SC
    Company  :
    Comments :    */

#include <REGX51.H>

void main(){
     
      P1=0X0F; //00001111
     
}

ค้นหาตัวแปรFIND





ค้นหาตัวแปรFIND
8/3/2557 SONGCHAI PRAPATRUNGSEE
ค้นหาตัวแปรFINDแบบที่1
1 ป้ายชื่อที่จะหา
2 คลิกEDIT หรือกดCTRL+F
3 คลิกFIND
4 ช่องFIND WHATจะมีชื่อตัวแปรที่เราป้ายเข้าไป
หรือจะพิมพ์ชื่อตัวแปรตรงช่องFIND WHATก็ได้
5 ช่องLOOK INให้เลือกเป็นCURRENT DOCUMENT
6 คลิกMATCH WHOLE WORD
7 คลิกFIND NEXT หรือกดปุ่มF3 ไปเรื่อยๆ  
ถ้าขึ้นหน้าต่าง”FIND REACHED THE STARTING SEARCH POINT IN THE CURRENT DOCUMENT”
แปลว่าค้นหามาถึงจุดเริ่มต้นที่ค้นหาแล้ว

ค้นหาตัวแปรFINDแบบที่2
1 พิมพ์ชื่อที่จะหาตรงช่องค้นหา
2 กดENTERไปเรื่อยๆ
ถ้าขึ้นหน้าต่าง”FIND REACHED THE STARTING SEARCH POINT IN THE CURRENT DOCUMENT”
แปลว่าค้นหามาถึงจุดเริ่มต้นที่ค้นหาแล้ว
================
#include <REGX51.H>

unsigned char a,b,c;//0-255

void main(void){ 
      while(1){
  a=10;
  b=20;
  c=a+b;
      }
}

เขียนASSEMBLYง่ายๆด้วยLISTING FILE






เขียนASSEMBLYง่ายๆด้วยLISTING FILE
10/3/2557 SONGCHAI PRAPATRUNGSEE
เขียนASSEMBLYง่ายๆด้วยLISTING FILE
1 สร้างโปรเจคไฟล์ภาษาซี(*.C)
   และต้องไม่ADD STARTUP.A51เข้ามา
   เพราะจะเกิดการซ้อนทับ(OVERLAP)กับภาษาASSEMBLY
1 คลิกPROJECT
2 คลิกOPTIONS FOR TARGET
3 คลิกLISTING (*.LST)
4 ติ๊กถูกASSEMBLY CODE
5 คลิกOK
6 คลิกBUILDคอมไพล์ให้ผ่านก่อน
   ให้จดว่าใช้DATA(RAM)กับCODE(ROM)ไปเท่าไร
7 คลิกFILE
8 คลิกNEW
9 คลิกFILE
10 คลิกSAVE AS
11 พิมพ์ชื่อไฟล์ในช่องFILE NAME
     ตามด้วยนามสกุล.ASMหรือ.A51
12 คลิกSAVE ก็จะได้ไฟล์.ASMหรือ.A51แล้ว
13 คลิกFILE
14 คลิกOPEN
15 จะไม่เห็นชื่อไฟล์.LST
     ให้พิมพ์ชื่อไฟล์ตามด้วยนามสกุล .LSTที่ช่องFILE NAME
16 หรือจะคลิกตรงชื่อไฟล์.LSTที่โชว์ขึ้นมาก็ได้
17 คลิกOPEN
18 ทำการCOPYตั้งแต่  ” ; FUNCTION main (BEGIN)
    จนถึง  ; FUNCTION main (END) ”
19 PASTEวางโค๊ดแอสเซ็มบลีที่COPYมาลงในไฟล์.ASM
20 ลบ LOC,OBJ,R ออกให้หมด
21 จากนั้นพิมพ์คำว่าENDลงในบรรทัดท้ายสุด
22 คลิกขวาไฟล์.C ที่อยู่ในSOURCE GROUP1
23 คลิกREMOVE FILE *.C 
24 คลิกYES
     เท่านี้ไฟล์.C ก็ออกจากSOURCE GROUP1แล้ว
25 คลิกขวาSORUCE GROUP1
26 คลิกADD EXISTING FILES TO GROUP SOURCE GROUP1
27 จะไม่เห็นชื่อไฟล์.ASM
     ให้พิมพ์ชื่อไฟล์ตามด้วย .ASM ที่ช่องFILE NAME     
28 หรือจะคลิกตรงชื่อไฟล์.ASMที่โชว์ขึ้นมาก็ได้
29 คลิกADD
    ชื่อไฟล์ก็จะเข้าไปในSOURCE GROUP1แล้ว
30 คลิกCLOSE
31 คลิกBUILDทำการคอมไพล์ ไฟล์.ASM
    สังเกตุDATA(RAM),CODE(ROM)
    ไฟล์.ASM ใช้น้อยกว่าไฟล์.C
    แต่เวลาสร้างโปรเจคแอสเซมบลี
    ต้องไม่เอาSTARTUP .A51เข้ามา
    เพราะจะทำเกิดการWARNING
    และจะใช้ DATA(RAM),CODE(ROM)เท่ากับไฟล์.Cทันที
====================
CODE=ROMคือหน่วยความจำถาวรซึ่งเป็นส่วนที่อัด(FLASH)
    คำสั่งในรูปเลขฐาน2 หรือภาษาเครื่อง(MACHINE CODE)
    คือเวลาอัดจะเป็นไฟกับกราวด์
    อัดเข้าไปในROMภายในไมโครคอนโทรลเลอร์
    หน่วยความจำROMเวลาไม่มีไฟหน่วยความจำก็จะไม่สูญหาย
    หน่วยความจำROMในเวลาใช้งานจะอ่านได้
    แต่ไม่สามารถเขียนได้
RAM=หน่วยความจำชั่วคราวซึ่งสามารถเขียนอ่านได้
    แต่เวลาไม่มีไฟหน่วยความจำส่วนนี้ก็จะหายไปหมด
1ADDRESS=1REGISTER=1BYTE
1BYTE=8BIT=11111111=0-255   
    บิทขวาสุดคือบิท0=LSB(LEAST SIGNIFICANT BIT)
    บิทซ้ายสุดคือบิท7=MSB(MOST SIGNIFICANT BIT)
    บิทขวาสุดคือบิท0 จะมีค่าประจำหลักเป็น 1
    บิท1 จะมีค่าประจำหลักเป็น 2
    บิท2 จะมีค่าประจำหลักเป็น 4
    บิท3 จะมีค่าประจำหลักเป็น 8
    บิท4 จะมีค่าประจำหลักเป็น 16
    บิท5 จะมีค่าประจำหลักเป็น 32
    บิท6 จะมีค่าประจำหลักเป็น 64
    บิท7 จะมีค่าประจำหลักเป็น 128
    รวมบิท0-บิท7 = 8บิท = 0-255 (บิท0-บิท7ต้องเป็น1ทุกบิท)
1 = เลขฐานสิบหก 1 = เลขฐานสอง 0001
2 = เลขฐานสิบหก 2 = เลขฐานสอง 0010
3 = เลขฐานสิบหก 3 = เลขฐานสอง 0011
4 = เลขฐานสิบหก 4 = เลขฐานสอง 0100
5 = เลขฐานสิบหก 5 = เลขฐานสอง 0101
6 = เลขฐานสิบหก 6 = เลขฐานสอง 0110
7 = เลขฐานสิบหก 7 = เลขฐานสอง 0111
8 = เลขฐานสิบหก 8 = เลขฐานสอง 1000
9 = เลขฐานสิบหก 9 = เลขฐานสอง 1001
10 = เลขฐานสิบหก A = เลขฐานสอง 1010
11 = เลขฐานสิบหก B = เลขฐานสอง 1011
12 = เลขฐานสิบหก C = เลขฐานสอง 1100
13 = เลขฐานสิบหก D = เลขฐานสอง 1101
14 = เลขฐานสิบหก E = เลขฐานสอง 1110
15 = เลขฐานสิบหก F = เลขฐานสอง 1111
เลขฐานสิบหก1ตัวมี4บิท มีค่าสูงสุดอยู่ในช่วง0-15
และให้จำไว้ว่าค่าประจำบิทถัดไปจะต้องมีค่าคูณ2เสมอ เช่น
FA = 1111 1010 = 250
    A ที่อยู่ขวามือสุดเรียกว่า NIBBLE LOW
    Fที่อยู่ซ้ายมือสุดเรียกว่า NIBBLE HIGH

ในภาษาASSEMBLYตัวอักษรพิมพ์เล็กหรือพิมพ์ใหญ่
    ถือว่าเป็นตัวอักษรเดียวกัน
เลขฐานสิบหก จะมีสัญลักษณ์บ่งบอกคือ0XหรือH เช่น
    1 = เลขฐานสิบหก 0x01 หรือ 01H
    ถ้าเลขฐานสิบหกที่ใช้สัญญลักษณ์H
    ถ้าขึ้นต้นด้วยตัวอักษรจะต้องเติม0 เช่น
    255 = FFHอย่างนี้ไม่ได้ต้องเติม0เป็น 0FFH 
เลขฐานแปด จะมีสัญลักษณ์บ่งบอกคือ O หรือ Q
เลขฐานสอง จะมีสัญลักษณ์บ่งบอกคือ B
เลขฐานสิบ จะไม่มีสัญลักษณ์ หมายความว่า
    ถ้าไม่มีสัญญลักษณ์ให้ถือว่าเป็นเลขฐานสิบ
    เลขฐานสิบคือเลขที่ใช้ในชีวิตประจำวัน

=========================== 
ไฟล์.C
#include <REGX51.H>/*เอาไฟล์REGX51.Hจากภายนอก
                      เข้ามาร่วมในการคอมไพล์
                      เป็นไฟล์เลขฐานสิบหก(HEX FILE)
                      ไฟล์REGX51.H เป็นไฟล์ที่กำหนดชื่อ                 
                      แทนADDRESSในไมโครคอนโทรลเลอร์
                      เพื่อให้จดจำได้ง่าย
unsigned char m,n,o; /*ประกาศตัวแปรm,n,o
                                  ให้อยู่ในช่วง0-255*/

void main(void){ //ฟังชันหลัก
      m=2;  //เอาค่า2ไปเก็บไว้ในตัวแปร m
      n=3;   //เอาค่า3ไปเก็บไว้ในตัวแปร n
      o=m+n;  //เอาผลบวกของm,nไปเก็บไว้ในตัวแปร o
}

แปลงไฟล์ซีเป็นแอสเซมบลีด้วยLISTING FILEในKEIL
ได้ดังนี้

LOC   OBJ     ตัวแปร*.C   SOURCE
                 ; FUNCTION main (BEGIN)
                                           ; SOURCE LINE # 5
                                           ; SOURCE LINE # 6
0000   750002      R     MOV     m,#02H
                                           ; SOURCE LINE # 7
0003   750003      R     MOV     n,#03H
                                           ; SOURCE LINE # 8
0006   E500        R     MOV     A,m
0008   2500        R     ADD     A,n
000A   F500        R     MOV     o,A
                                           ; SOURCE LINE # 9
000C 22                RET    
             ; FUNCTION main (END)  

เสา=COLUMN
เสาที่1  LOC=LOCATIONแอดเดรสในROM
เสาที่2  OBJ=OBJECT CODEหมายถึงCODEที่อัด(FLASH)
    เข้าไปในROM ของไมโครคอนโทรลเลอร์
    เมื่อต่อวงจรและไฟเข้าไปในไมโคร
    คอนโทรลเลอร์ คำสั่งในROMจะเป็น1กับ0 หรือไฟกับกราวด์
    ก็จะไปสั่งให้RAMให้ทำงานตามที่เราเขียนสั่งงานไว้นั่นเอง
เสาที่R = RELOCATE ให้ย้ายหรือทำใหม่ ตัวแปรในไฟล์.C
เสาที่ 4  SOURCE=ซอร์สโคดคือคำสั่งที่เขียนขึ้นมา
เสาที่ 5 = คำอธิบาย (COMMENT)
==========================  
แปลงเป็นแอสเซมบลีได้ดังนี้
                     ; FUNCTION main (BEGIN)
ORG 0000H    ;ต้องเขียนขึ้นเองถ้าไม่มีจะเริ่มต้นที่แอดเดรส0
m EQU 8        ;RAM แอดเดรสที่8 เก็บไว้ในสัญญลักษณ์ m
n EQU 9         ;RAM แอดเดรสที่9 เก็บไว้ในสัญญลักษณ์ n
o EQU 10        ;RAM แอดเดรสที่10 เก็บไว้ในสัญญลักษณ์ o            

 MOV     m,#02H   ;ค่า2เก็บไว้ใน m
                                            
 MOV     n,#03H   ;ค่า3เก็บไว้ใน n
                                            
 MOV     A,m      ;ค่าm เก็บไว้ใน A , A=2
 ADD     A,n       ;A+n ผลลัพท์เก็บไว้ใน A , A=5
 MOV     o,A       ;ค่าA เก็บไว้ใน o , o=5
                                            
 RET      ;RETURN ย้อนกลับไปทำใหม่
END       ;ต้องเขียนขึ้นเอง
             ; FUNCTION main (END)

ORG 0000H=แอดเดรสเริ่มต้นถ้าไม่กำหนดจะเริ่มที่แอดเดรส0
MOV    m,#02H     ;เอาค่า2ไปใส่ไว้ในสัญญลักษณ์ m
MOV     n,#03H     ;เอาค่า3ไปใส่ไว้ในสัญญลักษณ์ n
MOV     A,m   ;เอาค่าในสัญญลักษณ์m ไปเก็บไว้ในรีจิสเตอร์A
ADD     A,n        ;ค่าในรีจิสเตอร์A บวกกับค่าในสัญญลักษณ์n
                         ผลลัพธ์เก็บในรีจิสเตอร์A
MOV    o,A      ;เอาค่าในAไปเก็บไว้ในสัญญลักษณ์ o                            
RET  ;กลับไปบรรทัดเริ่มต้นหรือบรรทัดที่ทำงานค้างไว้                                           
END       ;จบ    
                      ; FUNCTION main (END)

ORG,EQU,END=คำสั่งเทียม(Pseudo code)
    คือคำสั่งสำหรับแอสเซมเบลอร์ (Assemble Directive Code)
    หมายความว่าเป็นคำสั่งที่ASSEMBLERรู้จัก
    แต่ไมโครคอนโทรลเลอร์ไม่รู้จัก
    ดังนั้นคำสั่งเทียมจึงไม่มีการกินพื้นที่ROMและRAM
ORG=ORIGIN=กำหนดแอดเดรสเริ่มต้นการทำงานของ   
     โปรแกรม ถ้าไม่มีจะเริ่มต้นทีแอดเดรส 0
EQU=EQUATEแปลว่าเท่ากับ,
    หมายความว่ากำหนดชื่อแทนที่อยู่(ADDRESS)
    เพื่อให้จดจำได้ง่าย
END=จบโปรแกรม หลังจากคำสั่งEND
    ASSEMBLERจะไม่เอาส่วนนี้ไปคอมไพล์
; =เครื่องหมายเซมิโคลอน=คำอธิบาย(COMMENT)
    หมายความว่าASSEMBLERจะไม่เอาส่วนนี้ไปคอมไพล์
# = ค่า(VALUE)
, = เครื่องหมายCOMMA ทำหน้าที่คั่นคำสั่ง

MOV=MOVE=ย้าย
A=REGISTER,ACCUMULATOR
    หมายความว่าเป็นตัวดำเนินการทางคณิตศาสตร์และลอจิก
    เช่น+ - * / OR AND แล้วเก็บค่าไว้ใน Aแต่เก็บได้แค่8บิท