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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 02-06-2006, 11:49 PM   #1
thang0105
Nhập môn đệ tử
 
Tham gia ngày: Jun 2006
Bài gửi: 4
:
Arrow Mạch mô phỏng đèn giao thông

Chào các anh chị em, mình cũng vừa mới nghiên cứu về PIC16F84A và ứng dụng vào mô phỏng một mạch đèn giao thông có đếm số. Mình dùng thêm con 7447 để giải mã Led 7 đoạn và con 74138,74139 để phân kênh
Mạch mô phỏng mình dùng PROTEUS đễ vẽ. Còn đoạn code thì dùng chương trình MPLAB viết. Tuy nhiên vì sản phẩm đầu tay về con PIC nên đoạn mã chưa chạy, cũng chưa biết sai chỗ nào. Ở đây mình chỉ đơn thuần là xuất các chân trên các Port cho các Led sáng, sau đó delay một khoảng thời gian, và cứ như vậy theo phương pháp quét Led.
Nào, anh chị em cùng ra tay giúp đỡ lính mới nhé.
Hình Kèm Theo
File Type: jpg mach den giao thong.jpg (551.7 KB, 3514 lần tải)
File Kèm Theo
File Type: txt code chtrinh.txt (17.5 KB, 2181 lần tải)
thang0105 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-06-2006, 10:37 AM   #2
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Đây là phần đầu code của bạn (Do dài quá diễn đàn cấm nếu số ký tự vượt giới hạn):
Code:
		LIST		P=16F84A
		INCLUDE		P16F84A.INC
REG_L	EQU			0x0C
REG_M	EQU			0X0D
REG_H	EQU			0X0E
		ORG		0X00
		CALL		SET_PORTS
		
;...............................LUOT 1.....................................;

LOOP
LOOP1	;...LED1:1...LED2:3...DO...LED3:1...LED4:0...XANH...;
		MOVLW		B'10000000'		;LED1: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'11000001'		;LED2: 3;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'10000010'		;LED3: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000011'		;LED4: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS	
		CALL		DELAY
		GOTO		LOOP1
		RETURN
;...............................................................................;
LOOP2	;...LED1:1...LED2:2...DO...LED3:0...LED4:9...XANH...;
		MOVLW		B'10000000'		;LED1: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'01000001'		;LED2: 2;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'10010011'		;LED4: 9;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS
		CALL		DELAY
		GOTO		LOOP2
		RETURN
;...................................................................................;
LOOP3	;...LED1:1...LED2:1...DO...LED3:0...LED4:8...XANH...;
		MOVLW		B'10000000'		;LED1: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'01000001'		;LED2: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00010011'		;LED4: 8;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS
		CALL		DELAY
		GOTO		LOOP3
		RETURN
;.................................................................................;
LOOP4	;...LED1:1...LED2:0...DO...LED3:0...LED4:7...XANH...;
		MOVLW		B'10000000'		;LED1: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000001'		;LED2: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'11100011'		;LED4: 7;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS	
		CALL		DELAY
		GOTO		LOOP4
		RETURN
;....................................................................................;
LOOP5	;...LED1:0...LED2:9...DO...LED3:0...LED4:6...XANH...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'10010001'		;LED2: 9;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'01100011'		;LED4: 6;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS	
		CALL		DELAY
		GOTO		LOOP5
		RETURN
;...................................................................................;
LOOP6	;...LED1:0...LED2:8...DO...LED3:0...LED4:5...XANH...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00010001'		;LED2: 8;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'10100011'		;LED4: 5;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS	
		CALL		DELAY
		GOTO		LOOP6
		RETURN
;................................................................................;
LOOP7	;...LED1:0...LED2:7...DO...LED3:0...LED4:4...XANH...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'11100001'		;LED2: 7;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00100011'		;LED4: 4;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS	
		CALL		DELAY
		GOTO		LOOP7
		RETURN
;...............................................................................;
LOOP8	;...LED1:0...LED2:6...DO...LED3:0...LED4:3...XANH...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'01100001'		;LED2: 6;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'11000011'		;LED4: 3;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS	
		CALL		DELAY
		GOTO		LOOP8
		RETURN
;.............................................................................;
LOOP9	;...LED1:0...LED2:5...DO...LED3:0...LED4:2...XANH...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'10100001'		;LED2: 5;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'01000011'		;LED4: 2;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS	
		CALL		DELAY
		GOTO		LOOP9
		RETURN
;........................................................................;
LOOP10	;...LED1:0...LED2:4...DO...LED3:0...LED4:1...XANH...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00100001'		;LED2: 4;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'10000011'		;LED4: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOP10
		RETURN

;...........................................................................;
LOOP11	;...LED1:0...LED2:3...DO...LED3:0...LED4:0...XANH...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'11000001'		;LED2: 3;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000011'		;LED4: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOP11
		RETURN
;...........................................................................;
LOOP12	;...LED1:0...LED2:2...DO...LED3:0...LED4:2...VANG...;
		MOVLW		B'10000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'11000011'		;LED2: 2;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'10000100'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000111'		;LED4: 2;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000100'		;LED VANG;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOP12
		RETURN
;...........................................................................;
LOOP13	;...LED1:0...LED2:1...DO...LED3:0...LED4:1...VANG...;
		MOVLW		B'10000001'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'11000011'		;LED2: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'10000100'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000111'		;LED4: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000100'		;LED VANG;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOP13
		RETURN
;.............................................................................;
LOOP14	;...LED1:0...LED2:0...DO...LED3:0...LED4:0...VANG...;
		MOVLW		B'10000001'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'11000011'		;LED2: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'10000100'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000111'		;LED4: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000100'		;LED VANG;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOP14
		RETURN
;.......................HET LUOT 1..................................;
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263
nhh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-04-2009, 10:06 AM   #3
sonba
Nhập môn đệ tử
 
Tham gia ngày: Apr 2009
Bài gửi: 2
:
Trích:
Nguyên văn bởi nhh View Post
Đây là phần đầu code của bạn (Do dài quá diễn đàn cấm nếu số ký tự vượt giới hạn):
Code:
		LIST		P=16F84A
		INCLUDE		P16F84A.INC
REG_L	EQU			0x0C
REG_M	EQU			0X0D
REG_H	EQU			0X0E
		ORG		0X00
		CALL		SET_PORTS
		
;...............................LUOT 1.....................................;

LOOP
LOOP1	;...LED1:1...LED2:3...DO...LED3:1...LED4:0...XANH...;
		MOVLW		B'10000000'		;LED1: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'11000001'		;LED2: 3;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'10000010'		;LED3: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000011'		;LED4: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS	
		CALL		DELAY
		GOTO		LOOP1
		RETURN
;...............................................................................;
LOOP2	;...LED1:1...LED2:2...DO...LED3:0...LED4:9...XANH...;
		MOVLW		B'10000000'		;LED1: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'01000001'		;LED2: 2;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'10010011'		;LED4: 9;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS
		CALL		DELAY
		GOTO		LOOP2
		RETURN
;...................................................................................;
LOOP3	;...LED1:1...LED2:1...DO...LED3:0...LED4:8...XANH...;
		MOVLW		B'10000000'		;LED1: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'01000001'		;LED2: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00010011'		;LED4: 8;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS
		CALL		DELAY
		GOTO		LOOP3
		RETURN
;.................................................................................;
LOOP4	;...LED1:1...LED2:0...DO...LED3:0...LED4:7...XANH...;
		MOVLW		B'10000000'		;LED1: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000001'		;LED2: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'11100011'		;LED4: 7;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS	
		CALL		DELAY
		GOTO		LOOP4
		RETURN
;....................................................................................;
LOOP5	;...LED1:0...LED2:9...DO...LED3:0...LED4:6...XANH...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'10010001'		;LED2: 9;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'01100011'		;LED4: 6;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS	
		CALL		DELAY
		GOTO		LOOP5
		RETURN
;...................................................................................;
LOOP6	;...LED1:0...LED2:8...DO...LED3:0...LED4:5...XANH...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00010001'		;LED2: 8;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'10100011'		;LED4: 5;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS	
		CALL		DELAY
		GOTO		LOOP6
		RETURN
;................................................................................;
LOOP7	;...LED1:0...LED2:7...DO...LED3:0...LED4:4...XANH...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'11100001'		;LED2: 7;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00100011'		;LED4: 4;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS	
		CALL		DELAY
		GOTO		LOOP7
		RETURN
;...............................................................................;
LOOP8	;...LED1:0...LED2:6...DO...LED3:0...LED4:3...XANH...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'01100001'		;LED2: 6;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'11000011'		;LED4: 3;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS	
		CALL		DELAY
		GOTO		LOOP8
		RETURN
;.............................................................................;
LOOP9	;...LED1:0...LED2:5...DO...LED3:0...LED4:2...XANH...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'10100001'		;LED2: 5;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'01000011'		;LED4: 2;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS	
		CALL		DELAY
		GOTO		LOOP9
		RETURN
;........................................................................;
LOOP10	;...LED1:0...LED2:4...DO...LED3:0...LED4:1...XANH...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00100001'		;LED2: 4;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'10000011'		;LED4: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOP10
		RETURN

;...........................................................................;
LOOP11	;...LED1:0...LED2:3...DO...LED3:0...LED4:0...XANH...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'11000001'		;LED2: 3;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000011'		;LED4: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000101'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOP11
		RETURN
;...........................................................................;
LOOP12	;...LED1:0...LED2:2...DO...LED3:0...LED4:2...VANG...;
		MOVLW		B'10000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'11000011'		;LED2: 2;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'10000100'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000111'		;LED4: 2;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000100'		;LED VANG;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOP12
		RETURN
;...........................................................................;
LOOP13	;...LED1:0...LED2:1...DO...LED3:0...LED4:1...VANG...;
		MOVLW		B'10000001'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'11000011'		;LED2: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'10000100'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000111'		;LED4: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000100'		;LED VANG;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOP13
		RETURN
;.............................................................................;
LOOP14	;...LED1:0...LED2:0...DO...LED3:0...LED4:0...VANG...;
		MOVLW		B'10000001'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'11000011'		;LED2: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'10000100'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000111'		;LED4: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000000'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000100'		;LED VANG;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOP14
		RETURN
;.......................HET LUOT 1..................................;
lam on guip toi co ai co mach den giao thong chay nhu the nay hog <ve plc ha>
khi bat cong tac on thi den xanh sang truoc' 10s sau do den vàng sang 8s sau do den đỏ sáng 2s , ai giup toi di
sonba vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-06-2006, 10:38 AM   #4
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Phần còn lại:
Code:
;.......................LUOT 2......................................;
LOOPA	;...LED1:1...LED2:0...XANH...LED3:1...LED4:3...DO...;
		MOVLW		B'10000000'		;LED1: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000001'		;LED2: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'10000010'		;LED3: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'11000011'		;LED4: 3;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000010'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000011'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOPA
		RETURN
;......................................................................;
LOOPB	;...LED1:0...LED2:9...XANH...LED3:1...LED4:2...DO...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'10010001'		;LED2: 9;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'10000010'		;LED3: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'01000011'		;LED4: 2;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000010'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000011'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOPB
		RETURN
;......................................................................;
LOOPC	;...LED1:0...LED2:8...XANH...LED3:1...LED4:1...DO...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00010001'		;LED2: 8;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'10000010'		;LED3: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'10000011'		;LED4: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000010'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000011'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOPC
		RETURN
;......................................................................;
LOOPD	;...LED1:0...LED2:7...XANH...LED3:1...LED4:0...DO...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'11100001'		;LED2: 7;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'10000100'		;LED3: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000011'		;LED4: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000010'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000011'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOPD
		RETURN
;......................................................................;
LOOPE	;...LED1:0...LED2:6...XANH...LED3:0...LED4:9...DO...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'01100001'		;LED2: 6;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'10010011'		;LED4: 9;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000010'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000011'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOPE
		RETURN
;......................................................................;
LOOPF	;...LED1:0...LED2:5...XANH...LED3:0...LED4:8...DO...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'10100001'		;LED2: 5;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00010011'		;LED4: 8;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000010'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000011'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOPF
		RETURN
;......................................................................;
LOOPG	;...LED1:0...LED2:4...XANH...LED3:0...LED4:7...DO...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00100001'		;LED2: 4;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'11100011'		;LED4: 7;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000010'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000011'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOPG
		RETURN
;......................................................................;
LOOPH	;...LED1:0...LED2:3...XANH...LED3:0...LED4:6...DO...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'11000001'		;LED2: 3;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'01100011'		;LED4: 6;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000010'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000011'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOPH
		RETURN
;......................................................................;
LOOPI	;...LED1:0...LED2:2...XANH...LED3:0...LED4:5...DO...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'01000001'		;LED2: 2;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'10100011'		;LED4: 5;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000010'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000011'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOPI
		RETURN
;......................................................................;
LOOPJ	;...LED1:0...LED2:1...XANH...LED3:0...LED4:4...DO...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'10000001'		;LED2: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00100011'		;LED4: 4;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000010'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000011'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOPJ
		RETURN
;......................................................................;
LOOPK	;...LED1:0...LED2:0...XANH...LED3:0...LED4:3...DO...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000001'		;LED2: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000011'		;LED4: 3;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000010'		;LED XANH;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000011'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOPK
		RETURN
;......................................................................;
LOOPL	;...LED1:0...LED2:2...VANG...LED3:0...LED4:2...DO...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'01000001'		;LED2: 2;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'01000011'		;LED4: 2;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000001'		;LED VANG;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000011'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOPL
		RETURN
;......................................................................;
LOOPM	;...LED1:0...LED2:1...VANG...LED3:0...LED4:1...DO...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'10000001'		;LED2: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'10000011'		;LED4: 1;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000001'		;LED VANG;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000011'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOPM
		RETURN
;......................................................................;
LOOPN	;...LED1:0...LED2:0...VANG...LED3:0...LED4:0...DO...;
		MOVLW		B'00000000'		;LED1: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000001'		;LED2: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS
		MOVLW		B'00000010'		;LED3: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000011'		;LED4: 0;
		MOVWF		PORTB
		CALL		DELAY_10uS	
		MOVLW		B'00000001'		;LED VANG;
		MOVWF		PORTA
		CALL		DELAY_10uS
		MOVLW		B'00000011'		;LED DO;
		MOVWF		PORTA
		CALL		DELAY_10uS		
		CALL		DELAY
		GOTO		LOOPN
		RETURN
;...............................................HET LUOT 2.....................................;
		GOTO		LOOP
;........................................SET PORTS.............................................;
SET_PORTS		
		CLRW				
		MOVWF		PORTB
		BSF			STATUS,RP0
		CLRW		
		MOVLW		TRISA
		CLRW
		MOVLW		TRISB
		BCF			STATUS,RP0
		RETURN

;..........................................TAO HAM DELAY_1mS..................................;
DELAY_1mS
		CLRF		REG_H
HERE	NOP
		DECFSZ		REG_H
		GOTO		HERE
		RETURN
;..........................................TAO HAM DELAY 3mS.................................;
DELAY_10uS
		CALL		DELAY_1mS
		CALL		DELAY_1mS
		CALL		DELAY_1mS
		RETURN
;..........................................TAO HAM DELAY...................................;
DELAY
		CLRW	
		MOVLW		B'10110100'
		MOVWF		REG_L
		DECFSZ		REG_L
		RETURN
;.............................................................................................;
		END
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263
nhh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-06-2006, 10:50 AM   #5
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Xem nào !

Đầu tiên là các vòng lặp LOOPx của bạn tại sao lại kết thúc bằng return.Chỉ khi nào dùng lệnh call nhãn thì cuối nhãn đó bạn phải đặt lệnh return để nó quay trở về khi thực hiện xong.

Trong mỗi vòng lặp LOOPx, bạn đều dùng lệnh GOTO LOOPx ở cuối.Nghĩa là với vòng lặp LOOP1 đầu tiên nếu viết đúng thì nó cứ lặp đi lặp lại những gì trong vòng lặp này chứ có nhảy tới vòng lặp LOOP nào khác nữa đâu.

Từ Nhãn SET_PORTS trở đi là OK rồi.

Bạn xem kĩ nhé!
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263
nhh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-06-2006, 11:15 AM   #6
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
À ! Còn một lỗi cực kì quan trọng khiến chương trình mô phỏng của bạn bị tịt ngòi.

Đoạn cuối cùng code của bạn:
Code:
;..........................................TAO HAM DELAY...................................;
DELAY
		CLRW	
		MOVLW		B'10110100'
		MOVWF		REG_L
		DECFSZ		REG_L
		RETURN
;.............................................................................................;
		END
Lệnh DECFSZ (Decrement F skip if zero):có cấu trúc như sau:
Trích:
DECFSZ bien,d
LENH1
LENH2
Lệnh này sẽ giảm bien xuống 1 đơn vị, nếu bien khác 0 thì LENH1 được thực thi, nếu bien bằng 0 thì LENH1 được bỏ qua, nghĩa là LENH2 được thực thi.

d nhận một trong hai giá trị 0 hoặc 1
Nếu d=0, kết quả giảm bien se được lưu vào thanh ghi W (bien -> W),
Nếu d=1, kết quả giảm bien sẽ được lưu vào bien (bien -> bien)
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263

thay đổi nội dung bởi: nhh, 03-06-2006 lúc 06:03 PM. Lý do: = mistake
nhh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-06-2006, 01:51 PM   #7
thang0105
Nhập môn đệ tử
 
Tham gia ngày: Jun 2006
Bài gửi: 4
:
Hay quá, vậy mà mình cứ tìm hoài không ra, để mình thử lại xem sao rồi nhắn lại cho anh em biết nhé. Cảm ơn bạn "nhh" nhiều.
thang0105 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-06-2006, 02:29 PM   #8
thang0105
Nhập môn đệ tử
 
Tham gia ngày: Jun 2006
Bài gửi: 4
:
Ban "nhh" cho mình hỏi tiếp nhé. Mình đã chỉnh sửa lại đoạn code rồi. Mình có gởi kèm đoạn code cho bạn xem đấy. Mình đã bỏ phần: Tạo hàm Delay, mà thay vào đó là viết luôn vào các Loop, tuy nhiên trình biên dịch MPLAB vẫn còn báo lỗi. Lần này lại phải nhờ tiếp đến bạn "nhh" và các anh chị em nữa rồi, giúp đỡ anh em với nhé.
File Kèm Theo
File Type: txt code 2.txt (570 Bytes, 271 lần tải)
thang0105 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-06-2006, 06:56 PM   #9
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Trích:
Nguyên văn bởi thang0105
Ban "nhh" cho mình hỏi tiếp nhé. Mình đã chỉnh sửa lại đoạn code rồi. Mình có gởi kèm đoạn code cho bạn xem đấy. Mình đã bỏ phần: Tạo hàm Delay, mà thay vào đó là viết luôn vào các Loop, tuy nhiên trình biên dịch MPLAB vẫn còn báo lỗi. Lần này lại phải nhờ tiếp đến bạn "nhh" và các anh chị em nữa rồi, giúp đỡ anh em với nhé.
Mình vừa edit lại bài gởi trên kia, có nhầm lẫn về sử dụng lệnh DECFSZ, những chỗ nào bạn sử dụng lệnh này thì phải sửa lại cho đúng.Ví dụ như sau:
Code:
LOOP1		
        DECFSZ	REG_L,1            ;có thể thay số 1 bằng chữ F, số 0 bằng chữ W
	GOTO	LOOP1
	GOTO	LOOP2
Một điều nữa trong phần SET_POTRTS, bạn khai báo còn lằn nhằn lắm.Tham khảo các set chân IO trong đoạn code sau:
Code:
        BCF 	STATUS,RP1
	BSF 	STATUS,RP0 	; chon BANK 1 = cách xóa bit RP1, set bit RP0
        CLRF	TRISA           ; toàn bộ PORTA là output nè.
	MOVLW	b'11110000'	
	MOVWF	TRISB		;Bit nào bằng 1, chân tương ứng là input, 
				;ngược lại bằng 0 là output.Chân RB0 = output, RB6 = input,....	
	BCF 	STATUS,RP0 	; chon BANK 0 = cách xóa bit RP0, xóa bit RP1; ở đây RP1 bằng 0 rồi nên không cần.
Bạn phải nắm chắc phần này, nếu không sẽ gặp rắc rối lắm đó.Để viết được chương trình đèn giao thông, có led 7 thanh không phải đơn giản.Trước tiên bạn phải xuất nhập port thành thạo đã, tiếp đến là làm phần delay, tức tạo trễ.

Chương trình sau sẽ làm sáng bừng 8 con led nối với portb của PIC6F84 qua 8 điện trở 220 Ohm:
Code:
;====================================================================
;Auhor:		NHH
;Date:		10/02/06
;Hardware:	PIC16F84 
		;XTAL 10MHz, PORTB noi voi 8 LED qua 8 dien tro 220Ohm 
;======================================================================
	TITLE 		"ON-LED"
	PROCESSOR	PIC16f84 
	INCLUDE<P16f84.inc> 
	__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _WRT_OFF & _CPD_OFF &_LVP_OFF

;=========================CHUONG TRINH CHINH=========================
	ORG 0x000
	GOTO 	MAIN

MAIN
	BCF STATUS,RP1
	BSF STATUS,RP0 		; select BANK 1
	CLRF TRISB 		; PORTB output
	BCF STATUS,RP0 		;  select BANK 0

	MOVLW	d'255'
	MOVWF	PORTB 		;  sáng 8 led đi nào!		
	END
Thật là đơn giản phải không!

Còn đây là chương trình nhấp nháy 8 con led trong trường hợp trên, thời gian trễ là 1s
Code:
;========================================
;Auhor:		NHH
;Date:		10/02/06
;Hardware:	PIC16F84 
		;XTAL 10MHz, PORTB noi voi 8 LED qua 8 dien tro 220Ohm 
;========================================
	TITLE 		"ON-OFF LED 1 SECOND"
	PROCESSOR	PIC16f84 
	INCLUDE<P16f84.inc> 
	__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _WRT_OFF & _CPD_OFF &_LVP_OFF
;=============================================================================	
	COUNT1 EQU 0x20
	COUNT2 EQU 0x21
	COUNT3 EQU 0x22
;=========================CHUONG TRINH CHINH=========================
	ORG 0x000
	GOTO 	MAIN

MAIN
	BCF STATUS,RP1
	BSF STATUS,RP0 		; select BANK 1
	CLRF TRISB 		; PORTB output
	BCF STATUS,RP0 		;  select BANK 0

	MOVLW	d'255'
	MOVWF	COUNT1		;<-COUNT1=255	
	MOVWF	COUNT2		;<-COUNT2=255
NEXT	
	MOVLW	d'14'
	MOVWF	COUNT3		;<-COUNT3=13
	MOVLW	b'11111111'	;LED ON
	MOVWF	PORTB
	CALL	LOOP

	MOVLW	d'14'
	MOVWF	COUNT3		;<-COUNT3=13
	MOVLW	b'00000000'	;LED OFF
	MOVWF	PORTB	
	CALL	LOOP
	
	GOTO	NEXT		
;========================CHUONG TRINH CON====================
LOOP
	DECFSZ	COUNT1,1
	GOTO	LOOP
	DECFSZ	COUNT2,1
	GOTO	LOOP
	DECFSZ	COUNT3,1
	GOTO	LOOP		
	RETURN
		
	END
Chỉ cần bạn viết được chương trình nhấp nháy led như trên thì vấn đề của bạn đã được giải quyết rồi !
Chúc học tốt nhé!
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263

thay đổi nội dung bởi: nhh, 03-06-2006 lúc 06:59 PM. Lý do: Nothing
nhh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-11-2006, 02:29 PM   #10
khoadang01
Nhập môn đệ tử
 
Tham gia ngày: Nov 2006
Bài gửi: 1
:
chào các anh chị ,có ai có tai lieu ve vấn đề nay thi gưi cho em với , em đang làm đồ án mạch đèn giao thông do.cam ơn
khoadang01 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-11-2006, 05:13 PM   #11
dunghpc
Đệ tử 2 túi
 
Tham gia ngày: Nov 2005
Bài gửi: 39
:
Smile

Bác Nhh nên dùng ngắt Timer1 để viết cho chương trình nhấp nháy vừa ngắn gọn lại hiệu quả. Viết như vậy không xứng danh với đệ tử 9 túi.

Tại chương trình ngắt timer0 ta kiểm tra timer1 (Để tràn Timer1 là 0,5s)
để tạo ngắt Timer0 0,5ms (đối với thạch anh 4MHz) bạn đưa 0xa0 vào thanh ghi INTCON, đưa 0x80 vào thanh ghi Option_Reg. Để tạo tràn timer1 0,5s bạn đưa 0x31 vào thanh ghi t1con ngay đầu Init chương trình
ví dụ trong chương trình sử dụng ngắt Timer0, Dùng thạch anh trong Chip = 4Mhz.

thay đổi nội dung bởi: dunghpc, 09-11-2006 lúc 05:19 PM.
dunghpc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-11-2006, 05:18 PM   #12
dunghpc
Đệ tử 2 túi
 
Tham gia ngày: Nov 2005
Bài gửi: 39
:
ví dụ trong chương trình sử dụng ngắt Timer0, Dùng thạch anh trong Chip = 4Mhz.
;---------------------------------------------------------------------
list p=pic16f627A, r=dec
#include <p16f627A.inc>
#include <Comm.h>
__CONFIG _BODEN_OFF & _CP_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_CLKOUT & _LVP_OFF & _MCLRE_OFF

atris = 0x00
btris = 0x00

;Files define

org 0x0 ; Khi reset chip
goto Init
org 0x4 ; Địa chỉ ngắt Timer0
nop
clrwdt ; cấm WD
btfsc pir1,tmr1if
call T1Int ; Có cờ tràn Timer1
bcf intcon,tmr0if ; Xóa cờ ngắt Timer0
T0End retfie ; Kết thúc chương trình ngắt Timer0
;---------------------
T1Int bcf pir1,tmr1if
movlw 0xff
xorwf portb,f ; 8 Led nhấp nháy với tần số ~ 1Hz
return
;---------------------
;---------------------
Init call PortInit
call TimerInit
Loop
goto Loop
;----------------------
;----------------------
PortInit call rBank0
movlw 0x7
movwf cmcon ; All Pin are digital
movlw 0xf
movwf pcon
call rBank1
movlw 0x80
movwf option_reg ;Timer0 Interrupt ~ 0.5 ms
movlw atris
movwf trisa
movlw btris
movwf trisb
goto rBank0
;------------------------
TimerInit movlw 0xa0
movwf intcon ; Ngắt Timer0
movlw 0x31
movwf t1con ; Tràn Timer1 = 0,5s
return
;-------------------------
;----------------------------
rBank0 bcf status,rp0
bcf status,rp1
return
;---------------------
rBank1 bsf status,rp0
bcf status,rp1
return
;---------------------
end
;----------------------
dunghpc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-04-2009, 11:31 AM   #13
thongyloan
Nhập môn đệ tử
 
Tham gia ngày: Apr 2009
Bài gửi: 3
:
ẹc
ai có mạch đèn giao thông có đếm ngược ko gởi dùm tui cái đi.Có led đếm ngược lun nghe .CẢM ƠN NHÌU NHÌU hEHHEHEHE
thongyloan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-04-2009, 10:54 PM   #14
andyhug
Đệ tử 1 túi
 
andyhug's Avatar
 
Tham gia ngày: Jun 2008
Nơi Cư Ngụ: Lê Duẩn - Hà Nội
Bài gửi: 23
:
Thumbs up Mạch đèn Giao Thông

Mình thấy chủ đề này không mới nhưng có nhiều bạn quan tâm, mới lục lại cái đồ án môn ngày xưa, post cho anh em đỡ phải mất thời gian mày mò, mạch này chạy ngon! Bây giờ bạn chỉ việc tập trung làm thêm phần giao tiếp máy tính cho phép thay đổi thời gian của các đèn là xong.
File Kèm Theo
File Type: doc Den GT.doc (97.0 KB, 772 lần tải)
File Type: rar DEFS_16F877A.rar (537 Bytes, 764 lần tải)
__________________
Sống ở trên đời cần phải có một tấm lòng để gió cuốn đi!
xxxxxxxxxxxxxxxxxxx Trịnh Công Sơn xxxxxxxxxxxxxxxxxxx

thay đổi nội dung bởi: andyhug, 11-04-2009 lúc 11:00 PM.
andyhug vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-04-2009, 11:09 AM   #15
thongyloan
Nhập môn đệ tử
 
Tham gia ngày: Apr 2009
Bài gửi: 3
:
ui cảm ơn bạn nhìu nha.mà bạn ơi bạn có đoạn mã nào viết bằng hợp ngữ không đầy đủ tí không pót dùm mình đi.Mình lần đầu lam nên chưa hiểu rõ lém.Híc
thongyloan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


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à 03:17 PM.


Đượ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