Trích:
Nguyên văn bởi zero07a
Đ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.