ไมโครโปรเซสเซอร์ Z-80 ติดต่อกับอุปกรณ์ภายนอกด้วยขาสัญญาณต่าง ๆ ดังต่อไปนี้
D0-D7 เป็นบัสข้อมูล 8 บิท ใช้รับส่งข้อมูลระหว่าง Z-80 กับอุปกรณ์ภายนอก
A0-A7 เป็นบัสแอดเดรส ใช้กำหนดหมายเลขช่องสัญญาณ I/O ในการติดต่อกับอุปกรณ์ภายนอก Z-80 ใช้เฉพาะ A0-A7 กำหนดตำแหน่ง ทำให้ติดต่ออุปกรณ์ภายนอกได้ด้วย แอดเดรส 00-FF
ทั้งสามสัญญาณนี้แอคตีฟด้วยลอจิก "0"
เมื่อ Z-80 ทำคำสั่ง IN หรือ OUT ตามขั้นตอนดังต่อไปนี้
เมื่อ Z-80 ทำคำสั่ง IN เพื่ออ่านค่าจากอุปกรณ์ภายนอก
เมื่อ Z-80 ทำคำสั่ง IN เพื่อสั่งค่าให้กับอุปกรณ์ภายนอก
ในการถอดรหัสเพื่อเรียกหมายเลข พอร์ท ผู้ใช้จะต้องเลือกใช้สัญญาณ IORQ กับ RD หรือ IORQ กับ WR หรือ เฉพาะ IORQ แล้วแต่กรณี
การต่อ PORT I/O ให้กับ Z-80 อาจใช้ไอซีดิจิตอล หรือใช้ชิพสนับสนุน เช่น 8255 หรือ Z80 PIO ก็ได้
วันอาทิตย์ที่ 14 สิงหาคม พ.ศ. 2554
พอร์ทอินพุท/เอาท์พุท
OUTPUT PORT USING 74LS374/FONT>
- OUTPUT 1 # 87
- OUTPUT 2 # 86
- OUTPUT 3 # 85
- OUTPUT 4 # 84
การใช้ 74LS374 ขับ LED
โปรแกรมสำหรับขับ LED ให้ติดเป็นจังหวะ
;โปรแกรมต่อไปนี้ใช้ ลอจิก 1 ขับ LED
;ให้ติด O O O O O O O O O O O O O O O O (O ติด O ดับ
;แล้วให้การติดเลื่อนไปทีละดวง
2000 3E88 LOOP LD A,88H ;เก็บรูปแบบของไฟไว้ใน A
2002 D387 OUT (87),A ;ส่งค่าใน A ไปออกเอาท์พุท #87
2004 D386 OUT (86(,A ;ส่งค่าใน A ไปออกเอาท์พุท #86
2006 CD0021 CALL DELAY ;เรียกใช้โปรแกรมหน่วงเวลา
2009 0F RRCA ;หมุนค่าตัวเลขใน A ไปทางขวา
200A 18F6 JR LOOP :วนกลับไปทำซ้ำ
;โปรแกรมย่อยสำหรับหน่วงเวลา
2100 F5 PUSH AF :ฝากค่า AF ไว้ใน STACK
2101 21 00 80 REPEAT LD HL,8000H :กำหนดจำนวนของการวน
2104 2B DEC HL :ลดค่า HL ลง 1
2105 7C LD A,H :นำค่า H มาเก็บใน L
2106 B5 OR L :OR ค่าใน A กับค่าใน A
2107 20 FB JR NZ,REPEAT :ถ้าผลลัพท์ไม่เป็น 0 กลับไปลดค่า
2109 F1 POP AF :เรียกค่า AF ตัวเดิมกลับมา
210A C9 RET :กลับไปถัดจากที่มา
หมายเหตุ
หมายเลขช่วงของเอาท์พุทต้องเปลี่ยนแปลงตามพอร์ทเอาท์พุททีทใช้ โปรแกรมที่เขียนนี้ใช้ ไมโครคอมพิวเตอร์แผงเดียว ET 3.5 ของบริษัท ETTEAM จำกัด หากใช้ไมโครคอมพิวเตอร์แผงเดียวรุ่นอื่น จะเลื่อนตำแหน่งให้อยู่ใน แอดเดรสของ RAM
INPUT และ OUTPUT PORT
หมายเลข PORT
INPUT # 80H
OUTPUT 1 # 85H
OUTPUT 2 # 86H
PORT สำหรับขับ STEP MOTOR
ใช้ 74 LS 374 เป็นพอร์ทเอาท์พุท โดยต่อกับ ULN 2003 ขับสเต็ปมอเตอร์ชนิดใช้สายคอมมอน เส้นเดียว (สเต็ปมอเตอร์ใช้สาย 5 เส้น)
โปรแกรมที่เขียนนี้ใช้ไมโครคอมพิวเตอร์แผงเดียว ET 3.5 ของบริษัท ETTEAM จำกัด หากใช้ไมโครคอมพิวเตอร์แผงเดียวรุ่นอื่น จะเปลี่ยน แอดเดรสของ RAM
;โปรแกรมขับสเต็ปมอเตอร์
;หมายเลข OUTPUT PORT เรียกใช้ PORT ใดก็ได้ตามที่ออกแบบไว้
;ใช้สัญญาณ IORQ ไป enable port
2800 21 00 29 MAIN LD HL,F900H ;กำหนดข้อมูลไว้ที่ 2900H
2803 06 00 LD B,00H ;นับจำนวน สเต็ป = 4
2805 7E NEXT LD A,(HL) ;โหลดข้อมูลในการหมุนมาใน A
2806 D3 FF OUT (FF),A ;ส่งข้อมูลไปขับมอเตอร์
2808 CD 29 50 CALL DELAY ;หน่วงเวลา
280B 23 INC HL ;เลื่อนตำแหน่งตัวชี้ข้อมูลไป 1
280C 05 DEC B ;ลดตัวนับลง 1
280D 20 F6 JR NZ NEXT ;กลับไปหมุนสเต้ปต่อไปถ้าไม่ครบรอบ;4 สเต็ป
280F 18 EF JR MAIN ;กลับไปตั้งต้นใหม่
;โปรแกรมหน่วงเวลา
2950 16 80 DELAY LD D.80H ;กำหนด D = 80H
2952 1E 80 LOOP2 LD E,80H ;กำหนด E = 80H
2954 1D LOOP1 DEC E ;ลดค่า E ลง 1
2955 20 ED JR NZ LOOP1 ;ถ้า E ไม่เท่ากับ 0 กลับไปลด E
2957 15 DEC D ;ลดค่า D ลง 1
2958 20 F8 JR NZ.LOOP2 ;ถ้า D ไม่เท่ากับ 0 กลับไปลด D
295A C9 RET ;เสร็จแล้วกลับไป MAIN PROGRAM
ข้อมูลเดินหน้า
2900 01 db 01
2901 02 db 02
2902 04 db 04
2903 08 db08
ข้อมูลถอยหลัง
2900 88 db 88
2901 84 db 84
2902 82 db 82
2903 81 db 81
แผงแสดงแบบ DOT MATRIX
การใช้ 74LS374 ขับทรานซิสเตอร์ชนิด PNP ให้ ON
มื่อเอาท์พุ่ Q เป้นลอจิก 1 ทรานซิสเตอร์ จะ OFF ไม่จ่ายกระแสไฟฟ้า แต่เมื่อใดก็ตามที่เอาท์พุท Q เป็น 0 จะทำให้กระแสเบสไหลได้ ทรานซิสเตอร์จะ ON จ่ายกระแสไฟฟ้าออกมาทางขา คอลแลคเตอร์
การจุด LED ใช้หลักการที่ว่า สายเส้นหนึ่งปล่อยไฟฟ้ามาให้ขา Anode และสายอีกเส้นหนึ่งคือ ขา Cathode ส่งลอจิก หรือ Ground ด้วยวิธีการเช่นนี้ทำให้เราสามารถควบคุม LED ให้ติดตามตำแหน่งที่ต้องการได้
แผง LED แบบ 8*8
;โปรแกรมกำหนด PATTERN ตัวอักษรและสร้างตัวอักษรเลื่อน
;MAIN PROGRAM
1000 21 00 17 START LD HL,1700H ;set start data area
1003 10 16 NPT LD D,10H ;set counter for scan
1005 E5 AGA PUSH HL
1006 CD15 10 CALL DSP
1009 E1 POP HL
100A 15 DEC D ;decretment counter
100B 20 F8 JR NZ,AGA ;ถ้า counter ไม่เท่ากับ 0 กลับไป AgA
100D 23 INC HL
100E 7D LD A,L
100F FE 69 CP 69H ;ข้อมูลหมดหรือยัง
1011 20 F0 JR NZ,NPT ;ถ้ายังไม่หมดกับไป NPT
1013 18 EB JR START ;ถ้าหมดแล้วไป start
โปรแกรมย่อยจากจอภาพ
1015 06 08 DSP LD B,08H ;ตั้งจำนวนรอบการสแกน
1017 0E FE LD C,0FEH ;ตั้งข้อมูลสำหรับสแกน
1019 79 LOOP LD A,C
101A D3 80 OUT (A0),A
101C 7E LD A,(HL)
101D 2F CPL ;ทำคอมพลีเมนท์ค่าใน A
101E D3 80 OUT (80),A
1020 CD 29 10 CALL DELALY
1023 CB 01 RLC C
1025 23 INC HL
1026 10 F1 DJNZ LOOP
1028 C9 RET
;โปรแกรมหน่วงเวลา
1029 E5 PUSH HL
102A 21 FF 00 LD HL 00FFH
102D 2B REPEAT DEC HL
102E 7C LD A,H
102F B5 OR L
1030 20FB JR NZ.,PEPEAT
1032 E1 POP HL
1033 C9 RET
;บริเวณข้อมูล
1700 01 00 00 7F 49 49 49 49 00 00 7F 01 01 01 01 00
1710 00 7F 49 49 49 49 00 00 3E 41 41 41 22 00 00 40
1720 40 7F 40 40 00 00 7F 48 48 48 37 00 00 3E 41 41
1730 41 3E 00 00 7F 10 08 00 7F 00 00 00 41 7F 41 00
1740 00 00 3E 41 41 41 22 00 00 32 49 49 49 26 00 00
1750 32 49 49 49 26 00 00 01 00 00 00 00 00 00 00 00
1760 00 00 00 00 00 00 00 00 00
ตัวอย่างโปรแกรมในที่นี้เขียนโดยใช้ ไมโครคอมพิวเตอร์ชิพเดียว ET 2.0 ของบริษัท ETTEAM จำกัด แอดเดรสของโปรแกรมจะต้องปรับ หากใช้แผงไมโครคอมพิวเตอร์เดี่ยวที่แตกต่างจากนี้
- OUTPUT 1 # 87
- OUTPUT 2 # 86
- OUTPUT 3 # 85
- OUTPUT 4 # 84
การใช้ 74LS374 ขับ LED
โปรแกรมสำหรับขับ LED ให้ติดเป็นจังหวะ
;โปรแกรมต่อไปนี้ใช้ ลอจิก 1 ขับ LED
;ให้ติด O O O O O O O O O O O O O O O O (O ติด O ดับ
;แล้วให้การติดเลื่อนไปทีละดวง
2000 3E88 LOOP LD A,88H ;เก็บรูปแบบของไฟไว้ใน A
2002 D387 OUT (87),A ;ส่งค่าใน A ไปออกเอาท์พุท #87
2004 D386 OUT (86(,A ;ส่งค่าใน A ไปออกเอาท์พุท #86
2006 CD0021 CALL DELAY ;เรียกใช้โปรแกรมหน่วงเวลา
2009 0F RRCA ;หมุนค่าตัวเลขใน A ไปทางขวา
200A 18F6 JR LOOP :วนกลับไปทำซ้ำ
;โปรแกรมย่อยสำหรับหน่วงเวลา
2100 F5 PUSH AF :ฝากค่า AF ไว้ใน STACK
2101 21 00 80 REPEAT LD HL,8000H :กำหนดจำนวนของการวน
2104 2B DEC HL :ลดค่า HL ลง 1
2105 7C LD A,H :นำค่า H มาเก็บใน L
2106 B5 OR L :OR ค่าใน A กับค่าใน A
2107 20 FB JR NZ,REPEAT :ถ้าผลลัพท์ไม่เป็น 0 กลับไปลดค่า
2109 F1 POP AF :เรียกค่า AF ตัวเดิมกลับมา
210A C9 RET :กลับไปถัดจากที่มา
หมายเหตุ
หมายเลขช่วงของเอาท์พุทต้องเปลี่ยนแปลงตามพอร์ทเอาท์พุททีทใช้ โปรแกรมที่เขียนนี้ใช้ ไมโครคอมพิวเตอร์แผงเดียว ET 3.5 ของบริษัท ETTEAM จำกัด หากใช้ไมโครคอมพิวเตอร์แผงเดียวรุ่นอื่น จะเลื่อนตำแหน่งให้อยู่ใน แอดเดรสของ RAM
INPUT และ OUTPUT PORT
หมายเลข PORT
INPUT # 80H
OUTPUT 1 # 85H
OUTPUT 2 # 86H
PORT สำหรับขับ STEP MOTOR
ใช้ 74 LS 374 เป็นพอร์ทเอาท์พุท โดยต่อกับ ULN 2003 ขับสเต็ปมอเตอร์ชนิดใช้สายคอมมอน เส้นเดียว (สเต็ปมอเตอร์ใช้สาย 5 เส้น)
โปรแกรมที่เขียนนี้ใช้ไมโครคอมพิวเตอร์แผงเดียว ET 3.5 ของบริษัท ETTEAM จำกัด หากใช้ไมโครคอมพิวเตอร์แผงเดียวรุ่นอื่น จะเปลี่ยน แอดเดรสของ RAM
;โปรแกรมขับสเต็ปมอเตอร์
;หมายเลข OUTPUT PORT เรียกใช้ PORT ใดก็ได้ตามที่ออกแบบไว้
;ใช้สัญญาณ IORQ ไป enable port
2800 21 00 29 MAIN LD HL,F900H ;กำหนดข้อมูลไว้ที่ 2900H
2803 06 00 LD B,00H ;นับจำนวน สเต็ป = 4
2805 7E NEXT LD A,(HL) ;โหลดข้อมูลในการหมุนมาใน A
2806 D3 FF OUT (FF),A ;ส่งข้อมูลไปขับมอเตอร์
2808 CD 29 50 CALL DELAY ;หน่วงเวลา
280B 23 INC HL ;เลื่อนตำแหน่งตัวชี้ข้อมูลไป 1
280C 05 DEC B ;ลดตัวนับลง 1
280D 20 F6 JR NZ NEXT ;กลับไปหมุนสเต้ปต่อไปถ้าไม่ครบรอบ;4 สเต็ป
280F 18 EF JR MAIN ;กลับไปตั้งต้นใหม่
;โปรแกรมหน่วงเวลา
2950 16 80 DELAY LD D.80H ;กำหนด D = 80H
2952 1E 80 LOOP2 LD E,80H ;กำหนด E = 80H
2954 1D LOOP1 DEC E ;ลดค่า E ลง 1
2955 20 ED JR NZ LOOP1 ;ถ้า E ไม่เท่ากับ 0 กลับไปลด E
2957 15 DEC D ;ลดค่า D ลง 1
2958 20 F8 JR NZ.LOOP2 ;ถ้า D ไม่เท่ากับ 0 กลับไปลด D
295A C9 RET ;เสร็จแล้วกลับไป MAIN PROGRAM
ข้อมูลเดินหน้า
2900 01 db 01
2901 02 db 02
2902 04 db 04
2903 08 db08
ข้อมูลถอยหลัง
2900 88 db 88
2901 84 db 84
2902 82 db 82
2903 81 db 81
แผงแสดงแบบ DOT MATRIX
การใช้ 74LS374 ขับทรานซิสเตอร์ชนิด PNP ให้ ON
มื่อเอาท์พุ่ Q เป้นลอจิก 1 ทรานซิสเตอร์ จะ OFF ไม่จ่ายกระแสไฟฟ้า แต่เมื่อใดก็ตามที่เอาท์พุท Q เป็น 0 จะทำให้กระแสเบสไหลได้ ทรานซิสเตอร์จะ ON จ่ายกระแสไฟฟ้าออกมาทางขา คอลแลคเตอร์
การจุด LED ใช้หลักการที่ว่า สายเส้นหนึ่งปล่อยไฟฟ้ามาให้ขา Anode และสายอีกเส้นหนึ่งคือ ขา Cathode ส่งลอจิก หรือ Ground ด้วยวิธีการเช่นนี้ทำให้เราสามารถควบคุม LED ให้ติดตามตำแหน่งที่ต้องการได้
แผง LED แบบ 8*8
;โปรแกรมกำหนด PATTERN ตัวอักษรและสร้างตัวอักษรเลื่อน
;MAIN PROGRAM
1000 21 00 17 START LD HL,1700H ;set start data area
1003 10 16 NPT LD D,10H ;set counter for scan
1005 E5 AGA PUSH HL
1006 CD15 10 CALL DSP
1009 E1 POP HL
100A 15 DEC D ;decretment counter
100B 20 F8 JR NZ,AGA ;ถ้า counter ไม่เท่ากับ 0 กลับไป AgA
100D 23 INC HL
100E 7D LD A,L
100F FE 69 CP 69H ;ข้อมูลหมดหรือยัง
1011 20 F0 JR NZ,NPT ;ถ้ายังไม่หมดกับไป NPT
1013 18 EB JR START ;ถ้าหมดแล้วไป start
โปรแกรมย่อยจากจอภาพ
1015 06 08 DSP LD B,08H ;ตั้งจำนวนรอบการสแกน
1017 0E FE LD C,0FEH ;ตั้งข้อมูลสำหรับสแกน
1019 79 LOOP LD A,C
101A D3 80 OUT (A0),A
101C 7E LD A,(HL)
101D 2F CPL ;ทำคอมพลีเมนท์ค่าใน A
101E D3 80 OUT (80),A
1020 CD 29 10 CALL DELALY
1023 CB 01 RLC C
1025 23 INC HL
1026 10 F1 DJNZ LOOP
1028 C9 RET
;โปรแกรมหน่วงเวลา
1029 E5 PUSH HL
102A 21 FF 00 LD HL 00FFH
102D 2B REPEAT DEC HL
102E 7C LD A,H
102F B5 OR L
1030 20FB JR NZ.,PEPEAT
1032 E1 POP HL
1033 C9 RET
;บริเวณข้อมูล
1700 01 00 00 7F 49 49 49 49 00 00 7F 01 01 01 01 00
1710 00 7F 49 49 49 49 00 00 3E 41 41 41 22 00 00 40
1720 40 7F 40 40 00 00 7F 48 48 48 37 00 00 3E 41 41
1730 41 3E 00 00 7F 10 08 00 7F 00 00 00 41 7F 41 00
1740 00 00 3E 41 41 41 22 00 00 32 49 49 49 26 00 00
1750 32 49 49 49 26 00 00 01 00 00 00 00 00 00 00 00
1760 00 00 00 00 00 00 00 00 00
ตัวอย่างโปรแกรมในที่นี้เขียนโดยใช้ ไมโครคอมพิวเตอร์ชิพเดียว ET 2.0 ของบริษัท ETTEAM จำกัด แอดเดรสของโปรแกรมจะต้องปรับ หากใช้แผงไมโครคอมพิวเตอร์เดี่ยวที่แตกต่างจากนี้
บอร์ดไมโครโปรเซสเซอร์ Z-80
บอร์ดไมโครโปรเซสเซอร์ เป็น บอร์ดอเนกประสงค์ที่ผู้ใช้จะนำไปใช้เพื่อกิจการใด ๆ ก็ได้ ตามความต้องการโดยการเขียนโปรแกรมและสร้างเอาท์พุทพอร์ทใฟ้เหมาะสมกับงาน บอร์ดไมโครโปรเซสเซอร์มีคุณสมบัติดังนี้
1. ใช้ซีพียู Z-80
2. ความถี่สัญญาณ CLOCK ประมาณ 100 KHZ
3. ใช้ EPROM 2716 หรือ 2732 ก็ได้ โดยการดัดแปลงเพียงเล็กน้อย
4. ใช้ RAM 2114
ADDRESS ของ RAM เริ่มที่ 1000H - 13FFH
5. มี BUFFER
5.1 DATA D0-D7
5.2 ADDRESS A0 - A3
5.3 CONTROL
1) IORQ
2) RD . WR
1. ภาค ซีพียู
ในการถอดรหัสเลือกหน่วยความจำ ROM และ RAM ตามคารางที่กำหนดเป็นดังนี้
จะเห็นว่า Address A12 จะเป็นตัวกำหนดว่า Address ที่เรียกอยู่ใน ROM (A12=0) หรืออยู่ใน RAM (A12=1) โดยดูจากวงจรถอดรหัสเลือกหน่วยความจำ
เมื่อ Z - 80 ต้องการติดต่อหน่วยความจำในช่วงที่เป็น ROM จะเห็นว่า MERQ = "0" ,A12 = "0", RD = "0"และ WR = "1"
จากผลดังกล่าวแล้วจะเห็นว่า เอาท์พุทของ U6/2 = "1" และ U6/5 = "1" และ A12 = "0" อยู่แล้ว จะส่งผลให้เอาท์พุทของ U5/3 = "1" (MCS1 = "1") และเอาท์พุทของ U5/4 = "0" (MCS0 = "0") ไปอีนาเบิล ROM
จากหลัการเดียวกันเมื่อ A12 = "1" เอาท์พุทของ MCS0 = "1" และเอาท์พุทของ MCS1 = "0" ไปอีนาเบิล RAM (เอาท์พุทของ U5/2 จะเป็น "1" เสมอ เนื่องจาก WR และ RD จะสลับกันให้ลอจิก "0" ในช่วง READ และ WRITE จะไม่มีโอกาสให้ "0" พร้อมกัน
2. ภาค ROM
MCS0 ต่อกับ MCS0 ในภาคถอรหัส ซึ่งจะอีนาเบิล ROM เมื่อ A12 = "0" และ Z-80 ต้องการติดต่อกับหน่วยความจำนั่นคือ MREQ = "0"
3. ภาค RAM
Z-80 จะเลือก RAM ที่แอดเดรส 1000H ขึ้นไป ขณะนั้น MREQ = "0" ซึ่งจะทำให้ MCS1 = "0"
ในรูปต่อไปนี้ 74LS245 เป็น BUFFER DATA สำหรับเอาท์พุทและ CD 4050B ทำหน้าที่ BUFFER ADDRESS A0-A3 , และสัญญาณควบคุม IORQ และสัญญาณ RD.WR
บอร์ดไมโครโปรเซสเซอร์ Z-80 บอร์ดนี้ แม้จะใช้อุปกรณ์รุ่นเก่า แต่ให้ความคล่องตัวแก่ผู้ใช้ ซึ่งสามารถจะออกแบบ อินพุท/เอาท์พุทพอร์ทใด ตามวัตถุประสงค์ของตนเอง โดยไม่ถูกบังคับ
การสร้างสัญญาณ Clock
1. RC OSILLATOR
2. CRYTALL OSILLATOR
ตัวสร้างสัญญาณ Clock ดังกล่าวนี้เป็นเพียงตัวอย่าง ผู้ออกแบบอาจใช้วิธีการที่แตกต่างไปจากนี้ก็ได้
สัญญาณ RESET / POWER ON RESET
1.
การสร้างสัญญาณ RESET ในลักษณะนี้ ใช้สำหรับอุปกรณ์ที่ต้องการพัลส์ลบในการ RESET วงจร ส่วนอุปกรณ์ที่ต้องการพัลส์บวกอาจใช้วิธีการดังต่อไปนี้
2.
3.
4.
5.
1. ใช้ซีพียู Z-80
2. ความถี่สัญญาณ CLOCK ประมาณ 100 KHZ
3. ใช้ EPROM 2716 หรือ 2732 ก็ได้ โดยการดัดแปลงเพียงเล็กน้อย
4. ใช้ RAM 2114
ADDRESS ของ RAM เริ่มที่ 1000H - 13FFH
5. มี BUFFER
5.1 DATA D0-D7
5.2 ADDRESS A0 - A3
5.3 CONTROL
1) IORQ
2) RD . WR
1. ภาค ซีพียู
ในการถอดรหัสเลือกหน่วยความจำ ROM และ RAM ตามคารางที่กำหนดเป็นดังนี้
จะเห็นว่า Address A12 จะเป็นตัวกำหนดว่า Address ที่เรียกอยู่ใน ROM (A12=0) หรืออยู่ใน RAM (A12=1) โดยดูจากวงจรถอดรหัสเลือกหน่วยความจำ
เมื่อ Z - 80 ต้องการติดต่อหน่วยความจำในช่วงที่เป็น ROM จะเห็นว่า MERQ = "0" ,A12 = "0", RD = "0"และ WR = "1"
จากผลดังกล่าวแล้วจะเห็นว่า เอาท์พุทของ U6/2 = "1" และ U6/5 = "1" และ A12 = "0" อยู่แล้ว จะส่งผลให้เอาท์พุทของ U5/3 = "1" (MCS1 = "1") และเอาท์พุทของ U5/4 = "0" (MCS0 = "0") ไปอีนาเบิล ROM
จากหลัการเดียวกันเมื่อ A12 = "1" เอาท์พุทของ MCS0 = "1" และเอาท์พุทของ MCS1 = "0" ไปอีนาเบิล RAM (เอาท์พุทของ U5/2 จะเป็น "1" เสมอ เนื่องจาก WR และ RD จะสลับกันให้ลอจิก "0" ในช่วง READ และ WRITE จะไม่มีโอกาสให้ "0" พร้อมกัน
2. ภาค ROM
MCS0 ต่อกับ MCS0 ในภาคถอรหัส ซึ่งจะอีนาเบิล ROM เมื่อ A12 = "0" และ Z-80 ต้องการติดต่อกับหน่วยความจำนั่นคือ MREQ = "0"
3. ภาค RAM
Z-80 จะเลือก RAM ที่แอดเดรส 1000H ขึ้นไป ขณะนั้น MREQ = "0" ซึ่งจะทำให้ MCS1 = "0"
ในรูปต่อไปนี้ 74LS245 เป็น BUFFER DATA สำหรับเอาท์พุทและ CD 4050B ทำหน้าที่ BUFFER ADDRESS A0-A3 , และสัญญาณควบคุม IORQ และสัญญาณ RD.WR
บอร์ดไมโครโปรเซสเซอร์ Z-80 บอร์ดนี้ แม้จะใช้อุปกรณ์รุ่นเก่า แต่ให้ความคล่องตัวแก่ผู้ใช้ ซึ่งสามารถจะออกแบบ อินพุท/เอาท์พุทพอร์ทใด ตามวัตถุประสงค์ของตนเอง โดยไม่ถูกบังคับ
การสร้างสัญญาณ Clock
1. RC OSILLATOR
2. CRYTALL OSILLATOR
ตัวสร้างสัญญาณ Clock ดังกล่าวนี้เป็นเพียงตัวอย่าง ผู้ออกแบบอาจใช้วิธีการที่แตกต่างไปจากนี้ก็ได้
สัญญาณ RESET / POWER ON RESET
1.
การสร้างสัญญาณ RESET ในลักษณะนี้ ใช้สำหรับอุปกรณ์ที่ต้องการพัลส์ลบในการ RESET วงจร ส่วนอุปกรณ์ที่ต้องการพัลส์บวกอาจใช้วิธีการดังต่อไปนี้
2.
3.
4.
5.
ไมโครโปรเซสเซอร์ Z-80
1. ทำไมต้องเป็น Z-80
Z-80 เป็นไมโครโปรเซสเซอร์ที่มีโครงสร้างง่ายต่อการเรียนรู้และการจัดวงจรแต่ละขาของตัวไมโครโปรเซสเซอร์ มีหน้าที่เดียว ไม่ซับซ้อน ผู้ที่เริ่มต้นศึกษา Z-80 จะเกิดความรู้สึกว่า การเรียนรู้ไมโครโปรเซสเซอร์ ไม่ใช่เรื่องยาก
2. โครงสร้างและตำแหน่งขาของZ-80
Z-80 เป็นไอซี 40 ขา แบบ DIP (Dual Inline package) ดังแสดงในรูป 1 โครงสร้างภายในของ Z-80 อาจศึกษาได้จากเอกสารอ้างอิงท้ายข้อความนี้
หน้าที่ของขาสัญญาณบน Z80
CLOCK เป็นสัญญาณนาฬิกาจากภายนอกที่ป้อนให้ซีพียู เป็นตัวให้จังหวะใน การทำงานของซีพียู Z80 ใช้ความถี่ สัญญาณ CLOCK ได้สูงสุด 2 MHZ. 4 MHZ. สำหรับ Z80A และ 6MHZ. สำหรับZ80B เอาท์พุทของสัญญาณ CLOCK ควรมีตัวต้านทาน 330 โอห์ม ต่อพูลอัพ (Pull up) กับไฟเลี้ยง 5 โวลท์ ก่อนต่อเข้าซีพียู
A0-A15 บัสแอดเดรส (Address Bus) มี 16 เส้น ชนิด Output เป็นตัวกำหนด ตำแหน่งที่ต้องการติดต่อในหน่วยความจำ สามารถกำหนดตำแหน่งได้ 2E16 หรือ 65535 หรือ 64k ตำแหน่ง และใช้ A0-A7 เป็นตัวกำหนดตำแหน่งของอุปกรณ์ Input/Output จะกำหนดได้ 2E08 หรือ 256 ตำแหน่ง
D0-D7 บัสข้อมูล (Data Bus) มี 8 เส้น เป็นสายสัญญาณชนิด 2 ทิศทาง ใช้ส่งผ่านข้อมูลระหว่างซีพียูกับหน่วยความจำ หรือระหว่าง ซีพียูกับ อุปกรณ์ Input/Output
MREQ (MemoryREQuest)เป็นเอาท์พุทแบบ 3 สถานะให้ลอจิกแอคตีพที่"0" เป็นสัญญาณแจ้งระบบว่าซีพียูต้องการอ่านหรือเขียนหน่วยความจำใน ตำแหน่งที่ปรากฏบนบัสแอดเดรส
IORQ (Inputt/OutputReQuest)เป็นเอาท์พุทแบบ3สถานะให้ลอจิกแอคตีพที่ "0" เป็นสัญญาณแจ้งระบบว่า ซีพียูต้องการส่งค่า ที่ปรากฏบนบัสข้อมูลให้กับอุปกรณ์เอาท์พุท หรือต้องการอ่านค่าจากอุปกรณ์อินพุท ในตำแหน่งที่ปรากฏบนบัสแอดเดรส A0-A7
RD เอาท์พุทแบบ 3 สถานะ ให้ลอจิกแอคตีพที่ "0" เป็นสัญญาณ แจ้งระบบว่า ซีพียูต้องการอ่านค่าในหน่วยความจำในตำแหน่งที่ปรากฏ บนบัสแอดเดรส A0-A15 หรืออ่านค่าจากอุปกรณ์อินพุทในตำแหน่งที่ปรากฏบนบัสแอดเดรสA0-A7
WR เป็นเอาท์พุทแบบ 3 สถานะ ให้ลอจิกแอคตีพท ี่ "0" เป็นสัญญาณ แจ้งระบบว่า ซีพียูต้องการเขียนค่าลงหน่วยความจำ ในตำแหน่งที่ปรากฏ บนบัสแอดเดรส A0-A15 หรือส่งข้อมูล 8 บิท ไปยังอุปกรณ์เอาท์พุทในตำแหน่งที่ปรากฏบนบัสแอดเดรส A0-A7
RFSH (ReFreSH) เป็นเอาท์พุท ให้ลอจิกแอคตีพที่ "0" สัญญาณบนบัสแอดเดรส A0-A6ใช้รีเฟรส (Refresh)หน่วยความจำชนิดไดนามิค A7 เป็น "0" ขณะนั้ A8-A15 แสดงค่ารีจิสเตอร์
HALT (Halt State) เป็นเอาท์พุท ให้ลอจิกแอคตีพที่ "0" เมื่อซีพียู ได้รับคำสั่ง HALT และจะหยุดรอจนกว่าจะ ได้รับสัญญาณ RESET หรือ สัญญาณ INTERRUPT ในขณะนั้จะมีสภาวะเสมือนทำคำสั่ง NOP (No Operation) และยังรีเฟรส หน่วยความจำชนิดไดนามิค
WAIT เป็นสัญญาณอินพุท ให้ลอจิกแอคตีพที่ "0" เมื่อได้รับสัญญาณ WAIT ซีพียูจะหยุดรออุปกรณ์ที่ส่งสัญญาณ WAIT ด้วยวิธีการนี้จะทำให้ อุปกรณ์ความเร็วต่ำทำงานร่วมกับซีพียูความเร็วสูงได้
NMI NonMaskable Interrupt) เป็นขาสัญญาณอินพุท ใช้ทริกซีพียูที่ขอบ พัลส์ขาลงเพื่อให้ทำงานพิเศษที่กำหนดไว้แล้วล่วงหน้า เมื่อไดัรับ สัญญาณ Interrupt ซีพียูจะเก็บค่าในรีจิสเตอร์PCลงSTACKแล้วไปทำงานที่ตำแหน่ง0066Hหลังจากเสร็จงานพิเศษนี้แล้วจะกลับไปทำงานปกติต่อจากขั้น ตอนเดิมก่อนมาทำงานพิเศษนี้ไม่มีวิธีการใดที่ จำห้ามซีพียูทำงานพิเศษดังกล่าวเมื่อได้รับสัญญาณ NMI
INT (INTerrupt request) เป็นสัญญาณอินพุท ให้ลอจิกแอคตีพที่ "0" อุปกรณ์อินพุทหรือเอาท์พุทจะสร้างสัญญาณนี้เพื่อร้องขอการทำงาน บริการจากซีพียูเป็นกรณีพิเศษ หากมีอุปกรณ์ที่จะต้องให้บริการมาก จะต้องมีตัวจัดลำดับบริการก่อนหลังตามความสำคัญของอุปกรณ์ที่ผู้ออกแบบระบบจัดไว้ การบริการพิเศษจากซีพียูด้วยสัญญาณ INTมีได้ 3 โหมด คือ 0 1 และ 2 ซึ่งมีวิธีบริการที่แตกต่างกัน และ สามารถห้ามซีพียูให้บริการได้ด้วยคำสั่ง DI และสั่งให้ บริการต่อได้ด้วยคำสั่ง EI ในขณะที่ซีพียูให้บริการอยู่นั้น สัญญาณ BUSRQ จะต้องไม่ Active
BUSRQ (BUSRequest) เป็นสัญญาณอินพุทให้ลอจิกแอคตีพที่ "0" เป็นสัญญาณที่อุปกรณ์ภายนอกร้องขอใช้บัสข้อมูลและบัสแอดเดรสจากซีพียู เมื่อได้รับสัญญาณนี้ ซีพียูจะถอนตัวจากการยึดครองบัสโดยทำให้ขาบัสข้อมูลและขาบัสแอดเดรสของซีพียูมีสภาวะควมต้านทาน อนันต ์(High Impedance) เพื่อให้อุปกรณ์ที่ร้องขอใช้บัส รับส่ง ข้อมูลระหว่างกันได้
BUSAK (BUS AcKnowledge) เป็นสัญญาณเอาท์พุทจากซีพียูให้ลอจิกแอคตีพที่ "0" แจ้งอุปกรณ์ภายนอกที่ร้องขอใช้บัสด้วยสัญญาณ BUSRQ ว่า ซีพียูถอนตัวจากบัสแล้ว
RESET เป็นสัญญาณอินพุท ต้องการลอจิกแอคตีพที่ "0" เมื่อซีพียูได้สัญญาณ RESET จะมีสภาวะเริ่มต้น ดังนี้
1. รีจิสเตอร์ PC (Program Counter) มีค่าเป็น 0
2. disable Interrupt FlipFlop(IFF)
3. โหมดการ Interrupt อยู่ที่ 0
4. ค่าในรีจิสเตอร์ I เป็น 0
5. ค่าในรีจิสเตอร์ R เป็น 0
6. บัสข้อมูลและบัสแอดเดรส มีสภาวะควมต้านทานอนันต์ (High Impedance)
7. สัญญาณควบคุมทุกสัญญาณไม่ active
8. ไม่รีเฟรชหน่วยความจำ
M1 Machine cycle one) เป็นเอาท์พุท ให้ลอจิกแอคตีพที่ "0" M1 เกิดตามหลังวงรอบการเฟทช์คำสั่ง(OP code fetch cycle) ของการประมวลผลคำสั่ง(instruction execution) ในการ ประมวลผลคำสั่ง 2 ไบท์ Z80 จะส่งสัญญาณ M1 เมื่อเฟทช์คำสั่ง แต่ละไบท์ คำสั่ง 2 ไบท์ มักจะเริ่มต้นด้วย CBH EDH หรือ FDH Z80 จะส่งสัญญาณ M1 พร้อมกับ IORQ เพื่อแสดงวงรอบการตอบรับ สัญญาณอินเทอร์รัพท์ (interrupt acknowledge cycle)
1. ทำไมต้องเป็น Z-80
Z-80 เป็นไมโครโปรเซสเซอร์ที่มีโครงสร้างง่ายต่อการเรียนรู้และการจัดวงจรแต่ละขาของตัวไมโครโปรเซสเซอร์ มีหน้าที่เดียว ไม่ซับซ้อน ผู้ที่เริ่มต้นศึกษา Z-80 จะเกิดความรู้สึกว่า การเรียนรู้ไมโครโปรเซสเซอร์ ไม่ใช่เรื่องยาก
2. โครงสร้างและตำแหน่งขาของZ-80
Z-80 เป็นไอซี 40 ขา แบบ DIP (Dual Inline package) ดังแสดงในรูป 1 โครงสร้างภายในของ Z-80 อาจศึกษาได้จากเอกสารอ้างอิงท้ายข้อความนี้
หน้าที่ของขาสัญญาณบน Z80
CLOCK เป็นสัญญาณนาฬิกาจากภายนอกที่ป้อนให้ซีพียู เป็นตัวให้จังหวะใน การทำงานของซีพียู Z80 ใช้ความถี่ สัญญาณ CLOCK ได้สูงสุด 2 MHZ. 4 MHZ. สำหรับ Z80A และ 6MHZ. สำหรับZ80B เอาท์พุทของสัญญาณ CLOCK ควรมีตัวต้านทาน 330 โอห์ม ต่อพูลอัพ (Pull up) กับไฟเลี้ยง 5 โวลท์ ก่อนต่อเข้าซีพียู
A0-A15 บัสแอดเดรส (Address Bus) มี 16 เส้น ชนิด Output เป็นตัวกำหนด ตำแหน่งที่ต้องการติดต่อในหน่วยความจำ สามารถกำหนดตำแหน่งได้ 2E16 หรือ 65535 หรือ 64k ตำแหน่ง และใช้ A0-A7 เป็นตัวกำหนดตำแหน่งของอุปกรณ์ Input/Output จะกำหนดได้ 2E08 หรือ 256 ตำแหน่ง
D0-D7 บัสข้อมูล (Data Bus) มี 8 เส้น เป็นสายสัญญาณชนิด 2 ทิศทาง ใช้ส่งผ่านข้อมูลระหว่างซีพียูกับหน่วยความจำ หรือระหว่าง ซีพียูกับ อุปกรณ์ Input/Output
MREQ (MemoryREQuest)เป็นเอาท์พุทแบบ 3 สถานะให้ลอจิกแอคตีพที่"0" เป็นสัญญาณแจ้งระบบว่าซีพียูต้องการอ่านหรือเขียนหน่วยความจำใน ตำแหน่งที่ปรากฏบนบัสแอดเดรส
IORQ (Inputt/OutputReQuest)เป็นเอาท์พุทแบบ3สถานะให้ลอจิกแอคตีพที่ "0" เป็นสัญญาณแจ้งระบบว่า ซีพียูต้องการส่งค่า ที่ปรากฏบนบัสข้อมูลให้กับอุปกรณ์เอาท์พุท หรือต้องการอ่านค่าจากอุปกรณ์อินพุท ในตำแหน่งที่ปรากฏบนบัสแอดเดรส A0-A7
RD เอาท์พุทแบบ 3 สถานะ ให้ลอจิกแอคตีพที่ "0" เป็นสัญญาณ แจ้งระบบว่า ซีพียูต้องการอ่านค่าในหน่วยความจำในตำแหน่งที่ปรากฏ บนบัสแอดเดรส A0-A15 หรืออ่านค่าจากอุปกรณ์อินพุทในตำแหน่งที่ปรากฏบนบัสแอดเดรสA0-A7
WR เป็นเอาท์พุทแบบ 3 สถานะ ให้ลอจิกแอคตีพท ี่ "0" เป็นสัญญาณ แจ้งระบบว่า ซีพียูต้องการเขียนค่าลงหน่วยความจำ ในตำแหน่งที่ปรากฏ บนบัสแอดเดรส A0-A15 หรือส่งข้อมูล 8 บิท ไปยังอุปกรณ์เอาท์พุทในตำแหน่งที่ปรากฏบนบัสแอดเดรส A0-A7
RFSH (ReFreSH) เป็นเอาท์พุท ให้ลอจิกแอคตีพที่ "0" สัญญาณบนบัสแอดเดรส A0-A6ใช้รีเฟรส (Refresh)หน่วยความจำชนิดไดนามิค A7 เป็น "0" ขณะนั้ A8-A15 แสดงค่ารีจิสเตอร์
HALT (Halt State) เป็นเอาท์พุท ให้ลอจิกแอคตีพที่ "0" เมื่อซีพียู ได้รับคำสั่ง HALT และจะหยุดรอจนกว่าจะ ได้รับสัญญาณ RESET หรือ สัญญาณ INTERRUPT ในขณะนั้จะมีสภาวะเสมือนทำคำสั่ง NOP (No Operation) และยังรีเฟรส หน่วยความจำชนิดไดนามิค
WAIT เป็นสัญญาณอินพุท ให้ลอจิกแอคตีพที่ "0" เมื่อได้รับสัญญาณ WAIT ซีพียูจะหยุดรออุปกรณ์ที่ส่งสัญญาณ WAIT ด้วยวิธีการนี้จะทำให้ อุปกรณ์ความเร็วต่ำทำงานร่วมกับซีพียูความเร็วสูงได้
NMI NonMaskable Interrupt) เป็นขาสัญญาณอินพุท ใช้ทริกซีพียูที่ขอบ พัลส์ขาลงเพื่อให้ทำงานพิเศษที่กำหนดไว้แล้วล่วงหน้า เมื่อไดัรับ สัญญาณ Interrupt ซีพียูจะเก็บค่าในรีจิสเตอร์PCลงSTACKแล้วไปทำงานที่ตำแหน่ง0066Hหลังจากเสร็จงานพิเศษนี้แล้วจะกลับไปทำงานปกติต่อจากขั้น ตอนเดิมก่อนมาทำงานพิเศษนี้ไม่มีวิธีการใดที่ จำห้ามซีพียูทำงานพิเศษดังกล่าวเมื่อได้รับสัญญาณ NMI
INT (INTerrupt request) เป็นสัญญาณอินพุท ให้ลอจิกแอคตีพที่ "0" อุปกรณ์อินพุทหรือเอาท์พุทจะสร้างสัญญาณนี้เพื่อร้องขอการทำงาน บริการจากซีพียูเป็นกรณีพิเศษ หากมีอุปกรณ์ที่จะต้องให้บริการมาก จะต้องมีตัวจัดลำดับบริการก่อนหลังตามความสำคัญของอุปกรณ์ที่ผู้ออกแบบระบบจัดไว้ การบริการพิเศษจากซีพียูด้วยสัญญาณ INTมีได้ 3 โหมด คือ 0 1 และ 2 ซึ่งมีวิธีบริการที่แตกต่างกัน และ สามารถห้ามซีพียูให้บริการได้ด้วยคำสั่ง DI และสั่งให้ บริการต่อได้ด้วยคำสั่ง EI ในขณะที่ซีพียูให้บริการอยู่นั้น สัญญาณ BUSRQ จะต้องไม่ Active
BUSRQ (BUSRequest) เป็นสัญญาณอินพุทให้ลอจิกแอคตีพที่ "0" เป็นสัญญาณที่อุปกรณ์ภายนอกร้องขอใช้บัสข้อมูลและบัสแอดเดรสจากซีพียู เมื่อได้รับสัญญาณนี้ ซีพียูจะถอนตัวจากการยึดครองบัสโดยทำให้ขาบัสข้อมูลและขาบัสแอดเดรสของซีพียูมีสภาวะควมต้านทาน อนันต ์(High Impedance) เพื่อให้อุปกรณ์ที่ร้องขอใช้บัส รับส่ง ข้อมูลระหว่างกันได้
BUSAK (BUS AcKnowledge) เป็นสัญญาณเอาท์พุทจากซีพียูให้ลอจิกแอคตีพที่ "0" แจ้งอุปกรณ์ภายนอกที่ร้องขอใช้บัสด้วยสัญญาณ BUSRQ ว่า ซีพียูถอนตัวจากบัสแล้ว
RESET เป็นสัญญาณอินพุท ต้องการลอจิกแอคตีพที่ "0" เมื่อซีพียูได้สัญญาณ RESET จะมีสภาวะเริ่มต้น ดังนี้
1. รีจิสเตอร์ PC (Program Counter) มีค่าเป็น 0
2. disable Interrupt FlipFlop(IFF)
3. โหมดการ Interrupt อยู่ที่ 0
4. ค่าในรีจิสเตอร์ I เป็น 0
5. ค่าในรีจิสเตอร์ R เป็น 0
6. บัสข้อมูลและบัสแอดเดรส มีสภาวะควมต้านทานอนันต์ (High Impedance)
7. สัญญาณควบคุมทุกสัญญาณไม่ active
8. ไม่รีเฟรชหน่วยความจำ
M1 Machine cycle one) เป็นเอาท์พุท ให้ลอจิกแอคตีพที่ "0" M1 เกิดตามหลังวงรอบการเฟทช์คำสั่ง(OP code fetch cycle) ของการประมวลผลคำสั่ง(instruction execution) ในการ ประมวลผลคำสั่ง 2 ไบท์ Z80 จะส่งสัญญาณ M1 เมื่อเฟทช์คำสั่ง แต่ละไบท์ คำสั่ง 2 ไบท์ มักจะเริ่มต้นด้วย CBH EDH หรือ FDH Z80 จะส่งสัญญาณ M1 พร้อมกับ IORQ เพื่อแสดงวงรอบการตอบรับ สัญญาณอินเทอร์รัพท์ (interrupt acknowledge cycle)
ระบบปฏิบัติการ os
ซอฟต์แวร์ระบบปฏิบัติการ (Operating System) หรือ OS อาจเรียกอีกอย่างหนึ่งว่า Supervisor Program ซึ่งเป็นซอฟต์แวร์
ที่มีความสำคัญต่อการทำงานของเครื่องคอมพิวเตอร์มาก เพราะซอฟต์แวร์ประเภทอื่น ๆ จะทำงานในคอมพิวเตอร์ได้ ต้องขึ้นอยู่กับการควบคุมและการจัดการของ OS จึงเปรียบ OS เสมือนเป็นผู้จัดการของระบบ ถ้าไม่มีซอฟต์แวร์ประเภท OS ระบบคอมพิวเตอร์ก็ไม่สามารถทำงานได้
หน้าที่ของซอฟต์แวร์ Operating System สำคัญดังนี้
- เป็นตัวกลางเชื่อมโยงระหว่างผู้ใช้กับคอมพิวเตอร์ เพื่อให้เกิดความสะดวกในการสั่งงานคอมพิวเตอร์ โดยการจัดเตรียมซอฟต์แวร์ที่เรียกว่า OS Shell ไว้เป็นเครื่องมือในการติดต่อกับผู้ใช้ เช่น ระบบปฏิบัติการ DOS ติดต่อกับผู้ใช้โดยให้พิมพ์คำสั่งที่เครื่องหมายพร้อมรอรับคำสั่ง(Prompt Sign) ส่วนระบบปฏิบัติการ Windows'95 ติดต่อกับผู้ใช้โดยใช้ภาพกราฟฟิก เป็นต้น
- ควบคุมการทำงานของฮาร์ดแวร์คอมพิวเตอร์ เช่น ควบคุมการใช้ Disk Drive, Hard Disk, keyboard และ Monitor เป็นต้น
- ทำงานร่วมกับซอฟต์แวร์ที่อยู่ใน ROM (Read Only Memory) เมื่อเริ่มเปิดเครื่องคอมพิวเตอร์ที่เรียกว่า การบูต(Boot) เครื่อง OS จะทำงานต่อจากซอฟต์แวร์ประเภท Firmware ที่จัดเก็บไว้ใน ROM ซึ่งจะทำงานเมื่อเปิดเครื่องคอมพิวเตอร์ เรียก Firmware นี้ว่า BIOS (ฺBasic Input/Output System) โดย BIOS จะทำการตรวจสอบระบบฮาร์แวร์คอมพิวเตอร์เบื้องต้น จากนั้นจึงส่งหน้าที่การต่อให้แก่ซอฟต์แวร์ประเภท OS เพื่อให้ควบคุมการทำงานของคอมพิวเตอร์ต่อไป หากไม่มี OS คอมพิวเตอร์ก็จะหยุดการทำงาน
- จัดตาราง(Schedule) การใช้ทรัพยากร ได้แก่การเข้าใช้หน่วยประมวลผลกลาง(CPU) ของคำสั่งที่ผู้ใช้สั่งงานคอมพิวเตอร์ เช่น กำหนดวิธีการจัดคิว(Queue) ของคำสั่ง, เวลาที่ OS อนุญาตให้ใช้ CPU ของแต่ละคำสั่ง ทั้งนี้เพื่อให้ให้หน่วยประมวลผลกลางทำงานมีประสิทธิภาพมากที่สุด
- จัดการข้อมูลและสารสนเทศภายในหน่วยความจำ ได้แก่ การนำข้อมูลไปวาง(Placement) ในหน่วยความจำ, การแทนที่ข้อมูลในหน่วยความจำ(Replacement) การย้ายข้อมูลในหน่วยความจำ เป็นต้น
- จัดการระบบการจัดเก็บไฟล์ข้อมูลลงบนสื่อสำรองข้อมูล(Secondary Storage Unit)
- นำโปรแกรมหรือซอฟต์แวร์ประเภทอื่น เข้าประมวลผลในคอมพิวเตอร์ และคอยให้บริการเมื่อซอฟต์แวร์ต่าง ๆ ต้องการใช้ทรัพยากรของระบบคอมพิวเตอร์ ได้แก่ หน่วยความจำ, ดิสก์ไดรฟ์, ฮาร์ดดิสก์, เครื่องพิมพ์ เป็นต้น
- จัดการในด้านรักษาความปลอดภัย OS แก้ไขข้อบกพร่องระบบการทำงานของคอมพิวเตอร์ รักษาความปลอดภัยของข้อมูลในระบบ
- จัดการเชื่อมต่อและควบคุมอุปกรณ์รอบข้างของคอมพิวเตอร์ ได้แก่ เครื่องสแกนเนอร์, อุปกรณ์ Sound Card , Modem เป็นต้น
o คุณลักษณะของซอฟต์แวร์ระบบปฏิบัติการ สามารถพิจารณาในด้านต่าง ๆ ดังนี้
- จำนวนงานที่ทำได้ คือ จำนวนงานหรือโปรแกรมที่ OS สามารถจัดการให้ทำงานพร้อม กัน ถ้ามีหลายโปรแกรมหรือหลายงานทำงานพร้อมกันได้ เรียกว่า Multi-Tasking OS แต่ถ้า OS
ควบคุมให้โปรแกรมทำงานได้ครั้งละ 1 โปรแกรมเท่านั้น เรียกว่า Single-Tasking OS
- จำนวนผู้ใช้ คือ OS สามารถควบคุมการทำงานให้คอมพิวเตอร์สามารถทำงานพร้อม ๆ กันได้หลายเครื่องในระบบเครือข่ายที่มีผู้ใช้หลาย ๆ คน ถ้า OS สามารถจัดการระบบที่มีผู้ใช้หลาย ๆ คนพร้อมกันได้ในระบบ เรียกว่า Multi-User OS แต่ถ้า OS สามารถจัดการระบบได้เพียงเครื่องเดียวหรือมีผู้ใช้ระบบได้เพียงครั้งละ 1 คน เรียกว่า Single-User OS
- ประเภทของเครื่องคอมพิวเตอร์ที่ใช้ได้ แบ่งได้เป็น 2 กลุ่ม คือ Generic Operation System คือ ระบบปฏิบัติการที่สามารถใช้กับเครื่องคอมพิวเตอร์ได้หลายประเภท ไม่ยึดติดกับคอมพิวเตอร์ประเภทใดประเภทหนึ่งเท่านั้น และ Proprietary Operating System คือ ระบบปฏิบัติการที่สร้างขึ้นมาเพื่อใช้กับคอมพิวเตอร์ระบบ ระบบหนึ่งหรือยี่ห้อใดยี่ห้อหนึ่งเท่านั้น สร้างระบบปฏิบัติการขึ้นมาเพื่อใช้กับ Microprocessor Chip ประเภทเดียว ไม่สามารถนำไปใช้กับคอมพิวเตอร์ประเภทอื่น ๆ ได้ เช่น ระบบปฏิบัติการสำหรับเครื่อง Macintosh และเครื่องในตระกูล Apple II ซึ่งใช้ CPU Chip ยี่ห้อ Motorola 6502 เป็นต้น ซึ่งไม่สามารถนำระบบปฏิบัติการนี้มาใช้กับไมโครคอมพิวเตอร์ทั่ว ๆ ไปได้
ตัวอย่างซอฟต์แวร์ระบบปฏิบัติการที่ใช้สำหรับเครื่องไมโครคอมพิวเตอร์โดยทั่วไป ได้แก่ ดอส(DOS), วินโดวส์ 95(Windows'95), ยูนิกซ์(UNIX)
o ดอส (DOS : Disk Operating System)
DOS ย่อมาจาก Disk Operating System เป็นระบบปฏิบัติการที่ใช้กันแพร่หลายบนเครื่องไมโครคอมพิวเตอร์ ซอฟต์แวร์มีขนาดไม่ใหญ่ สามารถบันทึกไว้บนแผ่นดิสก์ (Diskette) แล้วนำไปใช้กับเครื่องไมโครคอมพิวเตอร์ได้ เริ่มมีใช้ครั้งแรกบนเครื่อง IBM PC ประมาณปี ค. ศ. 1981 เรียกว่า PC-DOS ต่อมาบริษัท Microsoft ได้สร้าง MS-DOS สำหรับเครื่องไมโครคอมพิวเตอร์ทั่วไปและได้รับความนิยมอย่างแพร่หลายมาจนถึงปัจจุบัน ตั้งแต่รุ่น (Version) 1.0, 2.0, 3.0, 3.30, 4.0, 5.0, 6.0 และ 6.22 ปัจจุบันมีซอฟต์แวร์ทำงานภายใต้ระบบปฏิบัติการ MS-DOS อยู่เป็นจำนวนมาก โดยเฉพาะบนไมโครคอมพิวเตอร์รุ่นเก่า ๆ ที่มีทรัพยากรของระบบน้อย เช่น มีหน่วยความจำและฮาร์ดดิสก์ความจุน้อย , Microprocessor รุ่นเก่า เป็นต้น
ลักษณะการทำงาน DOS ทำงานติดต่อกับผู้ใช้แบบ Interactive Command คือผู้ใช้ต้องพิมพ์คำสั่งตามรูปแบบที่ DOS กำหนด ณ ตำแหน่งเครื่องหมายพร้อม(Prompt Sign) รอรับคำสั่งอยู่ ซึ่งมี
เคอร์เซอร์(Cursor) บอกตำแหน่งที่พิมพ์ เมื่อพิมพ์คำสั่งเสร็จ ต้องกดแป้น Enter เพื่อส่งคำสั่งไปทำงาน จากนั้นก็จะได้ผลลัพธ์ของการทำงาน การควบคุมการใช้ DOS ส่วนใหญ่ใช้แป้นพิมพ์เพื่อพิมพ์คำสั่ง ที่เป็นข้อความเป็นส่วนใหญ่ เรียกว่าทำงานในรูปแบบ Mode Text บนบรรทัดคำสั่ง (Command Line)
การจัดประเภท DOS จัดเป็น OS ประเภท Single-Tasking, Single-User และ Generic Operating Software และทำงานในโหมดข้อความ (Text Mode) เป็นส่วนใหญ่
ที่มีความสำคัญต่อการทำงานของเครื่องคอมพิวเตอร์มาก เพราะซอฟต์แวร์ประเภทอื่น ๆ จะทำงานในคอมพิวเตอร์ได้ ต้องขึ้นอยู่กับการควบคุมและการจัดการของ OS จึงเปรียบ OS เสมือนเป็นผู้จัดการของระบบ ถ้าไม่มีซอฟต์แวร์ประเภท OS ระบบคอมพิวเตอร์ก็ไม่สามารถทำงานได้
หน้าที่ของซอฟต์แวร์ Operating System สำคัญดังนี้
- เป็นตัวกลางเชื่อมโยงระหว่างผู้ใช้กับคอมพิวเตอร์ เพื่อให้เกิดความสะดวกในการสั่งงานคอมพิวเตอร์ โดยการจัดเตรียมซอฟต์แวร์ที่เรียกว่า OS Shell ไว้เป็นเครื่องมือในการติดต่อกับผู้ใช้ เช่น ระบบปฏิบัติการ DOS ติดต่อกับผู้ใช้โดยให้พิมพ์คำสั่งที่เครื่องหมายพร้อมรอรับคำสั่ง(Prompt Sign) ส่วนระบบปฏิบัติการ Windows'95 ติดต่อกับผู้ใช้โดยใช้ภาพกราฟฟิก เป็นต้น
- ควบคุมการทำงานของฮาร์ดแวร์คอมพิวเตอร์ เช่น ควบคุมการใช้ Disk Drive, Hard Disk, keyboard และ Monitor เป็นต้น
- ทำงานร่วมกับซอฟต์แวร์ที่อยู่ใน ROM (Read Only Memory) เมื่อเริ่มเปิดเครื่องคอมพิวเตอร์ที่เรียกว่า การบูต(Boot) เครื่อง OS จะทำงานต่อจากซอฟต์แวร์ประเภท Firmware ที่จัดเก็บไว้ใน ROM ซึ่งจะทำงานเมื่อเปิดเครื่องคอมพิวเตอร์ เรียก Firmware นี้ว่า BIOS (ฺBasic Input/Output System) โดย BIOS จะทำการตรวจสอบระบบฮาร์แวร์คอมพิวเตอร์เบื้องต้น จากนั้นจึงส่งหน้าที่การต่อให้แก่ซอฟต์แวร์ประเภท OS เพื่อให้ควบคุมการทำงานของคอมพิวเตอร์ต่อไป หากไม่มี OS คอมพิวเตอร์ก็จะหยุดการทำงาน
- จัดตาราง(Schedule) การใช้ทรัพยากร ได้แก่การเข้าใช้หน่วยประมวลผลกลาง(CPU) ของคำสั่งที่ผู้ใช้สั่งงานคอมพิวเตอร์ เช่น กำหนดวิธีการจัดคิว(Queue) ของคำสั่ง, เวลาที่ OS อนุญาตให้ใช้ CPU ของแต่ละคำสั่ง ทั้งนี้เพื่อให้ให้หน่วยประมวลผลกลางทำงานมีประสิทธิภาพมากที่สุด
- จัดการข้อมูลและสารสนเทศภายในหน่วยความจำ ได้แก่ การนำข้อมูลไปวาง(Placement) ในหน่วยความจำ, การแทนที่ข้อมูลในหน่วยความจำ(Replacement) การย้ายข้อมูลในหน่วยความจำ เป็นต้น
- จัดการระบบการจัดเก็บไฟล์ข้อมูลลงบนสื่อสำรองข้อมูล(Secondary Storage Unit)
- นำโปรแกรมหรือซอฟต์แวร์ประเภทอื่น เข้าประมวลผลในคอมพิวเตอร์ และคอยให้บริการเมื่อซอฟต์แวร์ต่าง ๆ ต้องการใช้ทรัพยากรของระบบคอมพิวเตอร์ ได้แก่ หน่วยความจำ, ดิสก์ไดรฟ์, ฮาร์ดดิสก์, เครื่องพิมพ์ เป็นต้น
- จัดการในด้านรักษาความปลอดภัย OS แก้ไขข้อบกพร่องระบบการทำงานของคอมพิวเตอร์ รักษาความปลอดภัยของข้อมูลในระบบ
- จัดการเชื่อมต่อและควบคุมอุปกรณ์รอบข้างของคอมพิวเตอร์ ได้แก่ เครื่องสแกนเนอร์, อุปกรณ์ Sound Card , Modem เป็นต้น
o คุณลักษณะของซอฟต์แวร์ระบบปฏิบัติการ สามารถพิจารณาในด้านต่าง ๆ ดังนี้
- จำนวนงานที่ทำได้ คือ จำนวนงานหรือโปรแกรมที่ OS สามารถจัดการให้ทำงานพร้อม กัน ถ้ามีหลายโปรแกรมหรือหลายงานทำงานพร้อมกันได้ เรียกว่า Multi-Tasking OS แต่ถ้า OS
ควบคุมให้โปรแกรมทำงานได้ครั้งละ 1 โปรแกรมเท่านั้น เรียกว่า Single-Tasking OS
- จำนวนผู้ใช้ คือ OS สามารถควบคุมการทำงานให้คอมพิวเตอร์สามารถทำงานพร้อม ๆ กันได้หลายเครื่องในระบบเครือข่ายที่มีผู้ใช้หลาย ๆ คน ถ้า OS สามารถจัดการระบบที่มีผู้ใช้หลาย ๆ คนพร้อมกันได้ในระบบ เรียกว่า Multi-User OS แต่ถ้า OS สามารถจัดการระบบได้เพียงเครื่องเดียวหรือมีผู้ใช้ระบบได้เพียงครั้งละ 1 คน เรียกว่า Single-User OS
- ประเภทของเครื่องคอมพิวเตอร์ที่ใช้ได้ แบ่งได้เป็น 2 กลุ่ม คือ Generic Operation System คือ ระบบปฏิบัติการที่สามารถใช้กับเครื่องคอมพิวเตอร์ได้หลายประเภท ไม่ยึดติดกับคอมพิวเตอร์ประเภทใดประเภทหนึ่งเท่านั้น และ Proprietary Operating System คือ ระบบปฏิบัติการที่สร้างขึ้นมาเพื่อใช้กับคอมพิวเตอร์ระบบ ระบบหนึ่งหรือยี่ห้อใดยี่ห้อหนึ่งเท่านั้น สร้างระบบปฏิบัติการขึ้นมาเพื่อใช้กับ Microprocessor Chip ประเภทเดียว ไม่สามารถนำไปใช้กับคอมพิวเตอร์ประเภทอื่น ๆ ได้ เช่น ระบบปฏิบัติการสำหรับเครื่อง Macintosh และเครื่องในตระกูล Apple II ซึ่งใช้ CPU Chip ยี่ห้อ Motorola 6502 เป็นต้น ซึ่งไม่สามารถนำระบบปฏิบัติการนี้มาใช้กับไมโครคอมพิวเตอร์ทั่ว ๆ ไปได้
ตัวอย่างซอฟต์แวร์ระบบปฏิบัติการที่ใช้สำหรับเครื่องไมโครคอมพิวเตอร์โดยทั่วไป ได้แก่ ดอส(DOS), วินโดวส์ 95(Windows'95), ยูนิกซ์(UNIX)
o ดอส (DOS : Disk Operating System)
DOS ย่อมาจาก Disk Operating System เป็นระบบปฏิบัติการที่ใช้กันแพร่หลายบนเครื่องไมโครคอมพิวเตอร์ ซอฟต์แวร์มีขนาดไม่ใหญ่ สามารถบันทึกไว้บนแผ่นดิสก์ (Diskette) แล้วนำไปใช้กับเครื่องไมโครคอมพิวเตอร์ได้ เริ่มมีใช้ครั้งแรกบนเครื่อง IBM PC ประมาณปี ค. ศ. 1981 เรียกว่า PC-DOS ต่อมาบริษัท Microsoft ได้สร้าง MS-DOS สำหรับเครื่องไมโครคอมพิวเตอร์ทั่วไปและได้รับความนิยมอย่างแพร่หลายมาจนถึงปัจจุบัน ตั้งแต่รุ่น (Version) 1.0, 2.0, 3.0, 3.30, 4.0, 5.0, 6.0 และ 6.22 ปัจจุบันมีซอฟต์แวร์ทำงานภายใต้ระบบปฏิบัติการ MS-DOS อยู่เป็นจำนวนมาก โดยเฉพาะบนไมโครคอมพิวเตอร์รุ่นเก่า ๆ ที่มีทรัพยากรของระบบน้อย เช่น มีหน่วยความจำและฮาร์ดดิสก์ความจุน้อย , Microprocessor รุ่นเก่า เป็นต้น
ลักษณะการทำงาน DOS ทำงานติดต่อกับผู้ใช้แบบ Interactive Command คือผู้ใช้ต้องพิมพ์คำสั่งตามรูปแบบที่ DOS กำหนด ณ ตำแหน่งเครื่องหมายพร้อม(Prompt Sign) รอรับคำสั่งอยู่ ซึ่งมี
เคอร์เซอร์(Cursor) บอกตำแหน่งที่พิมพ์ เมื่อพิมพ์คำสั่งเสร็จ ต้องกดแป้น Enter เพื่อส่งคำสั่งไปทำงาน จากนั้นก็จะได้ผลลัพธ์ของการทำงาน การควบคุมการใช้ DOS ส่วนใหญ่ใช้แป้นพิมพ์เพื่อพิมพ์คำสั่ง ที่เป็นข้อความเป็นส่วนใหญ่ เรียกว่าทำงานในรูปแบบ Mode Text บนบรรทัดคำสั่ง (Command Line)
การจัดประเภท DOS จัดเป็น OS ประเภท Single-Tasking, Single-User และ Generic Operating Software และทำงานในโหมดข้อความ (Text Mode) เป็นส่วนใหญ่
iOS 4 สำหรับ iPad
iOS 4 หมายถึงระบบปฏิบัติการแบบโมบาย ที่พัฒนาโดยทีมงาน Apple ซึ่งระบบปฏิบัติการ iOS 4 นี้ สามารถรองรับการทำงานได้ทั้งในส่วนของ iPhone และ iPad ด้วย ดังนั้น สาวก Apple ทุกคน ไม่ควรพลาด
สำหรับหลายๆ คนที่ใช้ iPad อยู่และต้องอัพเกรดระบบปฏิบัติการบน iPad เป็นเวอร์ชั่นล่าสุด ณ ตอนนี้ (ธันวามคม 2553) สำหรับเวอร์ชั่นนี้มีความสามารถต่างๆ เพิ่มเติมเข้ามาหลากหลายมาก ดังนั้น ผู้ใช้ iPad ทุกท่านไม่ควรพลาด? และที่สำคัญคือ การอัพเกรดเป็นเวอร์ชั่นใหม่นี้ สามารถทำได้เอง ไม่เสียสตางค์ครับ เพราะสามารถสั่งผ่านโปรแกรม iTunes ได้ทันที
คุณสมบัติใหม่ของ iOS 4
สำหรับคุณสมบัติใหม่ของ iOS 4 ทาง Apple แจ้งในเว็บไซต์ของเขาว่า เวอร์ชั่นนี้ได้เพิ่มความสามารถใหม่ๆ นับร้อยเลยทีเดียว ซึ่งถ้าจะให้บอกทั้งหมด คงต้องใช้เวลามากพอสมควร ดังนั้น จะขอแนะนำคุณสมบัติเด่นๆ ที่เราน่ารู้จักดังนี้
Multitasking
แต่เดิมเวอร์ชั่น iOS 3 ยังไม่มีความสามารถของการทำ Multitasking ที่สมบูรณ์ การใช้งานก็ค่อนข้างไม่สะดวก แต่สำหรับ iOS 4 นี้ ทำให้คุณรู้จักได้ที่ความเปลี่ยนแปลงที่ดีขึ้นอย่างเห็นได้ชัด ไม่ว่าจะเป็นเรื่องของความเร็วในการประมวลผล การใช้งานที่ราบเรียบ ไม่สะดุด
Folders
แต่ก่อนไอคอนโปรแกรมหรือ App ต่างๆ ปรากฏบนหน้าจอเต็มไปหมด โดยเฉพาะกับคนที่ชอบ download App ใหม่ๆ มาทดลองเล่น ทำให้หน้าจอไม่เป็นระเบียบเท่าใดนัก แต่วันนี้ คำสั่ง Folders จะทำให้คุณสามารถรวมกลุ่มของ App ต่างๆ เข้าด้วยกัน เช่น กลุ่มของโปรแกรมเกมส์ กลุ่มของโปรแกรมสำนักงาน เป็นต้น
AirPrint
สามารถสั่งพิมพ์งานได้โดยไม่จำเป็นต้องติดตั้งสายสัญญาณใดๆ เป็นการพิมพ์ในลักษณะไร้สาย หรือ Wireless และที่แปลกคือ สามารถพิมพ์ได้โดยไม่จำเป็นต้องติดตั้ง Driver เหมือนการใช้ในคอมพิวเตอร์ทั่วไป? แต่ที่จำเป็นและสำคัญมากๆ คือ เครื่องพิมพ์นั่น ต้องรองรับเทคโนโลยี AirPrint ครับ
ตัวอย่างเครื่องพิมพ์ที่รองรับ AirPrint
HP Envy e-All-in-One series (D410a)
HP Photosmart Plus e-AiO (B210a)
HP Photosmart Premium e-AiO (C310a)
HP Photosmart Premium Fax e-AiO (C410a)
HP Photosmart e-AiO (D110)
HP Photosmart eStation (C510)
HP LaserJet Pro M1536dnf Multifunction Printer
HP LaserJet Pro CM1415fn Color Multifunction Printer
HP LaserJet Pro CM1415fnw Color Multifunction Printer
HP LaserJet Pro CP1525n Color Printer
HP LaserJet Pro CP1525nw Color Printer
AirPlay
เราสามารถเล่นไฟล์ ดิจิตอลต่างๆ แบบไร้สาย และแสดงบนหน้าจอ LCD ของเราได้ง่ายๆ ไม่ต้องติดต้องสายเคเบิลใดๆ เช่นเดียวกับ AirPrint? ผ่านทาง Apple TV
Find my iPad
iPad หายไม่ต้องตกใจ ถ้าคุณมีการติดตั้ง MobileMe ?และใช้ระบบปฏิบัติการ iOS 4.2 ขึ้นไป จะทำให้คุณสามารถค้นหา iPad ของคุณได้ว่า คุณได้ลืมไว้ที่ไหน โดยคุณสามารถสั่งการผ่านออนไลน์ได้ดังนี้
แสดงข้อความที่หน้าจอ iPad ของคุณ
สั่งล็อคเครื่อง iPad
สั่งลบข้อมูลบน iPad แบบถาวรที่ไม่สามารถกู้ได้
สำหรับความสามารถอื่นๆ อีกมากมายของ iOS 4 สามารถคลิกไปศึกษารายละเอียดเพิ่มเติมได้ที่ http://www.apple.com/ipad/ เลือกหัวข้อ iOS 4
วันจันทร์ที่ 8 สิงหาคม พ.ศ. 2554
Visual Basic 6.0 เบื้องต้น
การเขียนโปรแกรมด้านฐานข้อมูลด้วย Visual Basic 6.0 เป็นอีกวิธีหนึ่งที่บริษัทไมโครซอฟท์ได้คิดค้นเทคโนโลยีการเข้าถึงข้อมูลแบบใหม่ ซึ่งมีชื่อเรียกว่า Universal Data Access เรียกย่อๆ ว่า UDA โดยมีแนวคิดว่า ต้องการให้เป็นเทาโนโลยีที่จะสามารถเข้าถึงข้อมูลในฐานข้อมูลจาก RDBMS (Relational Database Management System) ได้หลายๆ ชนิด เช่น MS SQL Server, Oracle, MS Access เป็นต้น
Visual Basic 6.0 ได้ออกมาพร้อมกับความสามารถใหม่ ๆ หลายอย่างที่อำนวยความสะดวกให้กับพัฒนาโปรแกรมมากกว่าเวอร์ชันเก่า โปรแกรม Visual Basic เป็นของบริษัทไมโครซอฟท์ โดยบริษัทไมโครซอฟต์ได้พัฒนา Visual Basic 6.0 มาเพื่อแบ่งตลาดกับบริษัท Boland C โดยแข่งกับโปรแกรมที่ชื่อว่า Delphi 6 แต่ความสามารถของ Visual basic 6.0 ยังไม่ดีพอ คือ เพื่อพัฒนาโปรแกรมเสร็จแล้วในการ Compile Program ซึ่งจะได้ File ที่มีนามสกุล .exe ก็ยังไม่สามารถนำไปใช้กับเครื่องคอมพิวเตอร์เครื่องอื่นได้จะต้อง Copy ส่วนประกอบอื่นไปด้วย ซึ่งต่างจาก Delphi เมื่อ Compile Program เสร็จแล้วได้ File ที่มีนามสกุล .exe แล้วสามารถนำไปใช้ที่เครื่องอื่นได้เลย แต่มีขนาดของไฟล์ที่ใหญ่กว่า Visual Basic มากเพราะ Delphi รวมเอาส่วนประกอบอื่นเข้าไปใน .exe เลย
การพัฒนาการเขียนโปรแกรม Visual Basic 6.0 นั้นจะมีซอฟต์แวร์ที่เกี่ยวข้องดังนี้ คือ
1. Software Visual Basic 6.0 โดยใช้พัฒนาสร้างซอฟต์แวร์ขึ้นใช้เอง
2. Software Microsoft Office Access ใช้สำหรับเก็บฐานข้อมูล
3. Software Microsoft SQL Server 2000 ใช้สำหรับเก็บฐานข้อมูลขนาดใหญ่โดยผ่านเครือข่าย
4. Software Crystal Reports หรือ Software Data Report ใช้สำหรับทำรายงานต่างของโปรแกรม
5. Software Factory 6.0 ใช้สำหรับทำไฟล์ติดตั้งโปรแกรมลงบนเครื่องอื่นๆหรือที่เรียกว่า Make Setup
6. Software Help ใช้สำหรับทำไฟล์ช่วยเหลือในโปรแกรมหรือที่เรียกว่า Make Help File
วงจรการพัฒนาระบบมีดังนี้ (System Development Life Cycle)
1. เข้าใจปัญหา (Problem Recognition)
2. ศึกษาความเป็นไปได้ (Feasibility Study)
3. วิเคราะห์ (Analysis)
4. ออกแบบ (Design)
5. สร้าง หรือพัฒนาระบบ (Construction)
6. การปรับเปลี่ยน (Conversion)
7. การบำรุงรักษา (Maintenance)
วันพุธที่ 27 กรกฎาคม พ.ศ. 2554
เริ่มต้นการพัฒนา Application ด้วย Hello World
หลังจากที่เราได้ลองติดตั้งและทดสอบ Emulator ของEclipse Android SDK กันแล้ว
มาคราวนี้เราจะลอง App ง่ายๆ บน Android กัน ด้วยโปรแกรมพื้นฐานสำหรับทุกการเขียนโปรแกรมอย่าง Hello World
เริ่มต้นด้วยการสร้างโปรเจค Android ใน Eclipse
1. เปิดโปรแกรม Eclipse ขึ้นมา จากนั้นเลือกที่ File > New > Project
ในหน้าต่าง New Project ภายใต้ Android เลือก Andrild project ดังรูป หลังจากนั้นให้กด Next
2. เมื่อเสร็จจากขั้นตอนแรกแล้วจะได้ดังรูปนี้ โดยกรอกข้อมูลต่อไปนี้
- Project Name: HelloWorld
- Build Target : Android 2.2
- Application Name: HelloWorld
- Package Name: com.example.hello
- Create Activity: HelloWorld
- Min SDK Version: 8
จากนั้นคลิกที่ Finish
นี่คือคำอธิบายของแต่ละฟิลด์:
- Project Name : นี้คือชื่อโปรเจกของ Eclipse – ชื่อของไดเรกทอรีที่จะมีไฟล์โปรเจกอยู่
- Build Target : ได้เลือกใช้ Android 2.2 platform ซึ่งหมายความว่าแอปพลิเคชันของคุณจะถูก compiled กับ Android 2.2 platform library
- Application Name : นี้เป็นชื่อสำหรับแอปพลิเคชันของคุณ – ชื่อที่จะปรากฏในอุปกรณ์ Android
- Package name : นี้คือ namespace แพคเกจ (ตามกฎเดียวกันกับสำหรับแพคเกจในภาษา Java) ถ้าจะเปรียบเทียบให้ง่ายๆก็เหมือนเป็นโฟลเดอร์ที่ทำหน้าที่จัดเก็บ Class ต่างๆ ไว้ให้เป็นหมวดหมู่
- Create Activity : นี้คือชื่อสำหรับ class stub ที่จะสร้างโดยปลั๊กอินนี้ ซึ่งจะเป็น subclass ของ Android’s Activity class
- Min SDK Version : ค่านี้ระบุ API ระดับต่ำสุดที่จำเป็นสำหรับแอปพลิเคชันของคุณ
3. ตอนนี้โปรเจก Android ของคุณพร้อมแล้ว คุณจะมองเห็นใน Package Explorer อยู่ด้านซ้าย คลิกเปิดไฟล์ HelloWorld.java (HelloAndroid > src > com.example.helloworld) ซึ่งควรมีลักษณะเช่นนี้:
package com.example.helloworld;
import android.app.Activity;
import android.os.Bundle;
public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
หลังจากสร้างโปรเจกเรียบร้อยแล้ว ขึ้นตอนต่อมาคือการรันแอปพลิเคชัน
1. คลิกเลือกที่ Run > Run
2. เลือก “Android Application”
หลังจากนั้นโปรแกรมจะทำการเปิด Emulator ของ Android SDK 2.2 ที่เราเคยสร้างไว้ขึ้นมาอย่างอัตโนมัติ กดที่ Manu เพื่อปลดล็อกเครื่อง
ซึ่งคุณจะเห็น Hello World ดังรูป
ขอขอบคุณ http://www.openplus.org/content/development/application-android-sdk-16-hello-world
มาคราวนี้เราจะลอง App ง่ายๆ บน Android กัน ด้วยโปรแกรมพื้นฐานสำหรับทุกการเขียนโปรแกรมอย่าง Hello World
เริ่มต้นด้วยการสร้างโปรเจค Android ใน Eclipse
1. เปิดโปรแกรม Eclipse ขึ้นมา จากนั้นเลือกที่ File > New > Project
ในหน้าต่าง New Project ภายใต้ Android เลือก Andrild project ดังรูป หลังจากนั้นให้กด Next
2. เมื่อเสร็จจากขั้นตอนแรกแล้วจะได้ดังรูปนี้ โดยกรอกข้อมูลต่อไปนี้
- Project Name: HelloWorld
- Build Target : Android 2.2
- Application Name: HelloWorld
- Package Name: com.example.hello
- Create Activity: HelloWorld
- Min SDK Version: 8
จากนั้นคลิกที่ Finish
นี่คือคำอธิบายของแต่ละฟิลด์:
- Project Name : นี้คือชื่อโปรเจกของ Eclipse – ชื่อของไดเรกทอรีที่จะมีไฟล์โปรเจกอยู่
- Build Target : ได้เลือกใช้ Android 2.2 platform ซึ่งหมายความว่าแอปพลิเคชันของคุณจะถูก compiled กับ Android 2.2 platform library
- Application Name : นี้เป็นชื่อสำหรับแอปพลิเคชันของคุณ – ชื่อที่จะปรากฏในอุปกรณ์ Android
- Package name : นี้คือ namespace แพคเกจ (ตามกฎเดียวกันกับสำหรับแพคเกจในภาษา Java) ถ้าจะเปรียบเทียบให้ง่ายๆก็เหมือนเป็นโฟลเดอร์ที่ทำหน้าที่จัดเก็บ Class ต่างๆ ไว้ให้เป็นหมวดหมู่
- Create Activity : นี้คือชื่อสำหรับ class stub ที่จะสร้างโดยปลั๊กอินนี้ ซึ่งจะเป็น subclass ของ Android’s Activity class
- Min SDK Version : ค่านี้ระบุ API ระดับต่ำสุดที่จำเป็นสำหรับแอปพลิเคชันของคุณ
3. ตอนนี้โปรเจก Android ของคุณพร้อมแล้ว คุณจะมองเห็นใน Package Explorer อยู่ด้านซ้าย คลิกเปิดไฟล์ HelloWorld.java (HelloAndroid > src > com.example.helloworld) ซึ่งควรมีลักษณะเช่นนี้:
package com.example.helloworld;
import android.app.Activity;
import android.os.Bundle;
public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
หลังจากสร้างโปรเจกเรียบร้อยแล้ว ขึ้นตอนต่อมาคือการรันแอปพลิเคชัน
1. คลิกเลือกที่ Run > Run
2. เลือก “Android Application”
หลังจากนั้นโปรแกรมจะทำการเปิด Emulator ของ Android SDK 2.2 ที่เราเคยสร้างไว้ขึ้นมาอย่างอัตโนมัติ กดที่ Manu เพื่อปลดล็อกเครื่อง
ซึ่งคุณจะเห็น Hello World ดังรูป
ขอขอบคุณ http://www.openplus.org/content/development/application-android-sdk-16-hello-world
โครงสร้างของแอนดรอยด์
การทำความเข้าใจโครงสร้างของระบบปฏิบัติการแอนดรอยด์ ถือว่าเป็นสิ่งสำคัญเพราะถ้านักพัฒนาโปรแกรม สามารถมองภาพโดยรวมของระบบได้ทั้งหมด จะให้สามารถเข้าใจถึงกระบวนการทำงานได้ดียิ่งขึ้น และสามารถนำไปช่วยในการออกแบบโปรแกรมที่ต้องการพัฒนา เพื่อให้เกิดประสิทธิภาพในการทำงาน
[[รูป 1-6 : Android Architecture]]
จากโครงสร้างของระบบปฏิบัติการแอนดรอยด์ จะสังเกตุได้ว่า มีการแบ่งออกมาเป็นส่วนๆ ที่มีความเกี่ยวเนื่องกัน โดยส่วนบนสุดจะเป็นส่วนที่ผู้ใช้งานทำการติดต่อโดยตรงซึ่งก็คือส่วนของ (Applications) จากนั้นก็จะลำดับลงมาเป็นองค์ประกอบอื่นๆตามลำดับ และสุดท้ายจะเป็นส่วนที่ติดต่อกับอุปกรณ์โดยผ่านทาง Linux Kernel โครงสร้างของแอนดรอยด์ พอที่จะอธิบายเป็นส่วนๆได้ดังนี้
Applications ส่วน Application หรือส่วนของโปรแกรมที่มีมากับระบบปฏิบัติการ หรือเป็นกลุ่มของโปรแกรมที่ผู้ใช้งานได้ทำการติดตั้งไว้ โดยผู้ใช้งานสามารถเรียกใช้โปรแกรมต่างๆได้โดยตรง ซึ่งการทำงานของแต่ละโปรแกรมจะเป็นไปตามที่ผู้พัฒนาโปรแกรมได้ออกแบบและเขียนโค้ดโปรแกรมเอาไว้
Application Frameworkเป็นส่วนที่มีการพัฒนาขึ้นเพื่อให้นักพัฒนาสามารถพัฒนาโปรแกรมได้สะดวก และมีประสิทธิภาพมากยิ่งขึ้น โดยนักพัฒนาไม่จำเป็นต้องพัฒนาในส่วนที่มีความยุ่งยากมากๆ เพียงแค่ทำการศึกษาถึงวิธีการเรียกใช้งาน Application Framework ในส่วนที่ต้องการใช้งาน แล้วนำมาใช้งาน ซึ่งมีหลายกลุ่มด้วยกัน ตัวอย่างเช่น
Activities Manager เป็นกลุ่มของชุดคำสั่งที่จัดการเกี่ยวกับวงจรการทำงานของหน้าต่างโปรแกรม(Activity)
Content Providers เป็นกลุ่มของชุดคำสั่ง ที่ใช้ในการเข้าถึงข้อมูลของโปรแกรมอื่น และสามารถแบ่งปันข้อมูลให้โปรแกรมอื่นเข้าถึงได้
View System เป็นกลุ่มของชุดคำสั่งที่เกี่ยวกับการจัดการโครงสร้างของหน้าจอที่แสดงผลในส่วนที่ติดต่อกับผู้ใช้งาน (User Interface)
Telephony Manager เป็นกลุ่มของชุดคำสั่งที่ใช้ในการเข้าถึงข้อมูลด้านโทรศัพท์ เช่นหมายเลขโทรศัพท์ เป็นต้น
Resource Manager เป็นกลุ่มของชุดคำสั่งในการเข้าถึงข้อมูลที่เป็น ข้อความ, รูปภาพ
Location Manager เป็นกลุ่มของชุดคำสั่งที่เกี่ยวกับตำแหน่งทางภูมิศาตร์ ที่ระบบปฏิบัติการได้รับค่าจากอุปกรณ์
Notification Manager เป็นกลุ่มของชุดคำสั่งที่จะถูกเรียกใช้เมื่อโปรแกรม ต้องการแสดงผลให้กับผู้ใช้งาน ผ่านทางแถบสถานะ(Status Bar) ของหน้าจอ
Libraries เป็นส่วนของชุดคำสั่งที่พัฒนาด้วย C/C++ โดยแบ่งชุดคำสั่งออกเป็นกลุ่มตามวัตถุประสงค์ของการใช้งาน เช่น Surface Manage จัดการเกี่ยวกับการแสดงผล, Media Framework จัดการเกี่ยวกับการการแสดงภาพและเสียง, Open GL | ES และ SGL จัดการเกี่ยวกับภาพ 3มิติ และ 2มิติ, SQLlite จัดการเกี่ยวกับระบบฐานข้อมูล เป็นต้น
Android Runtime จะมี Darvik Virtual Machine ที่ถูกออกแบบมา เพื่อให้ทำงานบนอุปกรณ์ที่มี หน่วยความจำ(Memmory), หน่วยประมวลผลกลาง(CPU) และพลังงาน(Battery)ที่จำกัด ซึ่งการทำงานของ Darvik Virtual Machine จะทำการแปลงไฟล์ที่ต้องการทำงาน ไปเป็นไฟล์ .DEX ก่อนการทำงาน เหตุผลก็เพื่อให้มีประสิทธิภาพเพิ่มขึ้นเมื่อใช้งานกับ หน่วยประมวลผลกลางที่มีความเร็วไม่มาก ส่วนต่อมาคือ Core Libraries ที่เป็นส่วนรวบรวมคำสั่งและชุดคำสั่งสำคัญ โดยถูกเขียนด้วยภาษาจาวา (Java Language)
Linux Kernel เป็นส่วนที่ทำหน้าที่หัวใจสำคัญ ในจัดการกับบริการหลักของระบบปฏิบัติการ เช่น เรื่องหน่วยความจำ พลังงาน ติดต่อกับอุปกรณ์ต่างๆ ความปลอดภัย เครือข่าย โดยแอนดรอยด์ได้นำเอาส่วนนี้มาจากระบบปฏิบัติการลินุกซ์ รุ่น 2.6 (Linux 26. Kernel) ซึ่งได้มีการออกแบบมาเป็นอย่างดี
[[รูป 1-6 : Android Architecture]]
จากโครงสร้างของระบบปฏิบัติการแอนดรอยด์ จะสังเกตุได้ว่า มีการแบ่งออกมาเป็นส่วนๆ ที่มีความเกี่ยวเนื่องกัน โดยส่วนบนสุดจะเป็นส่วนที่ผู้ใช้งานทำการติดต่อโดยตรงซึ่งก็คือส่วนของ (Applications) จากนั้นก็จะลำดับลงมาเป็นองค์ประกอบอื่นๆตามลำดับ และสุดท้ายจะเป็นส่วนที่ติดต่อกับอุปกรณ์โดยผ่านทาง Linux Kernel โครงสร้างของแอนดรอยด์ พอที่จะอธิบายเป็นส่วนๆได้ดังนี้
Applications ส่วน Application หรือส่วนของโปรแกรมที่มีมากับระบบปฏิบัติการ หรือเป็นกลุ่มของโปรแกรมที่ผู้ใช้งานได้ทำการติดตั้งไว้ โดยผู้ใช้งานสามารถเรียกใช้โปรแกรมต่างๆได้โดยตรง ซึ่งการทำงานของแต่ละโปรแกรมจะเป็นไปตามที่ผู้พัฒนาโปรแกรมได้ออกแบบและเขียนโค้ดโปรแกรมเอาไว้
Application Frameworkเป็นส่วนที่มีการพัฒนาขึ้นเพื่อให้นักพัฒนาสามารถพัฒนาโปรแกรมได้สะดวก และมีประสิทธิภาพมากยิ่งขึ้น โดยนักพัฒนาไม่จำเป็นต้องพัฒนาในส่วนที่มีความยุ่งยากมากๆ เพียงแค่ทำการศึกษาถึงวิธีการเรียกใช้งาน Application Framework ในส่วนที่ต้องการใช้งาน แล้วนำมาใช้งาน ซึ่งมีหลายกลุ่มด้วยกัน ตัวอย่างเช่น
Activities Manager เป็นกลุ่มของชุดคำสั่งที่จัดการเกี่ยวกับวงจรการทำงานของหน้าต่างโปรแกรม(Activity)
Content Providers เป็นกลุ่มของชุดคำสั่ง ที่ใช้ในการเข้าถึงข้อมูลของโปรแกรมอื่น และสามารถแบ่งปันข้อมูลให้โปรแกรมอื่นเข้าถึงได้
View System เป็นกลุ่มของชุดคำสั่งที่เกี่ยวกับการจัดการโครงสร้างของหน้าจอที่แสดงผลในส่วนที่ติดต่อกับผู้ใช้งาน (User Interface)
Telephony Manager เป็นกลุ่มของชุดคำสั่งที่ใช้ในการเข้าถึงข้อมูลด้านโทรศัพท์ เช่นหมายเลขโทรศัพท์ เป็นต้น
Resource Manager เป็นกลุ่มของชุดคำสั่งในการเข้าถึงข้อมูลที่เป็น ข้อความ, รูปภาพ
Location Manager เป็นกลุ่มของชุดคำสั่งที่เกี่ยวกับตำแหน่งทางภูมิศาตร์ ที่ระบบปฏิบัติการได้รับค่าจากอุปกรณ์
Notification Manager เป็นกลุ่มของชุดคำสั่งที่จะถูกเรียกใช้เมื่อโปรแกรม ต้องการแสดงผลให้กับผู้ใช้งาน ผ่านทางแถบสถานะ(Status Bar) ของหน้าจอ
Libraries เป็นส่วนของชุดคำสั่งที่พัฒนาด้วย C/C++ โดยแบ่งชุดคำสั่งออกเป็นกลุ่มตามวัตถุประสงค์ของการใช้งาน เช่น Surface Manage จัดการเกี่ยวกับการแสดงผล, Media Framework จัดการเกี่ยวกับการการแสดงภาพและเสียง, Open GL | ES และ SGL จัดการเกี่ยวกับภาพ 3มิติ และ 2มิติ, SQLlite จัดการเกี่ยวกับระบบฐานข้อมูล เป็นต้น
Android Runtime จะมี Darvik Virtual Machine ที่ถูกออกแบบมา เพื่อให้ทำงานบนอุปกรณ์ที่มี หน่วยความจำ(Memmory), หน่วยประมวลผลกลาง(CPU) และพลังงาน(Battery)ที่จำกัด ซึ่งการทำงานของ Darvik Virtual Machine จะทำการแปลงไฟล์ที่ต้องการทำงาน ไปเป็นไฟล์ .DEX ก่อนการทำงาน เหตุผลก็เพื่อให้มีประสิทธิภาพเพิ่มขึ้นเมื่อใช้งานกับ หน่วยประมวลผลกลางที่มีความเร็วไม่มาก ส่วนต่อมาคือ Core Libraries ที่เป็นส่วนรวบรวมคำสั่งและชุดคำสั่งสำคัญ โดยถูกเขียนด้วยภาษาจาวา (Java Language)
Linux Kernel เป็นส่วนที่ทำหน้าที่หัวใจสำคัญ ในจัดการกับบริการหลักของระบบปฏิบัติการ เช่น เรื่องหน่วยความจำ พลังงาน ติดต่อกับอุปกรณ์ต่างๆ ความปลอดภัย เครือข่าย โดยแอนดรอยด์ได้นำเอาส่วนนี้มาจากระบบปฏิบัติการลินุกซ์ รุ่น 2.6 (Linux 26. Kernel) ซึ่งได้มีการออกแบบมาเป็นอย่างดี
ประวัติความเป็นมา android
เริ่มต้นระบบปฏิบัติการแอนดรอยด์ ถูกพัฒนามาจากบริษัท แอนดรอยด์ (Android Inc.) เมื่อปี พ.ศ 2546 โดยมีนาย แอนดี้ รูบิน (Andy Rubin) ผู้ให้กำเนิดระบบปฏิบัติการนี้ และถูกบริษัท กูเกิ้ล ซื้อกิจการเมื่อ เดือนสิงหาคม ปี พ.ศ 2548 โดยบริษัทแอนดรอยด์ ได้กลายเป็นมาบริษัทลูก ของบริษัทกูเกิ้ล และยังมีนาย แอนดี้ รูบิน ดำเนินงานอยู่ในทีมพัฒนาระบบปฏิบัติการต่อไป
ระบบปฏิบัติการแอนดรอยด์ เป็นระบบปฏิบัติการที่พัฒนามาจากการนำเอา แกนกลางของระบบปฏิบัติการลินุกซ์ (Linux Kernel) ซึ่งเป็นระบบปฏิบัติการที่ออกแบบมาเพื่อทำงานเป็นเครื่องให้บริการ (Server) มาพัฒนาต่อ เพื่อให้กลายเป็นระบบปฏิบัติการบนอุปกรณ์พกพา (Mobile Operating System)
ต่อมาเมื่อเดือน พฤศจิกายน ปี พ.ศ 2550 บริษัทกูเกิ้ล ได้ทำการก่อตั้งสมาคม OHA (Open Handset Alliance, http://www.openhandsetalliance.com) เพื่อเป็นหน่วยงานกลางในการกำหนดมาตรฐานกลาง ของอุปกรณ์พกพาและระบบปฏิบัติการแอนดรอยด์ โดยมีสมาชิกในช่วงก่อนตั้งจำนวน 34 รายเข้าร่วม ซึ่งประกอบไปด้วยบริษัทชั้นนำที่ดำเนินธุรกิจด้าการสื่อสาร เช่น โรงงานผลิตอุปกรณ์พกพา, บริษัทพัฒนาโปรแกรม, ผู้ให้บริการสื่อสาร และผู้ผลิตอะไหล่อุปกรณ์ด้านสื่อสาร
[[รูป 1-3 : สมาคม OHA (Open Handset Alliance)]]
หลังจากนั้น เมื่อเดือนตุลาคม ปี พ.ศ 2551 บริษัท กูเกิ้ล ได้เปิดตัวมือถือตัวแรกที่ใช้ระบบปฏิบัติการแอนดรอยด์ ที่ชื่อ T-Mobile G1 หรืออีกชื่อนึงคือ HTC Dream โดยใช้แอนดรอยด์รุ่น 1.1 และหลังจากนั้น ได้มีการปรับพัฒนาระบบปฏิบัติการเป็นรุ่นใหม่ มาเป็นลำดับ
[[รูป 1-4 : T-Mobile G1/HTC Dream]] [[01-04-01.bmp]]
ช่วงต่อมาได้มีการออกผลิตภัณฑ์จากบริษัทต่างๆ ออกมาหลากหลายรุ่น หลากหลายยี่ห้อ ตามการพัฒนาระบบปฏิบัติการแอนดรอยด์ ที่มีอยู่อย่างต่อเนื่อง ทำให้สินค้าของแอนดรอยด์ มีให้เลือกอยู่อย่างมากมาย
[[รูป 1-5 : Android Device]]
Samsung: Nexus S HTC: EVO 4G Motorola: Droid2
Motorola: XOOM HTC: Flyer
ระบบปฏิบัติการแอนดรอยด์ เป็นระบบปฏิบัติการที่พัฒนามาจากการนำเอา แกนกลางของระบบปฏิบัติการลินุกซ์ (Linux Kernel) ซึ่งเป็นระบบปฏิบัติการที่ออกแบบมาเพื่อทำงานเป็นเครื่องให้บริการ (Server) มาพัฒนาต่อ เพื่อให้กลายเป็นระบบปฏิบัติการบนอุปกรณ์พกพา (Mobile Operating System)
ต่อมาเมื่อเดือน พฤศจิกายน ปี พ.ศ 2550 บริษัทกูเกิ้ล ได้ทำการก่อตั้งสมาคม OHA (Open Handset Alliance, http://www.openhandsetalliance.com) เพื่อเป็นหน่วยงานกลางในการกำหนดมาตรฐานกลาง ของอุปกรณ์พกพาและระบบปฏิบัติการแอนดรอยด์ โดยมีสมาชิกในช่วงก่อนตั้งจำนวน 34 รายเข้าร่วม ซึ่งประกอบไปด้วยบริษัทชั้นนำที่ดำเนินธุรกิจด้าการสื่อสาร เช่น โรงงานผลิตอุปกรณ์พกพา, บริษัทพัฒนาโปรแกรม, ผู้ให้บริการสื่อสาร และผู้ผลิตอะไหล่อุปกรณ์ด้านสื่อสาร
[[รูป 1-3 : สมาคม OHA (Open Handset Alliance)]]
หลังจากนั้น เมื่อเดือนตุลาคม ปี พ.ศ 2551 บริษัท กูเกิ้ล ได้เปิดตัวมือถือตัวแรกที่ใช้ระบบปฏิบัติการแอนดรอยด์ ที่ชื่อ T-Mobile G1 หรืออีกชื่อนึงคือ HTC Dream โดยใช้แอนดรอยด์รุ่น 1.1 และหลังจากนั้น ได้มีการปรับพัฒนาระบบปฏิบัติการเป็นรุ่นใหม่ มาเป็นลำดับ
[[รูป 1-4 : T-Mobile G1/HTC Dream]] [[01-04-01.bmp]]
ช่วงต่อมาได้มีการออกผลิตภัณฑ์จากบริษัทต่างๆ ออกมาหลากหลายรุ่น หลากหลายยี่ห้อ ตามการพัฒนาระบบปฏิบัติการแอนดรอยด์ ที่มีอยู่อย่างต่อเนื่อง ทำให้สินค้าของแอนดรอยด์ มีให้เลือกอยู่อย่างมากมาย
[[รูป 1-5 : Android Device]]
Samsung: Nexus S HTC: EVO 4G Motorola: Droid2
Motorola: XOOM HTC: Flyer
วันพฤหัสบดีที่ 21 กรกฎาคม พ.ศ. 2554
การเขียน Flowchart เบื้องต้น
งานพัฒนาโปรแกรมในขั้นตอนที่ 2 คือการวางแผนแก้ปัญหา เครื่องมือที่ใช้จะมีให้เลือกอยู่สอง
ชนิดคือ Flowchart และ Pseudocode การเขียน flowchart จะมีข้อได้เปรียบ Pseudocode คือ
flowchart เขียนเป็นรูปภาพทำให้ง่ายต่อการเข้าใจมากกว่า Pseudocode ซึ่งเขียนเป็นตัวหนังสือ
การเขียน flowchart หรือ Pseudocode ก็คือการลำดับขั้นตอนการทำงานนั่นเอง
การเขียน Flowchart เบื้องต้นเราจะใช้สัญลักษณ์ดังต่อไปนี้คือ
จุดเริ่มต้น/สิ้นสุด (Terminator)
ข้อมูล นำเข้า/ส่งออก (Input / Output)
ประมวลผล (Process)
ตัดสินใจ (Decision)
ทิศทาง (Direction)
จุดต่อเชื่อม (Connector)
การเขียน Flowchart แบบโครงสร้าง
การเขียน Flowchart แบบโครงสร้างมีประโยชน์คือทำให้การไล่ขั้นตอนการทำงานทำได้ง่ายและ
เป็นระเบียบ ซึ่งมีหลักการเขียนอยู่ สามข้อ คือ
• Sequence
• Selection
• Iteration
อ.สุรัตน์ โคอินทรางกูร
ชนิดคือ Flowchart และ Pseudocode การเขียน flowchart จะมีข้อได้เปรียบ Pseudocode คือ
flowchart เขียนเป็นรูปภาพทำให้ง่ายต่อการเข้าใจมากกว่า Pseudocode ซึ่งเขียนเป็นตัวหนังสือ
การเขียน flowchart หรือ Pseudocode ก็คือการลำดับขั้นตอนการทำงานนั่นเอง
การเขียน Flowchart เบื้องต้นเราจะใช้สัญลักษณ์ดังต่อไปนี้คือ
จุดเริ่มต้น/สิ้นสุด (Terminator)
ข้อมูล นำเข้า/ส่งออก (Input / Output)
ประมวลผล (Process)
ตัดสินใจ (Decision)
ทิศทาง (Direction)
จุดต่อเชื่อม (Connector)
การเขียน Flowchart แบบโครงสร้าง
การเขียน Flowchart แบบโครงสร้างมีประโยชน์คือทำให้การไล่ขั้นตอนการทำงานทำได้ง่ายและ
เป็นระเบียบ ซึ่งมีหลักการเขียนอยู่ สามข้อ คือ
• Sequence
• Selection
• Iteration
อ.สุรัตน์ โคอินทรางกูร
วันพุธที่ 20 กรกฎาคม พ.ศ. 2554
ภาษา JAVA เบื้องต้น
(JAVA Script เบื้องต้น)
ภาษา JAVA เป็นภาษาโปรแกรมที่เพิ่งเกิดใหม่ ใช้แทรกในเอกสารภาษา HTML
เพื่อให้รับตัวแปรจากภายนอก ทำมีความสามารถหลากหลาย ทำให้ลักษณะการเขียนโปรแกรม
ก็ยากขึ้นเป็นเงาตามตัว อย่างไรก็ตามในที่นี้จะกล่าวถึงเฉพาะความรู้เบื้องต้น เพื่อใช้ประยุกต์ใน
งานการพัฒนาสื่อเพื่อการเรียนการสอนในบางประเด็น การเรียนรู้คำสั่งเพื่อสร้างข้อสอบผ่าน
เครือข่ายอินเทอร์เน็ต ซึ่งอาจทำให้ผู้ศึกษาสามารถพัฒนาในระดับก้าวหน้าต่อไปในอนาคตได้
รูปแบบของจาวาสคริปต์ที่ใช้งานร่วมกับ HTML
แบบที่ 1 แทรกภาษา JAVA ในส่วนของ Body ของภาษา HTML
……
……………………………………
แบบที่ 2 แทรกภาษา JAVA ในส่วนของ HEAD ของภาษา HTML
……
……………………………………
แบบที่ 3 แทรกภาษาทั้งในส่วนของ HEAD และส่วน BODY ของภาษา HTML
……
ภาษา JAVA เป็นภาษาโปรแกรมที่เพิ่งเกิดใหม่ ใช้แทรกในเอกสารภาษา HTML
เพื่อให้รับตัวแปรจากภายนอก ทำมีความสามารถหลากหลาย ทำให้ลักษณะการเขียนโปรแกรม
ก็ยากขึ้นเป็นเงาตามตัว อย่างไรก็ตามในที่นี้จะกล่าวถึงเฉพาะความรู้เบื้องต้น เพื่อใช้ประยุกต์ใน
งานการพัฒนาสื่อเพื่อการเรียนการสอนในบางประเด็น การเรียนรู้คำสั่งเพื่อสร้างข้อสอบผ่าน
เครือข่ายอินเทอร์เน็ต ซึ่งอาจทำให้ผู้ศึกษาสามารถพัฒนาในระดับก้าวหน้าต่อไปในอนาคตได้
รูปแบบของจาวาสคริปต์ที่ใช้งานร่วมกับ HTML
แบบที่ 1 แทรกภาษา JAVA ในส่วนของ Body ของภาษา HTML
……………………………………
แบบที่ 2 แทรกภาษา JAVA ในส่วนของ HEAD ของภาษา HTML
……………………………………
แบบที่ 3 แทรกภาษาทั้งในส่วนของ HEAD และส่วน BODY ของภาษา HTML
วันจันทร์ที่ 11 กรกฎาคม พ.ศ. 2554
ภาษาแอสแซมบลี้ (Assembly Language)
ประวัติภาษาแอสแซมบลี้
ภาษาแอสแซมบลี้ เป็นภาษาที่ใช้สัญลักษณ์ในการสื่อความหมาย ภาษาแอสแซมบลีมีลักษณะคำสั่งที่ขึ้นกับเครื่อง คอมพิวเตอร์ที่ใช้งานและมีการแปลคำสั่งให้เป็นภาษาเครื่อง นอกจากภาษาเครื่อง และภาษาแอสแซมบลีแล้ว ยังมีภาษาระดับสูง เช่น Basic Cobol FORTRANซึ่งเป็นภาษา ที่มีคำสั่งใกล้เคียงกับภาษาอังกฤษมาก ทำให้ผู้เขียนโปรแกรม สามารถเขียนโปรแกรมได้สะดวกและรวดเร็วแต่ว่า โปรแกรมที่เขียนด้วยภาษาระดับสูงต้องใช้เนื้อที่เก็บในหน่วยความจำเป็นจำนวนมากอีกทั้งทำงานได้ช้ากว่า ภาษาแอสแซมบลีดังนั้นภาษาระดับสูงจึงไม่นิยมนำมาประยุกต์ใช้กับการทำงาน ที่ระบบการควบคุม ที่มีความสำคัญมาก ภาษาแอสแซมบลี เหมาะกับโปรแกรมที่ใช้เนื้อที่ในหน่วยความจำไม่มากนัก ทั้งทำงานได้รวดเร็วและ ในการควบคุม การทำงานของเครื่องคอมพิวเตอร์ได้โดยตรง
คำสั่งปฏิบัติการของภาษาแอสแซมบลี แบ่งออกเป็น 4 ชนิด คือ
- Machine Instruction เป็นคำสั่งที่ทำให้เกิดการปฏิบัติการ (Execution) ชุดของคำสั่งอยู่ใน ; Assembler'instruction set
- Assembler instruction เป็นคำสั่งที่บอกแอสแซมเบอร์ให้ทำการระหว่างการแอสแซมบลี
- Macro instruction เป็นคำสั่งที่บอกแอสเซมเบอร์ให้ดำเนินการกับชุดของคำสั่งที่ได้บอก ไว้ก่อนแล้ว ซึ่งจากชุดของคำสั่ง แอสเซมเบลอร์จะผลิตชุดของคำสั่ง ซึ่งต่อไปจะดำเนินการ เหมือนหนึ่งว่าชุด ของคำสั่งนี้เป็นส่วนหนึ่งของ Source program แต่เริ่มแรก
- Pseudo instruction เป็นคำสั่งที่บอกให้แอสเซมเบลอร์รู้ว่า ควรปฏิบัติการ เช่นไรกับข้อมูล
การBranch อย่างมีข้อแม้ แมคโคร และ listing ซึ่งปกติแล้วคำสั่งเหล่านี้จะไม่ผลิตคำสั่งภาษาเครื่องให้
การพัฒนางานทางด้านไมโครคอนโทรลเลอร์ด้วยภาษา Assembly นั้น ถือว่ายังเป็นที่นิยมอยู่มากในบ้านเรา เรียกได้ว่าเป็นส่วนใหญ่เลย ในขณะที่ต่างประเทศนั้น ภาษา Assembly จะนิยมรองลงมาจากภาษา C ที่ใช้กันเป็นอันดับหนึ่ง อาจจะเป็นเพราะว่าความคุ้นเคย หรือเพราะความตรงไปตรงมาของภาษา Assembly ที่เป็นจุดเด่นอย่างหนึ่งก็ได้ ไม่ว่าจะอย่างไรก็ตาม การเข้าถึงภาษา Assembly ได้นั้น ถือว่าเป็นการเรียนรู้และเข้าใจได้ลึกซึ้งที่สุด และถ้ารู้จักนำมาประยุกต์ใช้งานให้เหมาะสมแล้ว ก็จะเป็นประโยชน์ต่อการพัฒนาเทคโนโลยีต่าง ๆ เป็นอย่างมาก สำหรับชิพ
ภาษาแอสแซมบลี้ เป็นภาษาที่ใช้สัญลักษณ์ในการสื่อความหมาย ภาษาแอสแซมบลีมีลักษณะคำสั่งที่ขึ้นกับเครื่อง คอมพิวเตอร์ที่ใช้งานและมีการแปลคำสั่งให้เป็นภาษาเครื่อง นอกจากภาษาเครื่อง และภาษาแอสแซมบลีแล้ว ยังมีภาษาระดับสูง เช่น Basic Cobol FORTRANซึ่งเป็นภาษา ที่มีคำสั่งใกล้เคียงกับภาษาอังกฤษมาก ทำให้ผู้เขียนโปรแกรม สามารถเขียนโปรแกรมได้สะดวกและรวดเร็วแต่ว่า โปรแกรมที่เขียนด้วยภาษาระดับสูงต้องใช้เนื้อที่เก็บในหน่วยความจำเป็นจำนวนมากอีกทั้งทำงานได้ช้ากว่า ภาษาแอสแซมบลีดังนั้นภาษาระดับสูงจึงไม่นิยมนำมาประยุกต์ใช้กับการทำงาน ที่ระบบการควบคุม ที่มีความสำคัญมาก ภาษาแอสแซมบลี เหมาะกับโปรแกรมที่ใช้เนื้อที่ในหน่วยความจำไม่มากนัก ทั้งทำงานได้รวดเร็วและ ในการควบคุม การทำงานของเครื่องคอมพิวเตอร์ได้โดยตรง
คำสั่งปฏิบัติการของภาษาแอสแซมบลี แบ่งออกเป็น 4 ชนิด คือ
- Machine Instruction เป็นคำสั่งที่ทำให้เกิดการปฏิบัติการ (Execution) ชุดของคำสั่งอยู่ใน ; Assembler'instruction set
- Assembler instruction เป็นคำสั่งที่บอกแอสแซมเบอร์ให้ทำการระหว่างการแอสแซมบลี
- Macro instruction เป็นคำสั่งที่บอกแอสเซมเบอร์ให้ดำเนินการกับชุดของคำสั่งที่ได้บอก ไว้ก่อนแล้ว ซึ่งจากชุดของคำสั่ง แอสเซมเบลอร์จะผลิตชุดของคำสั่ง ซึ่งต่อไปจะดำเนินการ เหมือนหนึ่งว่าชุด ของคำสั่งนี้เป็นส่วนหนึ่งของ Source program แต่เริ่มแรก
- Pseudo instruction เป็นคำสั่งที่บอกให้แอสเซมเบลอร์รู้ว่า ควรปฏิบัติการ เช่นไรกับข้อมูล
การBranch อย่างมีข้อแม้ แมคโคร และ listing ซึ่งปกติแล้วคำสั่งเหล่านี้จะไม่ผลิตคำสั่งภาษาเครื่องให้
การพัฒนางานทางด้านไมโครคอนโทรลเลอร์ด้วยภาษา Assembly นั้น ถือว่ายังเป็นที่นิยมอยู่มากในบ้านเรา เรียกได้ว่าเป็นส่วนใหญ่เลย ในขณะที่ต่างประเทศนั้น ภาษา Assembly จะนิยมรองลงมาจากภาษา C ที่ใช้กันเป็นอันดับหนึ่ง อาจจะเป็นเพราะว่าความคุ้นเคย หรือเพราะความตรงไปตรงมาของภาษา Assembly ที่เป็นจุดเด่นอย่างหนึ่งก็ได้ ไม่ว่าจะอย่างไรก็ตาม การเข้าถึงภาษา Assembly ได้นั้น ถือว่าเป็นการเรียนรู้และเข้าใจได้ลึกซึ้งที่สุด และถ้ารู้จักนำมาประยุกต์ใช้งานให้เหมาะสมแล้ว ก็จะเป็นประโยชน์ต่อการพัฒนาเทคโนโลยีต่าง ๆ เป็นอย่างมาก สำหรับชิพ
วันจันทร์ที่ 4 กรกฎาคม พ.ศ. 2554
เริ่มต้น AVR Microcontroller
ไมโครคอนโทรลเลอร์ AVR
ไมโครคอนโทรลเลอร์ AVR เป็นไอซีไมโครคอนโทรลเลอร์ของบริษัท Atmel มีสถาปัตยกรรมภายในเป็นแบบ RISC ( reduced instruction set computer) โดยใช้สัญญาณนาฬิกาเพียง 1 ลูกในการปฏิบัติงานใน 1 คำสั่ง โดยจะประกอบด้วยหน่วยความจำโปรแกรมภายในที่เป็นแบบแฟลช์ โปรแกรมข้อมูลได้แบบ In-System programmable และในบางเบอร์ยังสามารถมีการกำหนดตำแหน่งของหน่วยความจำที่สร้างเป็นบูตโหลดเดอร์ (เขียนโปรแกรมเพื่อติดต่อกับ PC หรือไอซีตัวอื่นๆ และยังสามารถโปรแกรมให้กับตัวเองได้) มีขนาดของหน่วยความจำตามเบอร์ของไอซีแต่ละตัว ยกตัวอย่างคุณสมบัติเบื้องต้นของไอซีเบอร์ Atmega8A ได้ดังต่อไปนี้
เป็นไอซีขนาด 8-bit ใช้พลังงานต่ำ
มีโครงสร้างภายในแบบ RISC
มีคำสั่งควบคุมการทำงานไมโครคอนโทรลเลอร์ 130 คำสั่ง คำสั่งส่วนมากจะทำสำเร็จในรอบสัญญาณ นาฬิกาเดี่ยว
มีจำนวนรีจิสเตอร์ทั่วไปขนาด 32 x 8
มีหน่วยความจำโปรแกรมภายในแบบ Flash ขนาด 8K Bytes มีการโปรแกรมได้แบบ In-System Self-programmable
มีหน่วยความจำภายในแบบ EEPROM ขนาด 512 Bytes
มีหน่วยความจำภายในแบบ SRAM ขนาด 1K Byte
เขียน /ลบ ได้ถึง 10,000 ครัง สำหรับหน่วยความจำแบบ Flash และ 100,000 สำหรับหน่วยความจำแบบ EEPROM
กำหนดการ Boot Code Section ในตำแหน่งต่างๆ และ Lock Bits ได้ (ทำ boot loadder)
Programming Lock for Software Security ป้องกันข้อมูล
Timer/Counters ขนาด 8-bit 2 ตัว และมี Separate Prescaler โหมด Compare อีก 1 ตัว
One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture
มี PWM 3 ช่อง
มีการติดต่อแบบ Master/Slave SPI Serial Interface
ใช้งาน RC Oscillator ภายในไอซี และภายนอกไอซีได้
ทำงานที่แรงดัน 2.7 - 5.5V for ATmega8A
ทำงานที่ความถี่ 0 - 16 MHz for ATmega8A
คุณสมบัติที่ยังเหลือเปิดอ่านจาก Datasheet ดูเพิ่มเติมได้ที่ Atmel
แหล่งที่มา www.en.wikipedia.org/wiki/Atmel_AVR
วันพฤหัสบดีที่ 30 มิถุนายน พ.ศ. 2554
การเขียนโปรแกรมด้วยภาษา C#
ในสภาพแวดล้อมของ MS Visual C# การพัฒนาแอพลิเคชันขึ้นมาหนึ่งชิ้นเรียกว่าการสร้างโซลูชัน
)solution) ซึ่งประกอบไปด้วยโปรเจ็กต์ (project) ตั้งแต่หนึ่งหรือมากกว่า โดยแต่ละโปรเจ็กต์เป็นชิ้นส่วน
ของซอฟต์แวร์ที่อาจเป็นส่วนของโปรแกรมหลัก หรือส่วนไลบรารี (library) ที่ถูกเรียกใช้โดยโปรเจ็กต์
อื่น ๆ
การใช้งานโปรแกรมภาษา C# มักจะมีการใช้งานตัวระบุ (identifier) อยู่ทั่วไปภายในโปรแกรม เช่น
ชื่อของเนมสเปซ คลาส ตัวแปร ค่าคงที่ โดยการตั้งชื่อตัวระบุจะต้องตั้งชื่อตามกฎเกณฑ์ที่กำหนดไว้
อย่างไรก็ตาม การตรวจสอบว่าโปรแกรมที่เขียนขึ้นทำงานได้ถูกต้องตามที่ต้องการจำเป็นต้องมีการ
แสดงผลลัพธ์ให้เห็นในรูปแบบใดรูปแบบหนึ่ง ในที่นี้เราอาศัยคำสั่งที่ใช้ในการพิมพ์ข้อความและค่าของ
นิพิจน์ต่าง ๆ ออกทางจอภาพ ได้แก่ คำสั่ง Write และ WriteLine ซึ่งถูกนิยามไว้ในคลาสชื่อ Console
และเนมสเปสชื่อ System สองคำสั่งนี้มีการใช้งานในลักษณะเดียวกัน แตกต่างกันที่คำสั่ง WriteLine จะ
พิมพ์ข้อความตามด้วยการขึ้นบรรทัดใหม่
ภาษา C# เป็นภาษาโปรแกรมเชิงวัตถุ (object-oriented programming language) ที่ถูกพัฒนาขึ้นมา
โดยบริษัทไมโครซอฟต์ การพัฒนาโปรแกรมคอมพิวเตอร์ด้วยภาษา C# นั้นจะประกอบด้วยขั้นตอนดังนี้
• วิเคราะห์ปัญหาและความต้องการในการพัฒนาโปรแกรม เช่น โปรแกรมจะติดต่อกับผู้ใช้อย่างไร
ข้อมูลที่ผู้ใช้จะป้อนให้กับโปรแกรมเป็นอย่างไร และผลลัพธ์จะถูกแสดงผลอย่างไร
• ออกแบบขั้นตอนวิธี โดยแสดงการทำงานของโปรแกรมในภาพรวมออกมาเป็นลำดับขั้นตอน แต่
ละขั้นตอนมีความชัดเจนและสามารถเปลี่ยนให้อยู่ในรูปคำสั่งภาษา C# ได้โดยง่าย
• นำขั้นตอนวิธีที่ออกแบบไว้มาสร้างเป็นไฟล์โปรแกรมรหัสต้นฉบับ (source code) ที่ถูกต้อง
ตามโครงสร้างและไวยกรณ์ของตัวภาษา C# ทั้งนี้ไฟล์รหัสต้นฉบับต้องมีนามสกุล .cs เสมอ
เช่น prog1.cs
• แปลงรหัสต้นฉบับให้อยู่ในรูปรหัสภาษาเครื่องที่คอมพิวเตอร์เข้าใจและทำงานตามคำสั่งได้
ขั้นตอนนี้ต้องใช้โปรแกรมที่เรียกว่า คอมไพเลอร์ (compiler) ไฟล์รหัสภาษาเครื่องที่ถูกสร้างขึ้น
จากคอมไพเลอร์จะมีนามสกุล .exe ซึ่งย่อมาจาก executable หมายถึงไฟล์ที่ถูกเรียกทำงานได้
• ทดสอบการทำงานของโปรแกรม หากพบข้อผิดพลาดให้ตรวจสอบความถูกต้องในขั้นตอนที่ผ่าน
มา ซึ่งอาจหมายถึงการแก้ไขโปรแกรม ขั้นตอนวิธี หรือแม้กระทั่งวิเคราะห์ปัญหาและความต้องการ
ใหม่
ขั้นตอนการพัฒนาโปรแกรมดังกล่าวนี้นอกจากจะสามารถจะใช้กับภาษา C# แล้วยังสามารถนำไป
ประยุกต์ใช้กับภาษาอื่น ๆ ได้ด้วย
)solution) ซึ่งประกอบไปด้วยโปรเจ็กต์ (project) ตั้งแต่หนึ่งหรือมากกว่า โดยแต่ละโปรเจ็กต์เป็นชิ้นส่วน
ของซอฟต์แวร์ที่อาจเป็นส่วนของโปรแกรมหลัก หรือส่วนไลบรารี (library) ที่ถูกเรียกใช้โดยโปรเจ็กต์
อื่น ๆ
การใช้งานโปรแกรมภาษา C# มักจะมีการใช้งานตัวระบุ (identifier) อยู่ทั่วไปภายในโปรแกรม เช่น
ชื่อของเนมสเปซ คลาส ตัวแปร ค่าคงที่ โดยการตั้งชื่อตัวระบุจะต้องตั้งชื่อตามกฎเกณฑ์ที่กำหนดไว้
อย่างไรก็ตาม การตรวจสอบว่าโปรแกรมที่เขียนขึ้นทำงานได้ถูกต้องตามที่ต้องการจำเป็นต้องมีการ
แสดงผลลัพธ์ให้เห็นในรูปแบบใดรูปแบบหนึ่ง ในที่นี้เราอาศัยคำสั่งที่ใช้ในการพิมพ์ข้อความและค่าของ
นิพิจน์ต่าง ๆ ออกทางจอภาพ ได้แก่ คำสั่ง Write และ WriteLine ซึ่งถูกนิยามไว้ในคลาสชื่อ Console
และเนมสเปสชื่อ System สองคำสั่งนี้มีการใช้งานในลักษณะเดียวกัน แตกต่างกันที่คำสั่ง WriteLine จะ
พิมพ์ข้อความตามด้วยการขึ้นบรรทัดใหม่
ภาษา C# เป็นภาษาโปรแกรมเชิงวัตถุ (object-oriented programming language) ที่ถูกพัฒนาขึ้นมา
โดยบริษัทไมโครซอฟต์ การพัฒนาโปรแกรมคอมพิวเตอร์ด้วยภาษา C# นั้นจะประกอบด้วยขั้นตอนดังนี้
• วิเคราะห์ปัญหาและความต้องการในการพัฒนาโปรแกรม เช่น โปรแกรมจะติดต่อกับผู้ใช้อย่างไร
ข้อมูลที่ผู้ใช้จะป้อนให้กับโปรแกรมเป็นอย่างไร และผลลัพธ์จะถูกแสดงผลอย่างไร
• ออกแบบขั้นตอนวิธี โดยแสดงการทำงานของโปรแกรมในภาพรวมออกมาเป็นลำดับขั้นตอน แต่
ละขั้นตอนมีความชัดเจนและสามารถเปลี่ยนให้อยู่ในรูปคำสั่งภาษา C# ได้โดยง่าย
• นำขั้นตอนวิธีที่ออกแบบไว้มาสร้างเป็นไฟล์โปรแกรมรหัสต้นฉบับ (source code) ที่ถูกต้อง
ตามโครงสร้างและไวยกรณ์ของตัวภาษา C# ทั้งนี้ไฟล์รหัสต้นฉบับต้องมีนามสกุล .cs เสมอ
เช่น prog1.cs
• แปลงรหัสต้นฉบับให้อยู่ในรูปรหัสภาษาเครื่องที่คอมพิวเตอร์เข้าใจและทำงานตามคำสั่งได้
ขั้นตอนนี้ต้องใช้โปรแกรมที่เรียกว่า คอมไพเลอร์ (compiler) ไฟล์รหัสภาษาเครื่องที่ถูกสร้างขึ้น
จากคอมไพเลอร์จะมีนามสกุล .exe ซึ่งย่อมาจาก executable หมายถึงไฟล์ที่ถูกเรียกทำงานได้
• ทดสอบการทำงานของโปรแกรม หากพบข้อผิดพลาดให้ตรวจสอบความถูกต้องในขั้นตอนที่ผ่าน
มา ซึ่งอาจหมายถึงการแก้ไขโปรแกรม ขั้นตอนวิธี หรือแม้กระทั่งวิเคราะห์ปัญหาและความต้องการ
ใหม่
ขั้นตอนการพัฒนาโปรแกรมดังกล่าวนี้นอกจากจะสามารถจะใช้กับภาษา C# แล้วยังสามารถนำไป
ประยุกต์ใช้กับภาษาอื่น ๆ ได้ด้วย
วันจันทร์ที่ 27 มิถุนายน พ.ศ. 2554
ภาษาปาสคาล Pascal
คงเคยได้ยินคำว่าภาษาคอมพิวเตอร์มาบ้างแล้ว ในที่นี้จะได้กล่าวถึงความหมายของคำว่า “ภาษาคอมพิวเตอร์” ให้ชัดเจนอีกครั้ง ภาษาคอมพิวเตอร์ หมายถึง สื่อที่ผู้เขียนโปรแกรมสามารถใช้ติดต่อกับเครื่องคอมพิวเตอร์ เพื่อให้เกิดการทำงานตามวัตถุประสงค์ที่ต้องการ ตามความหมายของการเขียนโปรแกรมที่ศึกษาในหัวข้อที่แล้ว ภาษาคอมพิวเตอร์คือสื่อที่ใช้สร้างโปรแกรม ซึ่งหมายถึง ชุดคำสั่งที่ใช้สำหรับสั่งให้คอมพิวเตอร์ทำงานเพื่อให้ได้ผลลัพธ์ที่ต้องการ โดยอาศัยข้อมูลที่กำหนดให้ ซึ่งในที่นี้ผลลัพธ์ก็เปรียบได้กับคำตอบหรือข้อมูลออกของปัญหา ในขณะที่ข้อมูลที่กำหนดก็คือเงื่อนไขหรือข้อมูลของปัญหาซึ่งผู้แก้ปัญหาได้วิเคราะห์ไว้
ภาษาคอมพิวเตอร์แบ่งเป็นระดับต่ำและภาษาระดับสูง การเขียนโปรแกรมด้วยภาษาระดับต่ำนั้นต้องอาศัยความรู้เกี่ยวกับฮาร์ดแวร์และระบบเลขฐานสอง ซึ่งเป็นเรื่องที่ทำความเข้าใจได้ยาก ถึงแม้จะมีการกำหนดรหัสหรือสัญลักษณ์ที่ทำให้เข้าใจหรือจำได้ง่ายขึ้น แต่ก็ยังคงมีความยุ่งยากในการจดจำ จึงได้มีความพยายามออกแบบภาษาระดับสูงสำหรับคอมพิวเตอร์ ซึ่งผู้ใช้สามารถจดจำได้ง่ายและเขียนโปรแกรมได้สะดวก เนื่องจากในการใช้งานภาษาระดับสูงผู้เรียนไม่จำเป็นต้องเรียนรู้การทำงานภายในหน่วยประมวลผลกลางของเครื่องและไม่จำเป็นต้องรู้เรื่องระบบเลขฐานสอง ภาษาปาสคาลเป็นภาษาระดับสูงภาษาหนึ่งที่ใช้หลักการของการโปรแกรมแบบโครงสร้างในการเขียนโปรแกรม และเป็นภาษาที่เป็นระบบ ซึ่งง่ายต่อการตรวจสอบความผิดพลาดและความเข้าใจการทำงาน จึงเหมาะแก่การเรียนรู้วิธีการเขียนโปรแกรมในระดับเริ่มต้น
ภาษาปาสคาลจัดเป็นภาษาในกลุ่มโปรแกรมแบบโครงสร้าง (Structured Programming) ซึ่งมุ่งเน้นให้มีการแบ่งโปรแกรมออกเป็นส่วนย่อย ๆ ชัดเจน จากนั้นจึงค่อยเชื่อมโยง ทำให้สามารถจัดการได้โดยง่าย ภาษาปาสคาลจึงเป็นภาษาคอมพิวเตอร์ที่เหมาะสำหรับสร้างพื้นฐานความคิดในการเขียนโปรแกรมโครงสร้างให้แก่นักเรียน เพื่อให้เป็นผู้พัฒนาโปรแกรมที่มีทักษะในการเขียนโปรแกรมอย่างมีหลักเกณฑ์และถูกต้อง สามารถอ่านและทำความเข้าใจได้โดยง่าย อีกทั้งภาษาปาสคาลเป็นภาษาที่มีโครงสร้างโปรแกรมชัดเจน ซึ่งง่ายต่อการเรียนรู้
ภาษาคอมพิวเตอร์แบ่งเป็นระดับต่ำและภาษาระดับสูง การเขียนโปรแกรมด้วยภาษาระดับต่ำนั้นต้องอาศัยความรู้เกี่ยวกับฮาร์ดแวร์และระบบเลขฐานสอง ซึ่งเป็นเรื่องที่ทำความเข้าใจได้ยาก ถึงแม้จะมีการกำหนดรหัสหรือสัญลักษณ์ที่ทำให้เข้าใจหรือจำได้ง่ายขึ้น แต่ก็ยังคงมีความยุ่งยากในการจดจำ จึงได้มีความพยายามออกแบบภาษาระดับสูงสำหรับคอมพิวเตอร์ ซึ่งผู้ใช้สามารถจดจำได้ง่ายและเขียนโปรแกรมได้สะดวก เนื่องจากในการใช้งานภาษาระดับสูงผู้เรียนไม่จำเป็นต้องเรียนรู้การทำงานภายในหน่วยประมวลผลกลางของเครื่องและไม่จำเป็นต้องรู้เรื่องระบบเลขฐานสอง ภาษาปาสคาลเป็นภาษาระดับสูงภาษาหนึ่งที่ใช้หลักการของการโปรแกรมแบบโครงสร้างในการเขียนโปรแกรม และเป็นภาษาที่เป็นระบบ ซึ่งง่ายต่อการตรวจสอบความผิดพลาดและความเข้าใจการทำงาน จึงเหมาะแก่การเรียนรู้วิธีการเขียนโปรแกรมในระดับเริ่มต้น
ภาษาปาสคาลจัดเป็นภาษาในกลุ่มโปรแกรมแบบโครงสร้าง (Structured Programming) ซึ่งมุ่งเน้นให้มีการแบ่งโปรแกรมออกเป็นส่วนย่อย ๆ ชัดเจน จากนั้นจึงค่อยเชื่อมโยง ทำให้สามารถจัดการได้โดยง่าย ภาษาปาสคาลจึงเป็นภาษาคอมพิวเตอร์ที่เหมาะสำหรับสร้างพื้นฐานความคิดในการเขียนโปรแกรมโครงสร้างให้แก่นักเรียน เพื่อให้เป็นผู้พัฒนาโปรแกรมที่มีทักษะในการเขียนโปรแกรมอย่างมีหลักเกณฑ์และถูกต้อง สามารถอ่านและทำความเข้าใจได้โดยง่าย อีกทั้งภาษาปาสคาลเป็นภาษาที่มีโครงสร้างโปรแกรมชัดเจน ซึ่งง่ายต่อการเรียนรู้
วันพฤหัสบดีที่ 23 มิถุนายน พ.ศ. 2554
พื้นฐานโปรแกรมภาษา C (Introduction to C Programming)
ก่อนอื่นของแนะนำพื้นฐานเกี่ยวกับคอมพิวเตอร์กันซักนิด ก่อนที่จะเริ่มเรียนรู้ภาษา C กัน หน่วยสำคัญที่สุดของคอมพิวเตอร์ก็คือ หน่วยประมวลผลหรือที่เรียกกันว่า CPU โดยปกติ CPU จะมีภาษาของตัวเองที่เรียกว่า ภาษาเครื่อง (Machine Language) ซึ่งจะเป็นภาษาที่ประกอบไปด้วยเลขฐานสองมากมาย ดังนั้นการที่จะเขียนโปรแกรมควบคุมการทำงานของคอมพิวเตอร์ โดยใช้ภาษาเครื่องโดยตรงนั้นจึงทำได้ยาก จึงได้มีการพัฒนาตัวแปรภาษาเครื่องที่เรียกว่า โปรแกรมภาษาระดับสูงขึ้นมา หรือที่เรียกว่า High Level Languages โดยภาษาในระดับสูงเหล่านี้ จะมีลักษณะรูปแบบการเขียน (Syntax) ที่ทำให้เข้าใจได้ง่ายต่อการสื่อสารกับผู้พัฒนา และถูกออกแบบมาให้ง่ายต่อการใช้งาน และจะเปลี่ยนคำสั่งจากผู้ใช้งาน ไปเป็นเป็นภาษาเครื่อง เพื่อที่จะควบคุมการทำงานของคอมพิวเตอร์ต่อไป ตัวอย่างของโปรแกรมภาษาระดับสูง ได้แก่ COBOL ใช้กันมากสำหรับโปรแกรมทางด้านธุรกิจ, Fortran ใช้กันมากสำหรับการพัฒนาโปรแกรมด้านวิทยาศาสตร์และวิศวกรรมศาสตร์ เพราะง่ายต่อการคำนวณ, Pascal มีใช้กันทั่วไป แต่เน้นสำหรับการพัฒนาเครื่องมือสำหรับการเรียนการสอน, C & C++ ใช้ทั่วไป ปัจจุบันมีผู้เลือกที่จะใช้กันอย่างแพร่หลาย, PROLOG เน้นหนักไปทางด้านงานประเภท AI และ JAVA ใช้ได้ทั่วไป ปัจจุบันเริ่มมีผู้หันมาสนใจกันมากและเพิ่มขึ้นอย่างรวดเร็ว
คราวนี้เราลองมาเตรียมตัวกันซักนิก ก่อนที่จะลงมือพัฒนาโปรแกรมคอมพิวเตอร์ ขั้นแรก เราต้องศึกษารูปแบบความต้องการของโปรแกรมที่จะพัฒนา จากนั้นก็วิเคราะห์ถึงปัญหาตลอดจนวิธีการแก้ปัญหา จากนั้นจึงนำเอาความคิดในการแก้ปัญหาอย่างเป็นขั้นตอน ไปเขียนในรูปแบบของโปรแกรมภาษาในระดับสูง ซึ่งจะอยู่ในรูปแบบของ Source Program หรือ Source Code จากนั้นเราก็จะใช้ Complier ของภาษาที่เราเลือก มาทำการ Compile Source code หรือกล่าวง่ายๆ คือแปลง Source code ของเราให้เป็นภาษาเครื่องนั่นเอง ซึ่งในขั้นตอนนี้ ผลที่ได้ เราจะเรียกว่า Object code จากนั้น Complier ก็จะทำการ Link หรือเชื่อม Object code เข้ากับฟังก์ชันการทำงานใน Libraries ต่างๆ ที่จำเป็นต่อการใช้งาน แล้วนำไปไว้ในหน่วยความจำ แล้วเราก็จะสามารถ Run เพื่อดูผลของการทำงานโปรแกรมได้ หากโปรแกรมมีข้อผิดพลาด เราก็จะทำการแก้ หรือที่เรียกกันในภาษาคอมพิวเตอร์ว่า การ Debug นั่นเอง
ภาษา C เป็นโปรแกรมภาษาระดับสูง ถูกพัฒนาขึ้นในปี 1972 ที่ AT&T Bell Lab เราสามารถใช้ภาษา C มาเขียนเป็นคำสั่งต่างๆ ที่คอมพิวเตอร์สามารถเข้าใจได้ และกลุ่มของคำสั่งเหล่านี้ เราก็เรียกกันว่า อัลกอริธึม ได้มีผู้ให้คำจำกัดความของคำว่า อัลกอริธึม ว่าเป็น “A precise description of a step-by-step process that is guaranteed to terminate after a finite number of steps with a correct answer for every particular instance of an algorithmic problem that may occur.” สำหรับ Compiler ภาษา C ที่มีในปัจจุบัน มี 2 ค่ายใหญ่ๆ ที่มีผู้คนสนใจใช้กันมากได้แก่ Microsoft และ Borland การใช้งาน Compiler ทั้งสองตัวนี้ สามารถเรียนรู้ได้ไม่ยากนัก เราจึงจะมาเริ่มต้นที่การเขียนโปรแกรมในภาษา C กันเลย เราลองมาเริ่มจากตัวอย่างการเขียน ภาษา C แบบ ง่ายๆ กันก่อนกับโปรแกรม Hello World
#include
main()
{
printf("Hello World !! ");
}
บรรทัดแรก #include เป็นการบอกว่าให้ทำการรวม Header file ที่ชื่อว่า stdio.h (.h = header) ซึ่งเป็น header ที่เกี่ยวข้องกับการรับและให้ข้อมูล (Standard Input Output) นอกจาก stdio.h แล้ว ก็ยังมี Header อื่นๆ ที่ผู้พัฒนาสามารถที่จะเรียกใช้งาน Function ที่จำเป็นจาก Header นั้นๆ ได้ อาทิเช่น
รู้จัก Header File กันไปล่ะ คราวนี้ เราลองมาดูบรรทัดถัดไปกัน ก็คือ ฟังก์ชัน main() จะเป็นจุดเริ่มต้นของโปรแกรม และโปรแกรมทุกโปรแกรมในภาษา C จะต้องมี Function main() นี้ โดยส่วนมาก เราจะใช้ Function main() ในการกำหนดค่าเริ่มต้นต่างๆ ของโปรแกรม จากนั้นจึงเข้าสู่ Function ต่างๆ ที่ผู้พัฒนา ได้กำหนดขึ้นไว้
บรรทัดถัดมาจะเป็นเครื่องหมาย { ซึ่งเป็นเครื่องหมายบ่งบอกขอบเขตของ Function โดยขอบเขตของฟังก์ชัน จะเปิดและปิดโดยใช้เครื่องหมายเปิด { และเครื่องหมายปิด } ตามลำดับ ภายใน Function main() จะมีคำสั่ง (Statement) printf("Hello World !! "); ซึ่ง printf เป็น Function ในภาษา C ทำหน้าที่ให้โปรแกรม ทำการแสดงผลออกทางหน้าจอว่า Hello World !! และทุกครั้ง ผู้พัฒนาจะต้องทำการจบคำสั่งหรือ Statement ด้วยเครื่องหมาย semi-colon ;
ดังนั้นรูปแบบของการเขียนโปรแกรม จึงเขียนออกมาในรูปแบบดังนี้
// ข้อความที่อยู่ข้างหลังเครื่องหมาย // จะเป็นคำอธิบายโปรแกรม
#include
void main()
{
constant declarations; // การกำหนดค่าคงที่ต่างๆ
variable declarations; // การกำหนดตัวแปรต่างๆ
executable statements; // คำสั่งการทำงานของโปรแกรม
}
การอ่านข้อมูลและการแสดงผล (Input & Output)
รูปแบบการใช้งานฟังก์ชัน printf จะทำการพิมพ์ในรูปแบบที่ เริ่มต้นด้วย Format ที่ต้องการจะพิมพ์ และตามด้วยตัวแปรที่ต้องการพิมพ์ ดังนี้
printf( const char *format [, argument]... );
สำหรับการนำข้อมูลเข้าก็เช่นกัน จะใช้ฟังก์ชัน scanf ซึ่งจะเป็นฟังก์ชันสำหรับอ่านข้อมูลจากคีย์บอร์ด และจะนำข้อมูลที่ User ทำการพิมพ์ไปเก็บไว้ใน argument โดยแต่ละ argument จะต้องเป็นตัวแปรที่เรียกว่า pointer (รายละเอียดจะได้กล่าวต่อไป) และมีชนิดที่ตัวแปรที่สัมพันธ์กับที่ได้กำหนดไว้ใน Format รูปแบบการใช้งานของฟังก์ชัน scanf สามารถเขียนได้ดังนี้
scanf( const char *format [,argument]... );
บทความจาก ดร. จันทร์จิรา สินทนะโยธิน, วิศรุต พลสิทธิ
สำนักงานพัฒนาวิทยาศาสตร์และเทคโนโลยีแห่งชาติ (สวทช)
คราวนี้เราลองมาเตรียมตัวกันซักนิก ก่อนที่จะลงมือพัฒนาโปรแกรมคอมพิวเตอร์ ขั้นแรก เราต้องศึกษารูปแบบความต้องการของโปรแกรมที่จะพัฒนา จากนั้นก็วิเคราะห์ถึงปัญหาตลอดจนวิธีการแก้ปัญหา จากนั้นจึงนำเอาความคิดในการแก้ปัญหาอย่างเป็นขั้นตอน ไปเขียนในรูปแบบของโปรแกรมภาษาในระดับสูง ซึ่งจะอยู่ในรูปแบบของ Source Program หรือ Source Code จากนั้นเราก็จะใช้ Complier ของภาษาที่เราเลือก มาทำการ Compile Source code หรือกล่าวง่ายๆ คือแปลง Source code ของเราให้เป็นภาษาเครื่องนั่นเอง ซึ่งในขั้นตอนนี้ ผลที่ได้ เราจะเรียกว่า Object code จากนั้น Complier ก็จะทำการ Link หรือเชื่อม Object code เข้ากับฟังก์ชันการทำงานใน Libraries ต่างๆ ที่จำเป็นต่อการใช้งาน แล้วนำไปไว้ในหน่วยความจำ แล้วเราก็จะสามารถ Run เพื่อดูผลของการทำงานโปรแกรมได้ หากโปรแกรมมีข้อผิดพลาด เราก็จะทำการแก้ หรือที่เรียกกันในภาษาคอมพิวเตอร์ว่า การ Debug นั่นเอง
ภาษา C เป็นโปรแกรมภาษาระดับสูง ถูกพัฒนาขึ้นในปี 1972 ที่ AT&T Bell Lab เราสามารถใช้ภาษา C มาเขียนเป็นคำสั่งต่างๆ ที่คอมพิวเตอร์สามารถเข้าใจได้ และกลุ่มของคำสั่งเหล่านี้ เราก็เรียกกันว่า อัลกอริธึม ได้มีผู้ให้คำจำกัดความของคำว่า อัลกอริธึม ว่าเป็น “A precise description of a step-by-step process that is guaranteed to terminate after a finite number of steps with a correct answer for every particular instance of an algorithmic problem that may occur.” สำหรับ Compiler ภาษา C ที่มีในปัจจุบัน มี 2 ค่ายใหญ่ๆ ที่มีผู้คนสนใจใช้กันมากได้แก่ Microsoft และ Borland การใช้งาน Compiler ทั้งสองตัวนี้ สามารถเรียนรู้ได้ไม่ยากนัก เราจึงจะมาเริ่มต้นที่การเขียนโปรแกรมในภาษา C กันเลย เราลองมาเริ่มจากตัวอย่างการเขียน ภาษา C แบบ ง่ายๆ กันก่อนกับโปรแกรม Hello World
#include
main()
{
printf("Hello World !! ");
}
บรรทัดแรก #include เป็นการบอกว่าให้ทำการรวม Header file ที่ชื่อว่า stdio.h (.h = header) ซึ่งเป็น header ที่เกี่ยวข้องกับการรับและให้ข้อมูล (Standard Input Output) นอกจาก stdio.h แล้ว ก็ยังมี Header อื่นๆ ที่ผู้พัฒนาสามารถที่จะเรียกใช้งาน Function ที่จำเป็นจาก Header นั้นๆ ได้ อาทิเช่น
รู้จัก Header File กันไปล่ะ คราวนี้ เราลองมาดูบรรทัดถัดไปกัน ก็คือ ฟังก์ชัน main() จะเป็นจุดเริ่มต้นของโปรแกรม และโปรแกรมทุกโปรแกรมในภาษา C จะต้องมี Function main() นี้ โดยส่วนมาก เราจะใช้ Function main() ในการกำหนดค่าเริ่มต้นต่างๆ ของโปรแกรม จากนั้นจึงเข้าสู่ Function ต่างๆ ที่ผู้พัฒนา ได้กำหนดขึ้นไว้
บรรทัดถัดมาจะเป็นเครื่องหมาย { ซึ่งเป็นเครื่องหมายบ่งบอกขอบเขตของ Function โดยขอบเขตของฟังก์ชัน จะเปิดและปิดโดยใช้เครื่องหมายเปิด { และเครื่องหมายปิด } ตามลำดับ ภายใน Function main() จะมีคำสั่ง (Statement) printf("Hello World !! "); ซึ่ง printf เป็น Function ในภาษา C ทำหน้าที่ให้โปรแกรม ทำการแสดงผลออกทางหน้าจอว่า Hello World !! และทุกครั้ง ผู้พัฒนาจะต้องทำการจบคำสั่งหรือ Statement ด้วยเครื่องหมาย semi-colon ;
ดังนั้นรูปแบบของการเขียนโปรแกรม จึงเขียนออกมาในรูปแบบดังนี้
// ข้อความที่อยู่ข้างหลังเครื่องหมาย // จะเป็นคำอธิบายโปรแกรม
#include
void main()
{
constant declarations; // การกำหนดค่าคงที่ต่างๆ
variable declarations; // การกำหนดตัวแปรต่างๆ
executable statements; // คำสั่งการทำงานของโปรแกรม
}
การอ่านข้อมูลและการแสดงผล (Input & Output)
รูปแบบการใช้งานฟังก์ชัน printf จะทำการพิมพ์ในรูปแบบที่ เริ่มต้นด้วย Format ที่ต้องการจะพิมพ์ และตามด้วยตัวแปรที่ต้องการพิมพ์ ดังนี้
printf( const char *format [, argument]... );
สำหรับการนำข้อมูลเข้าก็เช่นกัน จะใช้ฟังก์ชัน scanf ซึ่งจะเป็นฟังก์ชันสำหรับอ่านข้อมูลจากคีย์บอร์ด และจะนำข้อมูลที่ User ทำการพิมพ์ไปเก็บไว้ใน argument โดยแต่ละ argument จะต้องเป็นตัวแปรที่เรียกว่า pointer (รายละเอียดจะได้กล่าวต่อไป) และมีชนิดที่ตัวแปรที่สัมพันธ์กับที่ได้กำหนดไว้ใน Format รูปแบบการใช้งานของฟังก์ชัน scanf สามารถเขียนได้ดังนี้
scanf( const char *format [,argument]... );
บทความจาก ดร. จันทร์จิรา สินทนะโยธิน, วิศรุต พลสิทธิ
สำนักงานพัฒนาวิทยาศาสตร์และเทคโนโลยีแห่งชาติ (สวทช)
วันจันทร์ที่ 20 มิถุนายน พ.ศ. 2554
ไมโครคอนโทรลเลอร์
ไมโครคอนโทรลเลอร์
คือ อุปกรณ์ควบคุมขนาดเล็ก ซึ่งบรรจุความสามารถที่คล้ายคลึงกับระบบคอมพิวเตอร์ โดยในไมโครคอนโทรลเลอร์ได้รวมเอาซีพียู, หน่วยความจำ และพอร์ต ซึ่งเป็นส่วนประกอบหลักสำคัญของระบบคอมพิวเตอร์เข้าไว้ด้วยกัน โดยทำการบรรจุเข้าไว้ในตัวถังเดียวกัน
โครงสร้างทั่วไป
โครงสร้างโดยทั่วไป ของไมโครคอนโทรลเลอร์นั้น สามารถแบ่งออกมาได้เป็น 5 ส่วนใหญ่ๆ ดังต่อไปนี้
1.หน่วยประมวลผลกลางหรือซีพียู (CPU : Central Processing Unit)
2.หน่วยความจำ (Memory) สามารถแบ่งออกเป็น 2 ส่วน คือ หน่วยความจำที่มีไว้สำหรับเก็บโปรแกรมหลัก (Program Memory) เปรียบเสมือนฮาร์ดดิสก์ของเครื่องคอมพิวเตอร์ตั้งโต๊ะ คือข้อมูลใดๆ ที่ถูกเก็บไว้ในนี้จะไม่สูญหายไปแม้ไม่มีไฟเลี้ยง อีกส่วนหนึ่งคือหน่วยความจำข้อมูล (Data Memory) ใช้เป็นเหมือนกกระดาษทดในการคำนวณของซีพียู และเป็นที่พักข้อมูลชั่วคราวขณะทำงาน แต่หากไม่มีไฟเลี้ยง ข้อมูลก็จะหายไปคล้ายกับหน่วยความแรม (RAM) ในเครื่องคอมพิวเตอร์ทั่วๆ ไป แต่สำหรับไมโครคอนโทรลเลอร์สมัยใหม่ หน่วยความจำข้อมูลจะมีทั้งที่เป็นหน่วยความจำแรม ซึ่งข้อมูลจะหายไปเมื่อไม่มีไฟเลี้ยง และเป็นอีอีพรอม (EEPROM : Erasable Electrically Read-Only Mempry) ซึ่งสามารถเก็บข้อมูลได้แม้ไม่มีไฟเลี้ยง
3.ส่วนติดต่อกับอุปกรณ์ภายนอก หรือพอร์ต (Port) มี 2 ลักษณะคือ พอร์ตอินพุต (Input Port) และพอร์ตส่งสัญญาณหรือพอร์ตเอาต์พุต (Output Port) ส่วนนี้จะใช้ในการเชื่อมต่อกับอุปกรณ์ภายนอก ถือว่าเป็นส่วนที่สำคัญมาก ใช้ร่วมกันระหว่างพอร์ตอินพุต เพื่อรับสัญญาณ อาจจะด้วยการกดสวิตช์ เพื่อนำไปประมวลผลและส่งไปพอร์ตเอาต์พุต เพื่อแสดงผลเช่น การติดสว่างของหลอดไฟ เป็นต้น
4.ช่องทางเดินของสัญญาณ หรือบัส (BUS) คือเส้นทางการแลกเปลี่ยนสัญญาณข้อมูลระหว่าง ซีพียู หน่วยความจำและพอร์ต เป็นลักษณะของสายสัญญาณ จำนวนมากอยู่ภายในตัวไมโครคอนโทรลเลอร์ โดยแบ่งเป็นบัสข้อมูล (Data Bus) , บัสแอดเดรส (Address Bus) และบัสควบคุม (Control Bus)
5.วงจรกำเนิดสัญญาณนาฬิกา นับเป็นส่วนประกอบที่สำคัญมากอีกส่วนหนึ่ง เนื่องจากการทำงานที่เกิดขึ้นในตัวไมโครคอนโทรลเลอร์ จะขึ้นอยู่กับการกำหนดจังหวะ หากสัญญาณนาฬิกามีความถี่สูง จังหวะการทำงานก็จะสามารถทำได้ถี่ขึ้นส่งผลให้ไมโครคอนโทรลเลอร์จัวนั้น มีความเร็วในการประมวลผลสูงตามไปด้วย
บทความจาก วิกิพีเดีย th.wikipedia.org/wiki
คือ อุปกรณ์ควบคุมขนาดเล็ก ซึ่งบรรจุความสามารถที่คล้ายคลึงกับระบบคอมพิวเตอร์ โดยในไมโครคอนโทรลเลอร์ได้รวมเอาซีพียู, หน่วยความจำ และพอร์ต ซึ่งเป็นส่วนประกอบหลักสำคัญของระบบคอมพิวเตอร์เข้าไว้ด้วยกัน โดยทำการบรรจุเข้าไว้ในตัวถังเดียวกัน
โครงสร้างทั่วไป
โครงสร้างโดยทั่วไป ของไมโครคอนโทรลเลอร์นั้น สามารถแบ่งออกมาได้เป็น 5 ส่วนใหญ่ๆ ดังต่อไปนี้
1.หน่วยประมวลผลกลางหรือซีพียู (CPU : Central Processing Unit)
2.หน่วยความจำ (Memory) สามารถแบ่งออกเป็น 2 ส่วน คือ หน่วยความจำที่มีไว้สำหรับเก็บโปรแกรมหลัก (Program Memory) เปรียบเสมือนฮาร์ดดิสก์ของเครื่องคอมพิวเตอร์ตั้งโต๊ะ คือข้อมูลใดๆ ที่ถูกเก็บไว้ในนี้จะไม่สูญหายไปแม้ไม่มีไฟเลี้ยง อีกส่วนหนึ่งคือหน่วยความจำข้อมูล (Data Memory) ใช้เป็นเหมือนกกระดาษทดในการคำนวณของซีพียู และเป็นที่พักข้อมูลชั่วคราวขณะทำงาน แต่หากไม่มีไฟเลี้ยง ข้อมูลก็จะหายไปคล้ายกับหน่วยความแรม (RAM) ในเครื่องคอมพิวเตอร์ทั่วๆ ไป แต่สำหรับไมโครคอนโทรลเลอร์สมัยใหม่ หน่วยความจำข้อมูลจะมีทั้งที่เป็นหน่วยความจำแรม ซึ่งข้อมูลจะหายไปเมื่อไม่มีไฟเลี้ยง และเป็นอีอีพรอม (EEPROM : Erasable Electrically Read-Only Mempry) ซึ่งสามารถเก็บข้อมูลได้แม้ไม่มีไฟเลี้ยง
3.ส่วนติดต่อกับอุปกรณ์ภายนอก หรือพอร์ต (Port) มี 2 ลักษณะคือ พอร์ตอินพุต (Input Port) และพอร์ตส่งสัญญาณหรือพอร์ตเอาต์พุต (Output Port) ส่วนนี้จะใช้ในการเชื่อมต่อกับอุปกรณ์ภายนอก ถือว่าเป็นส่วนที่สำคัญมาก ใช้ร่วมกันระหว่างพอร์ตอินพุต เพื่อรับสัญญาณ อาจจะด้วยการกดสวิตช์ เพื่อนำไปประมวลผลและส่งไปพอร์ตเอาต์พุต เพื่อแสดงผลเช่น การติดสว่างของหลอดไฟ เป็นต้น
4.ช่องทางเดินของสัญญาณ หรือบัส (BUS) คือเส้นทางการแลกเปลี่ยนสัญญาณข้อมูลระหว่าง ซีพียู หน่วยความจำและพอร์ต เป็นลักษณะของสายสัญญาณ จำนวนมากอยู่ภายในตัวไมโครคอนโทรลเลอร์ โดยแบ่งเป็นบัสข้อมูล (Data Bus) , บัสแอดเดรส (Address Bus) และบัสควบคุม (Control Bus)
5.วงจรกำเนิดสัญญาณนาฬิกา นับเป็นส่วนประกอบที่สำคัญมากอีกส่วนหนึ่ง เนื่องจากการทำงานที่เกิดขึ้นในตัวไมโครคอนโทรลเลอร์ จะขึ้นอยู่กับการกำหนดจังหวะ หากสัญญาณนาฬิกามีความถี่สูง จังหวะการทำงานก็จะสามารถทำได้ถี่ขึ้นส่งผลให้ไมโครคอนโทรลเลอร์จัวนั้น มีความเร็วในการประมวลผลสูงตามไปด้วย
บทความจาก วิกิพีเดีย th.wikipedia.org/wiki
จุดเริ่มต้นของภาษาซี
จุดเริ่มต้นของภาษาซี
ภาษาซีเกิดขึ้นในปี ค.ศ.1972 โดย Dennis Ritchie แห่ง Bell Labs โดยภาษาซีนั้นพัฒนามาจาก ภาษา B และจากภาษา BCPL ซึ่งในช่วงแรกนั้นภาษาซีถูกออกแบบให้ใช้เป็นภาษาการเขียนโปรแกรมในระบบ UNIX และเริ่มมีคนสนใจมากขึ้นในปี ค.ศ.1978 เมื่อ Brain Kernighan ร่วมกับ Dennis Ritchie พัฒนามาตรฐานของภาษาซีขึ้นมา คือ K&R (Kernighan & Ritchie) และทั้งสองยังได้แต่งหนังสือชื่อว่า "The C Programming Language" โดยภาษาซีนั้นสามารถจะปรับใช้กับเครื่องคอมพิวเตอร์รูปแบบต่างๆได้ ต่อมาในช่วง ปี ค.ศ.1988 Ritchie และ Kernighan ได้ร่วมกับ ANSI (American National Standards Institute) สร้างเป็นมาตรฐานของภาษาซีขึ้นมาใหม่มีชื่อว่า "ANSI C"Dennis Ritchieภาษาซีนั้นจัดเป็นภาษาที่ใช้ในการเขียนโปรแกรมที่นิยมใช้งาน ซึ่งภาษาซีจัดเป็นภาษาระดับกลาง (Middle-Level Language) เหมาะกับการเขียนโปรแกรมแบบโครงสร้าง (Structured Programming) โดยมีคุณสมบัติโดดเด่นอย่างหนึ่งคือ มีความยืดหยุ่นมาก กล่าวคือ สามารถทำงานกับเครื่องมือต่างๆ สามารถปรับเปลี่ยนการเขียนโปรแกรมในรูปแบบต่างๆได้ เช่น สามารถเขียนโปรแกรมที่มีความยาวหลายบรรทัดให้เหลือความยาว 2-3 บรรทัดได้ โดยมีการผลการทำงานที่เหมือนเดิมครับเหตุผลที่ควรเรียนภาษาซีก็เนื่องจากภาษาซีเป็นภาษาแบบโครงสร้างที่สามารถศึกษาและทำความเข้าใจได้ไม่ยาก อีกทั้งยังสามารถเป็นพื้นฐานในการเขียนโปรแกรมภาษาอื่นๆ ได้อีก เช่น C++, Perl, JAVA เป็นต้นจาก C สู่ C++ถูกพัฒนาโดย Bjarne Stroustrup แห่ง Bell Labs โดยได้นำเอาภาษา C มาพัฒนาและใส่แนวคิดการเขียนโปรแกรมเชิงวัตถุ หรือ OOP (Object Oriented Programming) เข้าไปด้วย ซึ่งเป็นที่มาของ C++ ก็คือ นำภาษา C มาพัฒนาปรับปรุงให้มีประสิทธิภาพมากขึ้นBjarne Stroustrupจำเป็นไหม? ที่ต้องเรียนภาษา C ก่อน เรียน C++ เลยไม่ได้เหรอ? คำตอบก็คือ คุณจะเรียน C++ เลยก็ได้ครับ โดยไม่ต้องศึกษาภาษา C มาก่อน แต่ถ้าคุณเข้าใจหลักการทำงาน และการเขียนโปรแกรมภาษา C แล้วจะสามารถต่อยอด C++ ได้เร็วกว่า อีกทั้งยังสามารถเข้าใจแนวคิดการเขียนโปรแกรมภาษาอื่นๆ ได้อีก ซึ่งในบทความในช่วงแรกผมจะนำเสนอหลักและแนวคิดในการเขียนโปรแกรมภาษา C ก่อนนะครับ เพื่อให้ผู้อ่านได้เข้าใจในพื้นฐานก่อนนะครับต่อไปจะขอเกริ่นถึงการเขียนโปรแกรมแบบโครงสร้างสักเล็กน้อยก่อนนะครับ แล้วก็จะเริ่มเข้ากระบวนการการเขียนโปรแกรมกันลักษณะโปรแกรมแบบโครงสร้างการเขียนโปรแกรมแบบโครงสร้าง (Structured Programming) ก็คือ การนำโครงสร้างของคำสั่งหลายๆ รูปแบบ นำมาใช้ในโปรแกรม โดยจะมีการใช้คำสั่งลักษณะ goto ให้น้อยที่สุด ตัวอย่างการเขียนโปรแกรมแบบโครงสร้าง ก็มี ภาษา C, Pascal และ Cobol เป็นต้นครับ ผมจะยกตัวอย่างในภาษา C ในรูปแบบการเขียนโปรแกรมแบบโครงสร้างให้ดูดังด้านล่างนะครับภาพ: โปรแกรมที่เขียนด้วยภาษาซีแบบง่ายๆ แสดงถึงโครงสร้างจากโปรแกรมข้างต้นนะครับ สามารถแบ่งโครงสร้างตามลักษณะหน้าที่การทำงานได้ 3 ส่วนหลักๆ นะครับ ก็คือส่วนที่ 1 ประกาศค่าตัวแปร และ การกำหนดค่าให้กับตัวแปร (Declare)ส่วนที่ 2 เพิ่มค่า และเก็บค่าไว้ในตัวแปร (Calculation)ส่วนที่ 3 แสดงผลทางจอภาพ (Display)
จุดเด่นของภาษาซี
1. เป็นภาษาที่เข้าใจง่าย มีลักษณะเป็นโครงสร้าง ท่านอ่านคำสั่งต่างๆแล้ว ทำความเข้าใจไม่ยากเลยสามารถควบคุมฮาร์ดแวร์ได้อย่างไม่มีสิ่งใดมาขวางกั้น โปรแกรมทำงานได้อย่างรวดเร็ว ใช้งานได้หลากหลาย ยืดหยุ่น สามารถเขียนแยกเป็นโมดูล (เป็นโปรแกรมย่อยๆ) ได้
2. เป็นรากฐานเพื่อไปศึกษาภาษาอื่นได้อีก ไม่ว่าจะเป็น Java Perl PHP C# ล้วนแต่ถูกสร้างมาจากภาษาซี เพราะภาษาซีนั้นเป็นภาษาที่ถูกสร้างขึ้นมานานมากแล้ว และถูกนำมาใช้กันทั่วโลก และหากท่านจะสร้างภาษาโปรแกรมขึ้นมาสักภาษาหนึ่ง หากท่านอยากจะให้มันเข้าใจง่าย และใช้กันแพร่หลาย ท่านจะคิดคำสั่งเอง หรือท่านจะเอาคำสั่งที่โปรแกรมเมอร์ทั่วโลกเขาเข้าใจอยู่แล้วมาใช้ล่ะครับ แน่นอน ก็ต้องอย่างหลังอยู่แล้ว ทำให้ภาษาโปรแกรมหลายๆตัวที่นิยม ล้วนสร้างขึ้นมาจากภาษาซี หากท่านศึกษาภาษาซีก่อน เมื่อท่านไปศึกษาภาษาอื่น ท่านจะข้ามพื้นฐานไปได้เลย ทำให้การศึกษาภาษาอื่น เป็นไปด้วยความรวดเร็ว
3. เป็นภาษาที่ทำงานเร็ว คล่องตัว เพราะการเรียนภาษาซีนั้น ทำกันบนบรรทัดคำสั่ง เพื่อสั่งให้ทำงานบนหน้าจอโดยตรง หรือจะสั่งเครื่องพิมพ์ก็ย่อมได้ ภาษาโปรแกรมใหม่ๆ มักจะมีตัวแปลภาษาและอีดิตเตอร์เป็นแบบ IDE ไม่ทันไรผู้เรียนก็สามารถสร้างหน้าจอ GUI (กราฟิกยูเซอร์อินเตอร์เฟช) ได้แล้ว แต่มันเป็นง่ายไปครับ การข้ามขั้นพื้นฐานไป ทำให้ความรู้ท่านไม่แน่นพอ หากท่านเรียนภาษาซีท่านจะได้เริ่มตั้งแต่รันบนดอสกันไปเลย ทำให้ท่านเข้าใจพื้นฐานของโปรแกรมต่างๆ เมื่อพื้นฐานท่านแน่น อีกหน่อยจะไปพัฒนาระบบใหญ่ๆ หรือเขียนโปรแกรมเชิงวัตถุก็สบาย
4. มีพอยเตอร์ให้เราได้ศึกษาในเรื่องของหน่วยความจำ ภาษาซีจะสามารถเข้าจัดการหน่วยความจำได้ ไม่ว่าจะเป็นการจัดสรร เพิ่มลดข้อมูลในหน่วยความจำ ก็ย่อมได้ เพราะอย่างที่ได้กล่าวไว้ว่า ภาษาซีสามารถควบคุมฮาร์ดแวร์ได้ การจะจัดการกับหน่วยความจำก็ไม่ใช่ปัญหาเลย ท่านสามารถจัดสรรทรัพยากรให้เหมาะสมกับการทำงานของท่านได้ เช่น หากโปรแกรมอยู่เฉยๆก็ไม่ต้องให้โปรแกรมกินหน่วยความจำ เมื่อมันเริ่มทำงานเมื่อไหร่ก็ให้เริ่มกินหรือจองหน่วยความจำ ทำให้โปรแกรมของท่านมีความยืดหยุ่น พลิกแพลงได้ เรื่องพอยเตอร์นี่แหละครับ จุดเด่นของภาษาซี
5. มีชุดพัฒนาอยู่มากมาย เพื่อใช้ในงานเฉพาะทาง ไม่ว่าจะเป็นการจัดการกับรูปภาพ ด้วยชุดพัฒนา Images Processing การพัฒนาโปรแกรมบนวินโดวส์ด้วย MFC หรือ Visual C++ และอีกมากมาย หากท่านมีพื้นฐานดีแล้ว ท่านสามารถศึกษาชุดพัฒนาเหล่านี้ได้ไม่ยาก และที่สำคัญสามารถหาชุดพัฒนาที่ถูกสร้างจากภาษาซีได้ทั่วโลก
6. ภาษาซีนั้นมีมาตรฐานเดียวกันทั่วโลก นั่นหมายความว่า ท่านศึกษาครั้งเดียว ท่านเขียนได้ทั้งบน วินโดวส์และยูนิกซ์หรือลีนุกซ์ ซึ่งทำให้ท่านสามารถพัฒนาโปรแกรมในระบบปฏิบัติการหลายๆแบบได้ ไม่ต้องศึกษาภาษาใหม่เลย อาจจะศึกษาลักษณะที่ต่างกัน ก็เพียงเล็กน้อย นอกนั้นก็คล้ายกันเลยทีเดียว
7. หลายๆสถาบันมักจะให้เรียนภาษาซีเป็นภาษาแรก เพื่อเป็นพื้นฐานไปสู่การเขียนโปรแกรมเชิงวัตถุ เช่น C++ , Java ท่านยังสามารถศึกษาไปในด้านของวิชาโครงสร้างข้อมูลได้ ซึ่งใช้ในการจัดสรรทรัพยากรหน่วยความจำ การจัดเก็บข้อมูล การเรียงลำดับ การค้นหา และเป็นพื้นฐานของอีกหลายๆวิชา
จุดด้อยของภาษา C
อีกปัญหาหนึ่ง ก็คือตัวของภาษา C ไม่มีตัวจัดการจองหน่วยความจำในตัวเอง เมื่อเวลาเราต้องการจองหน่วยความจำแบบ Dynamic ภาษา C ทำ wrapper เพื่อติดต่อกับ OS เพื่อขอจองหน่วยความจำโดยตรง ปัญหาก็คือ การติดต่อกันระหว่างโปรแกรมของเรากับ OS เป็นไปอย่างหลวมๆ ถ้าโปรแกรมลืมบอก OS ว่า เลิกจองหน่วยความจำดังกล่าว หน่วยความจำนั้นก็จะถูกจองไปเรื่อยๆ เราจะเห็นเครื่องคอมพิวเตอร์ทำงานได้เร็วในตอนเช้า แต่พอตกบ่ายก็ช้าลงจนทำงานไม่ไหว จนสุดท้ายต้อง boot ใหม่ สาเหตุหลักของปัญหานี้คือ สิ่งที่เรียกว่าหน่วยความจำรั่ว หรือ Memory Leak ก็เรื่องจองแล้วลืมเอาคืนนั่นแหละครับ
ภาษาซีเกิดขึ้นในปี ค.ศ.1972 โดย Dennis Ritchie แห่ง Bell Labs โดยภาษาซีนั้นพัฒนามาจาก ภาษา B และจากภาษา BCPL ซึ่งในช่วงแรกนั้นภาษาซีถูกออกแบบให้ใช้เป็นภาษาการเขียนโปรแกรมในระบบ UNIX และเริ่มมีคนสนใจมากขึ้นในปี ค.ศ.1978 เมื่อ Brain Kernighan ร่วมกับ Dennis Ritchie พัฒนามาตรฐานของภาษาซีขึ้นมา คือ K&R (Kernighan & Ritchie) และทั้งสองยังได้แต่งหนังสือชื่อว่า "The C Programming Language" โดยภาษาซีนั้นสามารถจะปรับใช้กับเครื่องคอมพิวเตอร์รูปแบบต่างๆได้ ต่อมาในช่วง ปี ค.ศ.1988 Ritchie และ Kernighan ได้ร่วมกับ ANSI (American National Standards Institute) สร้างเป็นมาตรฐานของภาษาซีขึ้นมาใหม่มีชื่อว่า "ANSI C"Dennis Ritchieภาษาซีนั้นจัดเป็นภาษาที่ใช้ในการเขียนโปรแกรมที่นิยมใช้งาน ซึ่งภาษาซีจัดเป็นภาษาระดับกลาง (Middle-Level Language) เหมาะกับการเขียนโปรแกรมแบบโครงสร้าง (Structured Programming) โดยมีคุณสมบัติโดดเด่นอย่างหนึ่งคือ มีความยืดหยุ่นมาก กล่าวคือ สามารถทำงานกับเครื่องมือต่างๆ สามารถปรับเปลี่ยนการเขียนโปรแกรมในรูปแบบต่างๆได้ เช่น สามารถเขียนโปรแกรมที่มีความยาวหลายบรรทัดให้เหลือความยาว 2-3 บรรทัดได้ โดยมีการผลการทำงานที่เหมือนเดิมครับเหตุผลที่ควรเรียนภาษาซีก็เนื่องจากภาษาซีเป็นภาษาแบบโครงสร้างที่สามารถศึกษาและทำความเข้าใจได้ไม่ยาก อีกทั้งยังสามารถเป็นพื้นฐานในการเขียนโปรแกรมภาษาอื่นๆ ได้อีก เช่น C++, Perl, JAVA เป็นต้นจาก C สู่ C++ถูกพัฒนาโดย Bjarne Stroustrup แห่ง Bell Labs โดยได้นำเอาภาษา C มาพัฒนาและใส่แนวคิดการเขียนโปรแกรมเชิงวัตถุ หรือ OOP (Object Oriented Programming) เข้าไปด้วย ซึ่งเป็นที่มาของ C++ ก็คือ นำภาษา C มาพัฒนาปรับปรุงให้มีประสิทธิภาพมากขึ้นBjarne Stroustrupจำเป็นไหม? ที่ต้องเรียนภาษา C ก่อน เรียน C++ เลยไม่ได้เหรอ? คำตอบก็คือ คุณจะเรียน C++ เลยก็ได้ครับ โดยไม่ต้องศึกษาภาษา C มาก่อน แต่ถ้าคุณเข้าใจหลักการทำงาน และการเขียนโปรแกรมภาษา C แล้วจะสามารถต่อยอด C++ ได้เร็วกว่า อีกทั้งยังสามารถเข้าใจแนวคิดการเขียนโปรแกรมภาษาอื่นๆ ได้อีก ซึ่งในบทความในช่วงแรกผมจะนำเสนอหลักและแนวคิดในการเขียนโปรแกรมภาษา C ก่อนนะครับ เพื่อให้ผู้อ่านได้เข้าใจในพื้นฐานก่อนนะครับต่อไปจะขอเกริ่นถึงการเขียนโปรแกรมแบบโครงสร้างสักเล็กน้อยก่อนนะครับ แล้วก็จะเริ่มเข้ากระบวนการการเขียนโปรแกรมกันลักษณะโปรแกรมแบบโครงสร้างการเขียนโปรแกรมแบบโครงสร้าง (Structured Programming) ก็คือ การนำโครงสร้างของคำสั่งหลายๆ รูปแบบ นำมาใช้ในโปรแกรม โดยจะมีการใช้คำสั่งลักษณะ goto ให้น้อยที่สุด ตัวอย่างการเขียนโปรแกรมแบบโครงสร้าง ก็มี ภาษา C, Pascal และ Cobol เป็นต้นครับ ผมจะยกตัวอย่างในภาษา C ในรูปแบบการเขียนโปรแกรมแบบโครงสร้างให้ดูดังด้านล่างนะครับภาพ: โปรแกรมที่เขียนด้วยภาษาซีแบบง่ายๆ แสดงถึงโครงสร้างจากโปรแกรมข้างต้นนะครับ สามารถแบ่งโครงสร้างตามลักษณะหน้าที่การทำงานได้ 3 ส่วนหลักๆ นะครับ ก็คือส่วนที่ 1 ประกาศค่าตัวแปร และ การกำหนดค่าให้กับตัวแปร (Declare)ส่วนที่ 2 เพิ่มค่า และเก็บค่าไว้ในตัวแปร (Calculation)ส่วนที่ 3 แสดงผลทางจอภาพ (Display)
จุดเด่นของภาษาซี
1. เป็นภาษาที่เข้าใจง่าย มีลักษณะเป็นโครงสร้าง ท่านอ่านคำสั่งต่างๆแล้ว ทำความเข้าใจไม่ยากเลยสามารถควบคุมฮาร์ดแวร์ได้อย่างไม่มีสิ่งใดมาขวางกั้น โปรแกรมทำงานได้อย่างรวดเร็ว ใช้งานได้หลากหลาย ยืดหยุ่น สามารถเขียนแยกเป็นโมดูล (เป็นโปรแกรมย่อยๆ) ได้
2. เป็นรากฐานเพื่อไปศึกษาภาษาอื่นได้อีก ไม่ว่าจะเป็น Java Perl PHP C# ล้วนแต่ถูกสร้างมาจากภาษาซี เพราะภาษาซีนั้นเป็นภาษาที่ถูกสร้างขึ้นมานานมากแล้ว และถูกนำมาใช้กันทั่วโลก และหากท่านจะสร้างภาษาโปรแกรมขึ้นมาสักภาษาหนึ่ง หากท่านอยากจะให้มันเข้าใจง่าย และใช้กันแพร่หลาย ท่านจะคิดคำสั่งเอง หรือท่านจะเอาคำสั่งที่โปรแกรมเมอร์ทั่วโลกเขาเข้าใจอยู่แล้วมาใช้ล่ะครับ แน่นอน ก็ต้องอย่างหลังอยู่แล้ว ทำให้ภาษาโปรแกรมหลายๆตัวที่นิยม ล้วนสร้างขึ้นมาจากภาษาซี หากท่านศึกษาภาษาซีก่อน เมื่อท่านไปศึกษาภาษาอื่น ท่านจะข้ามพื้นฐานไปได้เลย ทำให้การศึกษาภาษาอื่น เป็นไปด้วยความรวดเร็ว
3. เป็นภาษาที่ทำงานเร็ว คล่องตัว เพราะการเรียนภาษาซีนั้น ทำกันบนบรรทัดคำสั่ง เพื่อสั่งให้ทำงานบนหน้าจอโดยตรง หรือจะสั่งเครื่องพิมพ์ก็ย่อมได้ ภาษาโปรแกรมใหม่ๆ มักจะมีตัวแปลภาษาและอีดิตเตอร์เป็นแบบ IDE ไม่ทันไรผู้เรียนก็สามารถสร้างหน้าจอ GUI (กราฟิกยูเซอร์อินเตอร์เฟช) ได้แล้ว แต่มันเป็นง่ายไปครับ การข้ามขั้นพื้นฐานไป ทำให้ความรู้ท่านไม่แน่นพอ หากท่านเรียนภาษาซีท่านจะได้เริ่มตั้งแต่รันบนดอสกันไปเลย ทำให้ท่านเข้าใจพื้นฐานของโปรแกรมต่างๆ เมื่อพื้นฐานท่านแน่น อีกหน่อยจะไปพัฒนาระบบใหญ่ๆ หรือเขียนโปรแกรมเชิงวัตถุก็สบาย
4. มีพอยเตอร์ให้เราได้ศึกษาในเรื่องของหน่วยความจำ ภาษาซีจะสามารถเข้าจัดการหน่วยความจำได้ ไม่ว่าจะเป็นการจัดสรร เพิ่มลดข้อมูลในหน่วยความจำ ก็ย่อมได้ เพราะอย่างที่ได้กล่าวไว้ว่า ภาษาซีสามารถควบคุมฮาร์ดแวร์ได้ การจะจัดการกับหน่วยความจำก็ไม่ใช่ปัญหาเลย ท่านสามารถจัดสรรทรัพยากรให้เหมาะสมกับการทำงานของท่านได้ เช่น หากโปรแกรมอยู่เฉยๆก็ไม่ต้องให้โปรแกรมกินหน่วยความจำ เมื่อมันเริ่มทำงานเมื่อไหร่ก็ให้เริ่มกินหรือจองหน่วยความจำ ทำให้โปรแกรมของท่านมีความยืดหยุ่น พลิกแพลงได้ เรื่องพอยเตอร์นี่แหละครับ จุดเด่นของภาษาซี
5. มีชุดพัฒนาอยู่มากมาย เพื่อใช้ในงานเฉพาะทาง ไม่ว่าจะเป็นการจัดการกับรูปภาพ ด้วยชุดพัฒนา Images Processing การพัฒนาโปรแกรมบนวินโดวส์ด้วย MFC หรือ Visual C++ และอีกมากมาย หากท่านมีพื้นฐานดีแล้ว ท่านสามารถศึกษาชุดพัฒนาเหล่านี้ได้ไม่ยาก และที่สำคัญสามารถหาชุดพัฒนาที่ถูกสร้างจากภาษาซีได้ทั่วโลก
6. ภาษาซีนั้นมีมาตรฐานเดียวกันทั่วโลก นั่นหมายความว่า ท่านศึกษาครั้งเดียว ท่านเขียนได้ทั้งบน วินโดวส์และยูนิกซ์หรือลีนุกซ์ ซึ่งทำให้ท่านสามารถพัฒนาโปรแกรมในระบบปฏิบัติการหลายๆแบบได้ ไม่ต้องศึกษาภาษาใหม่เลย อาจจะศึกษาลักษณะที่ต่างกัน ก็เพียงเล็กน้อย นอกนั้นก็คล้ายกันเลยทีเดียว
7. หลายๆสถาบันมักจะให้เรียนภาษาซีเป็นภาษาแรก เพื่อเป็นพื้นฐานไปสู่การเขียนโปรแกรมเชิงวัตถุ เช่น C++ , Java ท่านยังสามารถศึกษาไปในด้านของวิชาโครงสร้างข้อมูลได้ ซึ่งใช้ในการจัดสรรทรัพยากรหน่วยความจำ การจัดเก็บข้อมูล การเรียงลำดับ การค้นหา และเป็นพื้นฐานของอีกหลายๆวิชา
จุดด้อยของภาษา C
อีกปัญหาหนึ่ง ก็คือตัวของภาษา C ไม่มีตัวจัดการจองหน่วยความจำในตัวเอง เมื่อเวลาเราต้องการจองหน่วยความจำแบบ Dynamic ภาษา C ทำ wrapper เพื่อติดต่อกับ OS เพื่อขอจองหน่วยความจำโดยตรง ปัญหาก็คือ การติดต่อกันระหว่างโปรแกรมของเรากับ OS เป็นไปอย่างหลวมๆ ถ้าโปรแกรมลืมบอก OS ว่า เลิกจองหน่วยความจำดังกล่าว หน่วยความจำนั้นก็จะถูกจองไปเรื่อยๆ เราจะเห็นเครื่องคอมพิวเตอร์ทำงานได้เร็วในตอนเช้า แต่พอตกบ่ายก็ช้าลงจนทำงานไม่ไหว จนสุดท้ายต้อง boot ใหม่ สาเหตุหลักของปัญหานี้คือ สิ่งที่เรียกว่าหน่วยความจำรั่ว หรือ Memory Leak ก็เรื่องจองแล้วลืมเอาคืนนั่นแหละครับ
สมัครสมาชิก:
บทความ (Atom)