![]() |
|
Tài trợ cho PIC Vietnam |
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 |
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Jun 2006
Bài gửi: 4
: |
![]() 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é. |
![]() |
![]() |
![]() |
#2 |
Đệ tử 9 túi
|
Đâ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 |
![]() |
![]() |
![]() |
#3 |
Đệ tử 9 túi
|
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 |
![]() |
![]() |
![]() |
#4 |
Đệ tử 9 túi
|
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 |
![]() |
![]() |
![]() |
#5 | |
Đệ tử 9 túi
|
À ! 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 Trích:
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 |
|
![]() |
![]() |
![]() |
#6 |
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.
|
![]() |
![]() |
![]() |
#7 |
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é.
|
![]() |
![]() |
![]() |
#8 | |
Đệ tử 9 túi
|
Trích:
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 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. 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 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 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 |
|
![]() |
![]() |
![]() |
#9 |
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
|
![]() |
![]() |
![]() |
#10 |
Đệ tử 2 túi
Tham gia ngày: Nov 2005
Bài gửi: 39
: |
![]() 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. |
![]() |
![]() |
![]() |
#11 |
Đệ 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 ;---------------------- |
![]() |
![]() |
![]() |
#12 |
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 |
![]() |
![]() |
![]() |
#13 |
Đệ tử 1 túi
Tham gia ngày: Jun 2008
Nơi Cư Ngụ: Lê Duẩn - Hà Nội
Bài gửi: 23
: |
![]() 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.
__________________
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. |
![]() |
![]() |
![]() |
#14 |
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
|
![]() |
![]() |
![]() |
#15 |
Đệ tử 1 túi
Tham gia ngày: Jun 2008
Nơi Cư Ngụ: Lê Duẩn - Hà Nội
Bài gửi: 23
: |
Mình quen viết CCS C thôi, các tài liệu hướng dẫn hợp ngữ thì bạn tìm trong diễn đàn nhé, nhiều lắm!
__________________
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 |
![]() |
![]() |
![]() |
|
|