PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > PIC - Thiết kế và Ứng dụng

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 24-12-2006, 06:50 PM   #4
pham_dinh_hung83
Đệ tử 1 túi
 
Tham gia ngày: Jul 2006
Bài gửi: 17
:
thực ra thì mình khá bận .
mấy hôm vừa rồi ít ngủ
mình cho bạn chương trình mình dùng 8051 giao tiếp ps2 tay đồ chơi điện tử playstation 2. có hiện thị lcd nhé. cố nghiên cứu ,
chúc vui
Code:
;-------------------------------------------------
	ORG	0000h
;-------------------------------------------------
BUTTON1		EQU	P3.6
BUTTON2		EQU	P3.7
DC2_NGUOC	BIT	P2.7

DC3_THUAN	BIT	P0.1
DC3_NGUOC	BIT	P0.2

DC4_THUAN	BIT	P0.3
DC4_NGUOC	BIT	P2.3

DC_BANH1_CHIEU	BIT	P0.0
DC_BANH1_VOLT	BIT	P0.7
DC_BANH1_CHAY	BIT	P0.6

DC_BANH2_CHIEU	BIT	P2.4
DC_BANH2_VOLT	BIT	P2.5
DC_BANH2_CHAY	BIT	P2.6

DC1_THUAN	BIT	P2.2
DC1_NGUOC	BIT	P2.1

DC2_THUAN	BIT	P2.0

;-------------------------------------------------
LCDDATA		EQU	P1
LCDD7		BIT	P1.7

LCDRS		BIT	P1.0
LCDRW		BIT	P1.1
LCDE		BIT	P1.2
;-------------------------------------------------
PsCom		BIT	P3.4
PsData		BIT	P3.5
PsClk		BIT	P3.2
PsATT		BIT	P3.3
fReady		BIT	01h
fAnalog		BIT	02h
;-------------------------------------------------
TEMP		EQU	30h
TEMP1		EQU	31h
;-------------------------------------------------
PsxStatus	EQU	32h
PsxVer		EQU	33h
PsxLX		EQU	34h
PsxLY		EQU	35h
PsxRX		EQU	36h
PsxRY		EQU	37h
PsxBt1		EQU	28h
PsxBt2		EQU	29h
;-------------------------------------------------
TRAI_TREN	BIT	PsxBt2.2
TRAI_DUOI	BIT	PsxBt2.0

PHAI_TREN	BIT	PsxBt2.3
PHAI_DUOI	BIT	PsxBt2.1

SANG_TRAI	BIT	PsxBt1.7
SANG_PHAI	BIT	PsxBt1.5
LEN_TREN	BIT	PsxBt1.4
XUONG_DUOI	BIT	PsxBt1.6

VUONG		BIT	PsxBt2.7
TRON		BIT	PsxBt2.5
TAM_GIAC	BIT	PsxBt2.4
GACH_CHEO	BIT	PsxBt2.6

SELECT		BIT	PsxBt1.0
START		BIT	PsxBt1.3

JOY1		BIT	PsxBt1.1
JOY2		BIT	PsxBt1.2
;-------------------------------------------------
WDTRST		EQU	0A6h
WDTPRG		EQU	0A7h
;-------------------------------------------------
	ORG	000h
	LJMP	MAIN

	ORG	100H
;-------------------------------------------------

;==================================================
MAIN:
	ORL	WDTPRG,#06		; WATCHDOG 1s o THACH ANH 11.0592MHz
	CALL	INITLCD
	CALL	MESSAGE
	CALL	CLRSCR
LOOP_PSX:
	CALL	Psx_Process
	CALL	HIENTHI
	CALL	DKRELAY
	CALL	DELAY
	SJMP	LOOP_PSX
	SJMP	$
;==================================================

;-------------------------------------------------
DKRELAY:
	CALL	CLRWDT

; ----- DIEU KHIEN ANALOG PHAI ------

	MOV	A,PsxRY
	ADD	A,#255		; SO SANH A VOI 00
	JC	NEXT_R1		; NEU A>0 THI KIEM TRA TIEP
	CLR	DC_BANH2_CHAY	; NEU A=0 THI CHO DONG CO PHAI CHAY TIEN O 24V
	SETB	DC_BANH2_CHIEU
	CLR	DC_BANH2_VOLT
	SJMP	EXIT_R
NEXT_R1:
	MOV	A,PsxRY
	ADD	A,#205		; SO SANH A VOI 50
	JC	NEXT_R2		; NEU A>50 THI KIEM TRA TIEP
	CLR	DC_BANH2_CHAY	; NEU A<=50 THI CHO DONG CO PHAI CHAY TIEN O 12V
	SETB	DC_BANH2_CHIEU
	SETB	DC_BANH2_VOLT
	SJMP	EXIT_R
NEXT_R2:
	MOV	A,PsxRY
	ADD	A,#55		; SO SANH A VOI 200
	JC	NEXT_R3		; NEU A>200 THI KIEM TRA TIEP
	SETB	DC_BANH2_CHAY	; NEU A<=200 THI CHO DONG CO PHAI DUNG
	SETB	DC_BANH2_CHIEU
	SETB	DC_BANH2_VOLT
	SJMP	EXIT_R
NEXT_R3:
	MOV	A,PsxRY
	ADD	A,#01		; SO SANH A VOI 255
	JC	NEXT_R4		; NEU A=255 THI CHO DONG CO PHAI LUI O 24V
	CLR	DC_BANH2_CHAY	; NEU A<255 THI CHO DONG CO PHAI LUI O 12V
	CLR	DC_BANH2_CHIEU
	SETB	DC_BANH2_VOLT
	SJMP	EXIT_R
NEXT_R4:
	CLR	DC_BANH2_CHAY	; CHO DONG CO PHAI LUI O 24V
	CLR	DC_BANH2_CHIEU
	CLR	DC_BANH2_VOLT	
EXIT_R:

; ----- KIEM TRA CHE DO CHAY THANG  ------
	
	JB	PHAI_TREN,KOTHANG
	MOV	PsxLY,PsxRY
KOTHANG:


; ----- DIEU KHIEN ANALOG TRAI ------

	MOV	A,PsxLY
	ADD	A,#255		; SO SANH A VOI 00
	JC	NEXT_L1		; NEU A>0 THI KIEM TRA TIEP
	CLR	DC_BANH1_CHAY	; NEU A=0 THI CHO DONG CO TRAI CHAY TIEN O 24V
	SETB	DC_BANH1_CHIEU
	CLR	DC_BANH1_VOLT
	SJMP	EXIT_L
NEXT_L1:
	MOV	A,PsxLY
	ADD	A,#205		; SO SANH A VOI 50
	JC	NEXT_L2		; NEU A>50 THI KIEM TRA TIEP
	CLR	DC_BANH1_CHAY	; NEU A<=50 THI CHO DONG CO TRAI CHAY TIEN O 12V
	SETB	DC_BANH1_CHIEU
	SETB	DC_BANH1_VOLT
	SJMP	EXIT_L
NEXT_L2:
	MOV	A,PsxLY
	ADD	A,#55		; SO SANH A VOI 200
	JC	NEXT_L3		; NEU A>200 THI KIEM TRA TIEP
	SETB	DC_BANH1_CHAY	; NEU A<=200 THI CHO DONG CO TRAI DUNG
	SETB	DC_BANH1_CHIEU
	SETB	DC_BANH1_VOLT
	SJMP	EXIT_L
NEXT_L3:
	MOV	A,PsxLY
	ADD	A,#01		; SO SANH A VOI 255
	JC	NEXT_L4		; NEU A=255 THI CHO DONG CO TRAI LUI O 24V
	CLR	DC_BANH1_CHAY	; NEU A<255 THI CHO DONG CO TRAI LUI O 12V
	CLR	DC_BANH1_CHIEU
	SETB	DC_BANH1_VOLT
	SJMP	EXIT_L
NEXT_L4:
	CLR	DC_BANH1_CHAY	; CHO DONG CO TRAI LUI O 24V
	CLR	DC_BANH1_CHIEU
	CLR	DC_BANH1_VOLT	
EXIT_L:






; ----- DIEU KHIEN KHOI PHIM BAM ------

	MOV	C,TRAI_TREN
	MOV	DC1_THUAN,C
	MOV	C,TRAI_DUOI
	MOV	DC1_NGUOC,C

	MOV	C,LEN_TREN
	MOV	DC2_THUAN,C
	MOV	C,XUONG_DUOI
	MOV	DC2_NGUOC,C

	
	MOV	C,VUONG
	MOV	DC3_THUAN,C
	MOV	C,TRON
	MOV	DC3_NGUOC,C


	MOV	C,TAM_GIAC
	MOV	DC4_THUAN,C
	MOV	C,GACH_CHEO
	MOV	DC4_NGUOC,C

	JB	START,EXIT_RL
	SJMP	$
EXIT_RL:
RET

;-------------------------------------------------
HIENTHI:

	CALL	CLRWDT
	CALL	CLRSCR

	MOV	A,PsxLX
	CALL	PUTS_A
	MOV	A,#'-'
	CALL	DATAWRT

	MOV	A,PsxLY
	CALL	PUTS_A
	MOV	A,#'-'
	CALL	DATAWRT

	MOV	A,PsxRX
	CALL	PUTS_A	
	MOV	A,#'-'
	CALL	DATAWRT

	MOV	A,PsxRY
	CALL	PUTS_A

	CALL	ENTER

	MOV	A,PsxStatus
	CALL	PUTS_A
	MOV	A,#'-'
	CALL	DATAWRT

	MOV	A,PsxVer
	CALL	PUTS_A
	MOV	A,#'-'
	CALL	DATAWRT

	MOV	A,PsxBT1
	CALL	PUTS_A
	MOV	A,#'-'
	CALL	DATAWRT

	MOV	A,PsxBT2
	CALL	PUTS_A	

RET



;>>>>>>-------------------------------------------------
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Nhom cac ham xu ly PSX
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Psx_Process:

	CALL	CLRWDT
	SETB fReady
	SETB fAnalog

	SETB PsCom
	SETB PsClk
	CLR PsATT				; Dua ATT xuong
	MOV A,#01h
	CALL Ps_Access

	MOV A,#42h
	CALL Ps_Access
	MOV PsxVer,B				; Expect to read 41h or 73h
	MOV R2,B
	CJNE R2,#73h,NoEqual01_PP
	JMP Cont01_PP				; Analog mode on
 NoEqual01_PP:
	CLR fAnalog
	MOV PsxLX,#128
	MOV PsxLY,#128
	MOV PsxRX,#128
	MOV PsxRY,#128
 Cont01_PP:
	MOV A,#0h
	CALL Ps_Access
	MOV PsxStatus,B
	MOV R2,B
	CJNE R2,#5Ah,NoEqual02_PP
	JMP Cont02_PP				; Neu Joystic chua ready thi CLR fReady va thoat
 NoEqual02_PP:
	CLR fReady
	RET
 Cont02_PP:
	MOV A,#0h				; SLCT JOYR JOYL STRT UP   RGHT DOWN LEFT
	CALL Ps_Access
	MOV PsxBt1,B

	MOV A,#0h				; L2   R2   L1   R1   /\   O    X    |_|
	CALL Ps_Access
	MOV PsxBt2,B
						; Neu khong o analog mode thi khong doc ve nua
	JNB fAnalog,EndRead_PP
	
	MOV A,#0h				; Right Joy 0x00 = Left  0xFF = Right
	CALL Ps_Access
	MOV PsxRX,B

	MOV A,#0h				; Right Joy 0x00 = Up    0xFF = Down
	CALL Ps_Access
	MOV PsxRY,B

	MOV A,#0h				; Left Joy  0x00 = Left  0xFF = Right
	CALL Ps_Access
	MOV PsxLX,B

	MOV A,#0h				; Left Joy  0x00 = Up  0xFF = Down
	CALL Ps_Access
	MOV PsxLY,B
 EndRead_PP:	
	SETB PsATT
RET

;>>>>>>-------------------------------------------------
; Transmit data store in A and record PSX data and store it in B
Ps_Access:
	MOV R2,#8
Loop_PA:
	RRC A
	MOV PsCom,C
	CALL CLK_Low
	XCH A,B
	MOV C,PsData
	RRC A
	XCH A,B
	CALL CLK_High
	DJNZ R2,Loop_PA
	MOV R2,#50
	DJNZ R2,$
RET
;>>>>>>-------------------------------------------------
CLK_Low:
	CLR PsCLK			; Dua xung xuong
	JB  PsCLK,$			; Doi xung xuong han
RET
;>>>>>>-------------------------------------------------
CLK_High:
	SETB PsCLK			; Dua xung len
	JNB  PsCLK,$			; Doi xung len han
RET

;-------------------------------------------------
MESSAGE:
	CALL	CLRSCR
	CALL	DELAY1S
	MOV	DPTR,#TEXT1
	CALL	DISPLAY
	CALL	ENTER
	MOV	DPTR,#TEXT2
	CALL	DISPLAY
	CALL	DELAY1S
	SJMP	MESSAGE
	JB	P3.6,NOCOPYRIGHT
	CALL	CLRSCR
	MOV	DPTR,#TEXT3
	CALL	DISPLAY
	CALL	ENTER
	MOV	DPTR,#TEXT4
	CALL	DISPLAY

WAIT:
	CALL	CLRWDT
;	JNB	P3.6,WAIT
	CALL	DELAY1S
	CALL	DELAY1S
	CALL	DELAY1S
	CALL	DELAY1S
	CALL	DELAY1S
	CALL	DELAY1S
NOCOPYRIGHT:
RET
;-------------------------------------------------
INITLCD:
	CALL	CLRWDT
	MOV	A,#00000010B
	CALL	COMNWRT
	MOV	A,#00101000B
	CALL	COMNWRT
	MOV	A,#00001100B
	ACALL	COMNWRT
RET
;-------------------------------------------------
DISPLAY:
	CALL	CLRWDT
 LOOP:
	ACALL	DELAY
	CLR	A
	MOVC	A,@A+DPTR
	JZ	EXIT
	ACALL	DATAWRT
	INC	DPTR
	SJMP LOOP
 EXIT:
 	RET
;-------------------------------------------------
COMNWRT:
	MOV	TEMP,A		;00000010B
	ANL	A,#11110000B
	MOV	LCDDATA,A
	SETB	LCDE
	NOP
	CLR	LCDE
	MOV	A,TEMP
	SWAP	A
	ANL	A,#11110000B
	MOV	LCDDATA,A
	SETB	LCDE
	NOP
	CLR	LCDE
	LCALL	DELAY50
	RET
;-------------------------------------------------
DATAWRT:
	MOV	TEMP,A
	ANL	A,#11110000B
	SETB	ACC.0
	MOV	LCDDATA,A
	SETB	LCDE
	NOP
	CLR	LCDE

	MOV	A,TEMP
	SWAP	A
	ANL	A,#11110000B
	SETB	ACC.0
	MOV	LCDDATA,A
	SETB	LCDE
	NOP
	CLR	LCDE
	LCALL	DELAY50
	RET
;-------------------------------------------------
PUTSTRING:
	CALL	CLRWDT
 LOOP_PS:
	CLR	A
	MOVC	A,@A+DPTR
	JZ	EXIT_PS
	ACALL	DATAWRT
	INC	DPTR
	SJMP LOOP_PS
 EXIT_PS:
RET
;-------------------------------------------------
ENTER:
	MOV	A,#0C0h
	CALL	COMNWRT
	RET
;-------------------------------------------------
POINTER_BACK:
	PUSH	ACC
	MOV	A,#0C0h
	CALL	COMNWRT
	POP	ACC
RET
;-------------------------------------------------
CLRSCR:
	PUSH	ACC
	MOV	A,#01h
	CALL	COMNWRT
	MOV	B,#6
	CALL	DELAYB
	POP	ACC
RET
;-------------------------------------------------
BACK_SPACE:

RET
;-------------------------------------------------
PUTS_A:
	PUSH	0
	PUSH	1
	PUSH	ACC
	MOV	R0,#3
	MOV	R1,#TEMP1
LOOP_A:
	MOV	B,#10
	DIV	AB
	PUSH	ACC
	MOV	A,#30h
	ADD	A,B
	MOV	@R1,A
	INC	R1
	POP	ACC
	DJNZ	R0,LOOP_A

	MOV	R0,#3
LOOP_B:
	DEC	R1
	MOV	A,@R1
	ACALL	DATAWRT
	DJNZ	R0,LOOP_B
	POP	ACC
	POP	1
	POP	0
RET
;-------------------------------------------------
CLRWDT:
	MOV	WDTRST,#01Eh
	MOV	WDTRST,#0E1h
RET

;-------------------------------------------------
DELAY:
	MOV	R3,#50
D1:	MOV	R4,#250
	DJNZ	R4,$
	DJNZ	R3,D1
	RET
DELAY50:
	PUSH	4
	MOV	R4,#50
	DJNZ	R4,$
	POP	4
	RET
DELAYB:
	PUSH	4

DLB:	MOV	R4,#255
	DJNZ	R4,$
	DJNZ	B,DLB
	POP	4
	RET

DELAY1S:
	CALL	CLRWDT
	MOV	R5,#4
D2:	MOV	R3,#250
D3:	MOV	R4,#250
	DJNZ	R4,$
	DJNZ	R3,D3
	DJNZ	R5,D2
RET
DELAYuS:
	MOV	R3,#50
	DJNZ	R3,$
RET

;-------------------------------------------------

TEXT1:
	DB	"-d7KQ#1-VO DICH-",0
TEXT2:
	DB	"--ROBOCON 2007--",0
TEXT3:
	DB	"   VO DICH   ",0
TEXT4:
	DB	"     ",0
;--------------------------------------------------
END

thay đổi nội dung bởi: namqn, 24-12-2006 lúc 08:40 PM.
pham_dinh_hung83 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 07:52 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam