[Print][Back]

จุฬาลงกรณ์มหาวิทยาลัย

คณะวิศวกรรมศาสตร์

ภาควิชาวิศวกรรมคอมพิวเตอร์

2110262 Microprocessor Systems Lab.

ชื่อ ______________________________

เลขประจำตัว ________________________

หมายเลขเครื่อง ______________________

วันที่ ______________________________


1. การใช้เครื่องมือและดิจิตอล อินพุต เอาท์พุต

วัตถุประสงค์

  1. เพื่อให้นิสิตสามารถใช้งานเครื่องมือในชุดการพัฒนาโปรแกรม PIC ได้
  2. เพื่อให้นิสิตเกิดทักษะในการเขียนโปรแกรมภาษา Assembly มากขึ้น
  3. เพื่อให้นิสิตเข้าใจหลักการทำงานของ LED และสามารถต่อพ่วงเข้าใช้งานกับวงจรดิจิตอลได้
  4. เพื่อให้นิสิตเข้าใจโครงสร้างและการทำงานของสวิตซ์แบบ Mechanic

อุปกรณ์ที่แจกให้

เอกสารที่เกี่ยวข้อง/อ้างอิง

การทดลอง

  1. ให้นิสิตต่อ LED 2 บิต เข้ากับ Port B (RB1, RB2) และต่อสวิตซ์เข้ากับ Port B (RB0) LED ของ PIC บนบอร์ดทดลองตาม Block Diagram ที่แสดงให้

  2. (ข้อควรระวัง ควรตรวจสอบขาของบอร์ดให้ถูกต้องก่อนทำการต่อ RB0, RB1 และ RB2 คือ ขา 33 ถึง 35 ตามลำดับ)

     

  3. จงเขียนโปรแกรมเพื่อทำการอ่านค่าสวิตซ์จาก RB0 แล้วมาแสดงผลที่ RB1 และ RB2 โดยให้ 1. RB1 สว่างและ RB 2 ดับ เมื่อมีการกดสวิตซ์ และ 2.RB1 ดับและ RB2 สว่างเมื่อไม่มีการกดสวิตซ์ (ตามตัวอย่าง)

  4. 	List p=16f877
    	include 
    
    	ORG 	0000
    	; Initialize PORTB
    	BCF	STATUS, RP1		; Set memory Bank 1.
    	BSF	STATUS, RP0
    	MOVLW	0x01		; Set port direction RB0 In, RB1, RB2 Out.
    	MOVWF	TRISB
    	BCF	OPTION_REG,7		; Enable pull-ups for PORTB
    	BCF	STATUS, RP0		; Set memory Bank 0.
    START:
    	; Read Data From RB0
    	BTFSC	PORTB, 0	
    	; Write RB1, RB2
    	GOTO	SET01
    	BSF	PORTB, 1
    	BCF	PORTB, 2	
    	GOTO	START
    SET01:
    	BCF	PORTB, 1
    	BSF	PORTB, 2	
    	GOTO	START
    	END
    	

     

  5. ทำการ Assembler และตรวจสอบจนกระทั่งไม่พบข้อผิดพลาด

  6. Download โปรแกรมที่ได้ (.BIN) ลงสู่ Microcontroller PIC ผ่านทางบอร์ดสำหรับการโปรแกรม พร้อมแสดงการทดสอบการทำงาน

  7. ดัดแปลงโปรแกรมดังกล่าวเพื่อให้ไฟติดและดับสลับมีการเปลี่ยนสถานะเมื่อมีการ Click ที่สวิตซ์ดังนี้

สถานะ

RB2

RB1

1

ดับ

ดับ

2

ดับ

ติด

3

ติด

ดับ

4

ติด

ติด

หมายเหตุ เนื่องจากสวิตซ์จะมี Bounce เกิดขึ้นด้วย ดังนั้นในการกดปุ่มบางจังหวะอาจจะมีการข้าม State ได้ ทั้งนี้ในการทดลองนี้ ไม่จำเป็นต้องทำการ Debounce      
[Print][Back]