PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Cùng thảo luận về ASM và ứng dụng của PIC (http://www.picvietnam.com/forum/showthread.php?t=5245)

zero07a 06-11-2009 01:25 PM

Cùng thảo luận về ASM và ứng dụng của PIC
 
-em xin chào anh nhh và các anh.em mới học pic6f877a băng ASM nên muốn làm thưấmy cái mạch ứng dụng nhưng đang bí quá.Em rất mong anh em cùng nhau thảo luận về pic như thế này.
-em có vấn đề chưa hiểu mong anh các anh giúp đỡ em nghen.em đang làm thử cái mạch chạy chữ, dùng 2 con led matrix 8 nhan 8 dịch sang trái theo lập trình sẵn. em dùng 138 để quét cột, ngõ ra mắc với 8 con A1015 dùng port C, con 595 để xuất dữ liệu ra các cột dùng Port B. thì lý thuyết là vậy. nhưng bây giờ là cái code. do em mới học ASM à. nên việc viết code cái này em thấy hơi kho khó. em chỉ viết được chương trình đưa 8 byte(1 ký tự) xuất ra led thôi( dựa vào tài liệu co sẵn). chỉ là đưa byte ra thôi. nhưng em không biết nên thêm delay chỗ nào cho ảnh không bị giật hết ? với lại đó chỉ là 1 ký tự nên em viết dài vậy. còn mà em muốn lập trình cho chữ CHAU dịch trái chẳng hạn. thì viết như em chắc là die mất quá.em biết là cách của em là vô cùng dở, nhưng em chỉ mới tìm hiểu được nhiêu đó thôi. em có nghe nói là viết bảng table cho ký tự.nhưng em không hiểu viết bảng như thế nào cả.em nghĩ là lập bảng cho toàn bộ chữ CHAU.nhưng không biết lập như thế nào và liên kết như thế nào với đoạn chương trình chính? và cả delay nữa.em đang kẹt chỗ này.hichic.đây là code:
PROCESSOR 16F877A
INCLUDE <P16F877A.INC>
SENDREG EQU 20H
COUNT EQU 21H
#DEFINE DATA PORTB,0
#DEFINE CLOCK PORTB,1
#DEFINE CLEAR PORTB,2
#DEFINE LATCH PORTB,3
ORG 0000H
START
BCF STATUS,5
BCF STATUS,6
CLRF PORTB
CLRF PORTC
BSF STATUS,5
CLRF PORTB
CLRF PORTC
BCF STATUS,5
;-------------CHUONG TRINH-------------
MAIN
BSF PORTB,2
BCF CLEAR
NOP
BSF CLEAR
MOVLW 0FFH
CALL SEROUT
MOVLW D'0'
MOVWF PORTC
BSF LATCH
NOP
BCF LATCH
;-------------XONG BYTE1---------------
MOVLW 1H
CALL SEROUT
MOVLW D'1'
MOVWF PORTC
BSF LATCH
NOP
BCF LATCH
;-------------XONG BYTE2---------------
MOVLW 0H
CALL SEROUT
MOVLW D'2'
MOVWF PORTC
BSF LATCH
NOP
BCF LATCH
;-------------XONG BYTE3---------------
MOVLW 0CCH
CALL SEROUT
MOVLW D'3'
MOVWF PORTC
BSF LATCH
NOP
BCF LATCH
;-------------XONG BYTE4---------------
MOVLW 0CCH
CALL SEROUT
MOVLW D'4'
MOVWF PORTC
BSF LATCH
NOP
BCF LATCH
;-------------XONG BYTE5---------------
MOVLW 0H
CALL SEROUT
MOVLW D'5'
MOVWF PORTC
BSF LATCH
NOP
BCF LATCH
;-------------XONG BYTE6---------------
MOVLW 1H
CALL SEROUT
MOVLW D'6'
MOVWF PORTC
BSF LATCH
NOP
BCF LATCH
;-------------XONG BYTE7---------------
MOVLW 0FFH
CALL SEROUT
MOVLW D'7'
MOVWF PORTC
BSF LATCH
NOP
BCF LATCH
GOTO MAIN
SEROUT
MOVWF SENDREG
MOVLW 08H
MOVWF COUNT
TESTBIT
BCF DATA
BTFSC SENDREG,7
BSF DATA
BSF CLOCK
NOP
BCF CLOCK
RLF SENDREG
DECFSZ COUNT,1
GOTO TESTBIT
RETURN
END

trong room này em thấy nhiều anh rành về ASM ghê. em cứ thắc mắc hoài mà không biết hỏi đâu.các anh viết lại giúp em với. cho em biết là nên thêm chỗ nào và viết như thế nào là tối ưu nha. Sửa giúp em thì tốt quá cho em tham khảo
-Xong cái này em định viết chương trình hiển thị chữ ra led mt dùng bàn phím hex. mong được sự giúp đỡ của các anh. em xin cảm ơn trước.
dưới đây là file mô phỏng và code. em không up lên được nên phải làm vậy.các anh xem giúp em ngen.
code:
http://www.mediafire.com/download.php?omm32vqnmyi
mô phỏng:
http://www.mediafire.com/download.php?n5jo5uiim2g

namqn 06-11-2009 10:14 PM

Trích:

Nguyên văn bởi zero07a (Post 30916)
...
dưới đây là file mô phỏng và code. em không up lên được nên phải làm vậy.các anh xem giúp em ngen.
code:
http://www.mediafire.com/download.php?omm32vqnmyi
mô phỏng:
http://www.mediafire.com/download.php?n5jo5uiim2g

Bạn đọc hướng dẫn cách upload file lên diễn đàn tại đây:
http://www.picvietnam.com/forum/showthread.php?t=3289

Thân,

zero07a 07-11-2009 05:21 PM

Nhờ các anh giúp đỡ em cái ASM này
 
dạ em có làm vậy mà. biết bao nhiêu lần rồi mà có đươc đâu nên em mới up link lên đấy chứ. biết là up link như vậy là không được nhưng biết làm sao bây giờ.hichic. em quyết tâm không bỏ cuộc đâu. em lại viết chương trình nữ nè. giúp em với anh nampn ơi.
. Em đang thử viết chương trình hiên thử chữ A, em viết thử theo cách tra bảng. nhưng sao lạ quá. Tạo file hex thì ok. Còn vào proteus chẳng thấy chữ A nào hết vậy các anh?(em vẫn dùng mạch như đã Up phía trên). Hinh như là cái bảng của em là vô tác dụng hay sao đấy. em thấy CALL vậy là vẫn như bình thường nhưng sao chương trình không nhảy xuống được cái bảng này. Với lại em mô phỏng đã không được mà sao nó lại hiện ra cái cột đáng ghét ở con led thứ 2. em quyết tâm không bỏ cuộc đâu.nhưng sao toàn mắc lỗi không vậy ta.hic hic.các anh xem thử em đã sai nơi nào vậy. em không tìm ra được. dưới đây là đoạn chương trình(em có tham khảo):
PROCESSOR 16F877A
INCLUDE <P16F877A.INC>
;--------------------------------------------
;KHAI BAO BIEN
;--------------------------------------------
SENDREG EQU 20H
COUNT EQU 21H
COUNT_138 EQU 22H ;DEM CHO 138
COUNT_8BYTE EQU 23H ;DEM CHO 8BYTE
COUNT1 EQU 24H
COUNTA EQU 25H
COUNTB EQU 26H
;--------------------------------------------
;DINH NGHIA PHAN CUNG
;--------------------------------------------
#DEFINE DATA PORTB,0
#DEFINE CLOCK PORTB,1
#DEFINE CLEAR PORTB,2
#DEFINE LATCH PORTB,3
;--------------------------------------------
;CHUONG TRINH CHINH
;--------------------------------------------
ORG 0000H
START ;CHUONG TRINH CHINH
BCF STATUS,5
BCF STATUS,6
CLRF PORTB
CLRF PORTC
BSF STATUS,5
CLRF PORTB ;CHON BR3:RB0 LA OUTPUT
CLRF PORTC ;CHON RB2:RB0 LA INPUT
BCF STATUS,5 ;CHON BANK1
;============CHUONG TRINH CHINH==============
CLRF COUNT_138
CLRF COUNT_8BYTE
MAIN
MOVLW 04H
MOVWF PORTB ;DUA CHAN SCLK LEN CAO
MOVLW D'255'
MOVWF PORTC
BCF CLEAR ;RESET DU LIEU TRONG 74HC595
NOP ;clear tac dong canh XUONG
BSF CLEAR ;DUA PIN SCLR TRO VE MUC LOGIC CAO
DI
MOVF COUNT_8BYTE,0 ;DUA GIA TRI COUNT_8BYTE VAO
;THANH GHI W
CALL TABLE ;GOI CHUONG TRINH CON TABLE
CALL SEROUT ;GOI CHUONG TRINH CON DUA 8BIT VAO 595
INCF COUNT_138,1 ;TANG COUNT_138 LEN 1 KET QUA LUU
;TRONG COUNT_138
BSF LATCH
NOP
BCF LATCH
CALL DELAY_8ms ;TAO TRE 8ms LUU 1 BYTE TREN LED MT
INCF COUNT_8BYTE,1 ;TANG COUNT_8BYTE LEN 1 KET
;QUA LUU TRONG COUNT_8BYTE
XORWF D'8' ;XOR COUNT_8BYTE VOI 8
BTFSS STATUS,Z ;KT BIT Z
GOTO DI ;NEU Z CHUA BANG 0 THI TIEP TUC LAY DU
;LIEU TRONG BANG TRA
GOTO MAIN
SEROUT
MOVWF SENDREG
MOVLW 08H
MOVWF COUNT
TESTBIT
BCF DATA
BTFSC SENDREG,7
BSF DATA
BSF CLOCK
NOP
BCF CLOCK
RLF SENDREG
DECFSZ COUNT,1
GOTO TESTBIT
RETURN
TABLE
ADDWF PCL,F
RETLW B'11111111'
RETLW B'00000001'
RETLW B'00000000'
RETLW B'11100100'
RETLW B'11100100'
RETLW B'00000000'
RETLW B'00000001'
RETLW B'11111111'
DELAY_8ms
MOVLW D'100'
MOVLW COUNT1
LOOP
MOVLW 0C7H
MOVWF COUNTA
MOVLW 01H
MOVWF COUNTB
LOOP1
DECFSZ COUNTA,1
GOTO $+2
DECFSZ COUNTB,1
GOTO LOOP1
DECFSZ COUNT1,1
GOTO LOOP1
RETURN
END

mà anh nampn ơi. em thấy anh nhh rất giỏi cái ASM này thì phải. chắc là ảnh bận nên không trả lời em quá. mong các anh giúp đỡ em hoàn thành cái này với.

zero07a 07-11-2009 07:34 PM

Hic.ko ai giúp em hết vậy ta.1 lời khuyên cũng được mà.em xin phép ad và mod cho em được phép duy trì luồng này nghen.

zero07a 08-11-2009 11:02 PM

Xem giúp em code ASM sai chỗ nào
 
Đi học về => truy cập inter xem chủ đề hy vọng sẽ có nhiều anh quan tâm và giúp đỡ => chẳng thấy 1 lời khuyên nào dù chỉ là gợi mở => chán nản => shut down máy tính.

tdm 09-11-2009 02:57 PM

Trích:

Nguyên văn bởi zero07a (Post 30999)
Đi học về => truy cập inter xem chủ đề hy vọng sẽ có nhiều anh quan tâm và giúp đỡ => chẳng thấy 1 lời khuyên nào dù chỉ là gợi mở => chán nản => shut down máy tính.

cứ từ từ:
phân tích c/t cửa bạn nhé:

PROCESSOR 16F877A
INCLUDE <P16F877A.INC>
thiếu câú hình cho pic
;--------------------------------------------
;KHAI BAO BIEN
;--------------------------------------------
SENDREG EQU 20H
COUNT EQU 21H
COUNT_138 EQU 22H ;DEM CHO 138
COUNT_8BYTE EQU 23H ;DEM CHO 8BYTE
COUNT1 EQU 24H
COUNTA EQU 25H
COUNTB EQU 26H
;--------------------------------------------
;DINH NGHIA PHAN CUNG
;--------------------------------------------
#DEFINE DATA PORTB,0
#DEFINE CLOCK PORTB,1
#DEFINE CLEAR PORTB,2
#DEFINE LATCH PORTB,3
;--------------------------------------------
;CHUONG TRINH CHINH
;--------------------------------------------
ORG 0000H
START ;CHUONG TRINH CHINH
BCF STATUS,5
BCF STATUS,6
CLRF PORTB
CLRF PORTC
BSF STATUS,5
CLRF PORTB ;CHON BR3:RB0 LA OUTPUT;dùng tris để định i/o port
CLRF PORTC ;CHON RB2:RB0 LA INPUT
BCF STATUS,5 ;CHON BANK1
;============CHUONG TRINH CHINH==============
CLRF COUNT_138
CLRF COUNT_8BYTE
MAIN
MOVLW 04H
MOVWF PORTB ;DUA CHAN SCLK LEN CAO
MOVLW D'255'
MOVWF PORTC
BCF CLEAR ;RESET DU LIEU TRONG 74HC595
NOP ;clear tac dong canh XUONG
BSF CLEAR ;DUA PIN SCLR TRO VE MUC LOGIC CAO
DI
MOVF COUNT_8BYTE,0 ;DUA GIA TRI COUNT_8BYTE VAO
;THANH GHI W
CALL TABLE ;GOI CHUONG TRINH CON TABLE
CALL SEROUT ;GOI CHUONG TRINH CON DUA 8BIT VAO 595
INCF COUNT_138,1 ;TANG COUNT_138 LEN 1 KET QUA LUU
;TRONG COUNT_138
;tăng lên rồi xuât đi đâu để d/k quét matrix
BSF LATCH
NOP
BCF LATCH
CALL DELAY_8ms ;TAO TRE 8ms LUU 1 BYTE TREN LED MT
INCF COUNT_8BYTE,1 ;TANG COUNT_8BYTE LEN 1 KET
;QUA LUU TRONG COUNT_8BYTE
XORWF D'8' ;XOR COUNT_8BYTE VOI 8
BTFSS STATUS,Z ;KT BIT Z
GOTO DI ;NEU Z CHUA BANG 0 THI TIEP TUC LAY DU
;LIEU TRONG BANG TRA
GOTO MAIN
SEROUT
MOVWF SENDREG
MOVLW 08H
MOVWF COUNT
TESTBIT
BCF DATA
BTFSC SENDREG,7
BSF DATA
BSF CLOCK
NOP
BCF CLOCK
RLF SENDREG
DECFSZ COUNT,1
GOTO TESTBIT
RETURN
TABLE;bảng tra dạng này lên đưa lên đầu c/t
ADDWF PCL,F
RETLW B'11111111'
RETLW B'00000001'
RETLW B'00000000'
RETLW B'11100100'
RETLW B'11100100'
RETLW B'00000000'
RETLW B'00000001'
RETLW B'11111111'
DELAY_8ms;bạn tính lại chỗ này thời gian quá dài
MOVLW D'100'
MOVLW COUNT1
LOOP
MOVLW 0C7H
MOVWF COUNTA
MOVLW 01H
MOVWF COUNTB
LOOP1
DECFSZ COUNTA,1
GOTO $+2
DECFSZ COUNTB,1
GOTO LOOP1
DECFSZ COUNT1,1
GOTO LOOP1
RETURN
END
bạn coi lại nhé rôi tính tiếp.

tdm 09-11-2009 03:07 PM

Trích:

Nguyên văn bởi zero07a (Post 30999)
Đi học về => truy cập inter xem chủ đề hy vọng sẽ có nhiều anh quan tâm và giúp đỡ => chẳng thấy 1 lời khuyên nào dù chỉ là gợi mở => chán nản => shut down máy tính.

bạn gửi lại phần cứng đi dạng proteus để mô phỏng mạch.

zero07a 09-11-2009 05:42 PM

đầu tiên cho em được cảm ơn anh đã bỏ tí thời gian đọc bài của em. dạ được, để em xem lại. em sẽ có câu trả lời sớm nhất cho anh vào ngày mai. em đang ngồi mạng không mang USB theo. nhưng em up mấy lần rồi cứ báo lỗi hoài à. em đã nén rất nhiều dạng nhưng cung không được. để mai em cố gáng lại xem sao. giờ em xem lại đã. 1 lần nữa xin cảm ơn anh nhiều nghen.

zero07a 10-11-2009 07:24 PM

Báo cáo : Thất bại lần 1
 
á á. anh ơi em đã sửa lại rồi đó. cái đoạn cấu hình thì em biết, nhưng khi chạy để chuyển sang fire hex là báo lỗi liền à. nên em không đánh vào.ngồi từ sáng tới giờ. suy nghĩ => thất bại => làm lụi => cuối cùng là cái mạch mô phỏng chạy như vậy đây. em thử rồi cái table hôm nay có call được, nhưng hình như là chỉ tới dòng thứ 2 à. trong khi đó hình như mọi thứ có vẻ ổn mà ta. ngồi hoài mà không biết cái ngu của mình là ở đâu. anh giúp em tìm ra cái ngu của em với. buồn quá vội vã ra mạng nên quên chép file mô phỏng rồi. chán ghê.
em không up file lên được. báo lỗi hoài à. em gửi cho anh code đấy. anh xem giúp em với nghen.

zero07a 11-11-2009 05:53 PM

Herher. Sau mấy ngày mò mẫm ráp code thì đã có chữ A. hehe. cuối cùng thì em 138 đã quét được rầu. em 595 còn nhịp nhịp nữa chứ.tuy chưa được bi nhiêu cũng cảm thấy có gì đó vui vui. Bây giò lại đi tiếp bước nữa đây.
1.chạy chữ trên 1 led
2.chạy trên nhiều led
mô phỏng:
http://www.mediafire.com/download.php?013gyj1mjjz


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

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam