View Single Post
Old 17-07-2006, 10:01 AM   #5
chuchinh
Đệ tử 1 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 23
:
Cảm ơn hai anh, tại vị trí RA4 em cho thêm một con trở kéo lên và đèn đã sáng. Như vậy việc test out tại các cổng đã xong.
Bây giờ em test cổng A như là đầu vào với các chân được nối với trở 560R xuống GND, 4 phím bấm nối với các chân RA0-RA3 và có chân chung là 5V. Em copy đoạn chương trình bật đèn tại cổng B tương ứng phím bấm tại cổng A của anh Falleaf, chỉ bật đèn ở Port B khi có tín hiệu 5V tại port A tương ứng (thay lệnh BTFSC bằng BTFSS). Tuy nhiên các đèn lại sáng hết và không có tác động gì khi ấn phím. Còn khi thay hai lệnh BTFSS bằng BTFSC thì hai đèn tương ứng bị tắt. Dường như Port A không thay đổi giá trị khi ấn phím và luôn luôn giữ giá trị 0. Các anh có thể chỉ cho em tại sao không?
Đoạn chương trình của em:
Code:
			TITLE "Mach test ban phim"
			PROCESSOR P16F628A
			INCLUDE <P16F628A.inc>
			__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF &_HS_OSC & _LVP_OFF
;================================================= ======
			ORG 0x0000
			GOTO MAIN
			ORG 0x0005
MAIN
			BANKSEL TRISB
			CLRF	TRISB
			MOVLW	0xff  ; chon cong A la dau vao
			MOVWF	TRISA
			BANKSEL	PORTB
			;CLRF 	PORTA ; lenh nay co hay khong deu thuc hien nhu nhau
			CLRF 	PORTB

;=============================================================================

SW0          BTFSS            PORTA,         0
             GOTO             TURNON0
             BCF              PORTB,         0

SW1          BTFSC            PORTA,         1
             GOTO             TURNON1
             BCF              PORTB,         1; khi thay BTFSS boi BTFSC thi den nay tat

SW2          BTFSS            PORTA,         2
             GOTO             TURNON2
             BCF              PORTB,         2

SW3          BTFSC            PORTA,         3
             GOTO             TURNON3
             BCF              PORTB,         3; khi thay BTFSS boi BTFSC thi den nay tat

             GOTO             SW0                          ; quay l?i quét t? d?u

TURNON0      BSF              PORTB,          0
             GOTO             SW1

TURNON1      BSF              PORTB,          1
             GOTO             SW2

TURNON2      BSF              PORTB,          2
             GOTO             SW3

TURNON3      BSF              PORTB,          3
             GOTO             SW0			


			nop
;=============================================================================
			END
Còn nữa, anh có giải pháp nào để em có thể so sánh giá trị tại địa chỉ d4 mà không phải là so sánh d4 với 0x01 không, chỉ em luôn nhé.
Cho em hỏi thêm ngoài lề: nếu dùng LCD với 4 đường dữ liệu thì đấu nối RB0 với D4, RB1 với D5, RB2 với D6, RB3 với D7? còn khi khởi động thì đưa giá trị 30h ra LCD để RESET LCD trước (theo cách 4 đường dữ liệu) hay khởi tạo LCD ở chế độ 4 bít trước?
Thank so much.

thay đổi nội dung bởi: chuchinh, 17-07-2006 lúc 06:07 PM.
chuchinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn