![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#4 |
Đệ tử 2 túi
Tham gia ngày: Dec 2006
Nơi Cư Ngụ: HN
Bài gửi: 39
: |
Có thể là do phần cứng chăng,
đây là code matrix tĩnh em vừa sửa lại ![]() ![]() Code:
;******************************************************** ; ; THE LED FLASH 595 ; ; AUTHOR : HTALUVBEBEO ;******************************************************** LIST P=PIC16F84A INCLUDE P16F84A.INC __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF ;**************** LABEL DEFINITION ******************** RA0 EQU 00 ;RA0 BIT RA1 EQU 01 ;RA1 BIT RA2 EQU 02 ;RA2 BIT RA3 EQU 03 ;RA3 BIT RA4 EQU 04 ;RA4 BIT CNT500U EQU 0x0C ;500USEC COUNTER ADDRESS CNT1M EQU 0x0D ;1MSEC COUNTER ADDRESS SHIFT EQU 0x11 ;CHUA BIT CAN DICH COUNTS EQU 0x12 ;KIEM TRA SO LUONG BIT DICH ROW1 EQU 0x13 ROW2 EQU 0x14 ROW3 EQU 0x15 ROW4 EQU 0x16 ROW5 EQU 0x17 ROW6 EQU 0x18 ROW7 EQU 0x19 ROW8 EQU 0x1A CNTTAB EQU 0x1B ;COUNT CHO TABLE CNTSC1 EQU 0x1C ;COUNT NUMBER OF SCAN1 ;**************** KHAI BAO PHANCUNG VOI 595 ************* #DEFINE DATA PORTB,0 #DEFINE CLOCK PORTB,1 #DEFINE CLEAR PORTB,2 #DEFINE LATCH PORTB,3 ;**************** PROGRAM START *********************** ORG 0 ;RESET VECTOR GOTO INIT ORG 4 ;INTERRUPT VECTOR GOTO INIT ;**************** INITIAL PROCESS ********************* ORG 5 INIT BCF STATUS,RP1 BSF STATUS,RP0 ;CHANGE TO BANK1 MOVLW B'00011' ;SET INPUT MODE DATA MOVWF TRISA ;SET PORTA TO INPUT MODE MOVLW B'11110000' MOVWF TRISB BCF STATUS,RP0 ;CHANGE TO BANK0 ;***************** NHET CHU VAO DAY *********** MOVLW B'01110000' MOVWF ROW1 MOVLW B'01000100' MOVWF ROW2 MOVLW B'01000100' MOVWF ROW3 MOVLW B'01001000' MOVWF ROW4 MOVLW B'01110000' MOVWF ROW5 MOVLW B'01001000' MOVWF ROW6 MOVLW B'01001000' MOVWF ROW7 MOVLW B'01110000' MOVWF ROW8 ;************************** SCAN************************** SCAN CALL CLR ;XOA 595 MOVF ROW8,0 ;DUA DU LIEU ROW1 VAO W CALL SHIFTOUT ;GOI CT DICH BIT CALL CHOT ;CHOT DU LIEU RA O 595 CALL SCR8 ;GOI CT SCAN ROW, TURN ROW ON CALL T1M ;DELAY 1MS CALL CLR ;XOA 595 MOVF ROW7,0 ;DUA DU LIEU ROW1 VAO W CALL SHIFTOUT ;GOI CT DICH BIT CALL CHOT ;CHOT DU LIEU RA O 595 CALL SCR7 ;GOI CT SCAN ROW, TURN ROW ON CALL T1M ;DELAY 1MS CALL CLR ;XOA 595 MOVF ROW6,0 ;DUA DU LIEU ROW1 VAO W CALL SHIFTOUT ;GOI CT DICH BIT CALL CHOT ;CHOT DU LIEU RA O 595 CALL SCR6 ;GOI CT SCAN ROW, TURN ROW ON CALL T1M ;DELAY 1MS CALL CLR ;XOA 595 MOVF ROW5,0 ;DUA DU LIEU ROW1 VAO W CALL SHIFTOUT ;GOI CT DICH BIT CALL CHOT ;CHOT DU LIEU RA O 595 CALL SCR5 ;GOI CT SCAN ROW, TURN ROW ON CALL T1M ;DELAY 1MS CALL CLR ;XOA 595 MOVF ROW4,0 ;DUA DU LIEU ROW1 VAO W CALL SHIFTOUT ;GOI CT DICH BIT CALL CHOT ;CHOT DU LIEU RA O 595 CALL SCR4 ;GOI CT SCAN ROW, TURN ROW ON CALL T1M ;DELAY 1MS CALL CLR ;XOA 595 MOVF ROW3,0 ;DUA DU LIEU ROW1 VAO W CALL SHIFTOUT ;GOI CT DICH BIT CALL CHOT ;CHOT DU LIEU RA O 595 CALL SCR3 ;GOI CT SCAN ROW, TURN ROW ON CALL T1M ;DELAY 1MS CALL CLR ;XOA 595 MOVF ROW2,0 ;DUA DU LIEU ROW1 VAO W CALL SHIFTOUT ;GOI CT DICH BIT CALL CHOT ;CHOT DU LIEU RA O 595 CALL SCR2 ;GOI CT SCAN ROW, TURN ROW ON CALL T1M ;DELAY 1MS CALL CLR ;XOA 595 MOVF ROW1,0 ;DUA DU LIEU ROW1 VAO W CALL SHIFTOUT ;GOI CT DICH BIT CALL CHOT ;CHOT DU LIEU RA O 595 CALL SCR1 ;GOI CT SCAN ROW, TURN ROW ON CALL T1M ;DELAY 1MS GOTO SCAN ;******************************************************** ; TIMER SUBROUTINE FOR 10MHZ CLOCK ;******************************************************** ;************* 1MSEC TIMER SUBROUTINE ***************** T1M MOVLW D'2' ;(1) SET LOOP CNT1 MOVWF CNT1M ;(1) SAVE LOOP CNT1 TM1LP1 MOVLW D'249' ;(1)*2 SET LOOP CNT2 MOVWF CNT500U ;(1)*2 SAVE LOOP CNT2 TM1LP2 NOP ;(1)*249*2 TIME ADJUST NOP ;(1)*249*2 TIME ADJUST DECFSZ CNT500U,F ;(1)*249*2 CNT500U-1=0 ? GOTO TM1LP2 ;(2)*248*2 NO, CONTINUE DECFSZ CNT1M,F ;(1)*2 CNT1M-1=0 ? GOTO TM1LP1 ;(2) NO. CONTINUE RETURN ;(2) YES. CNT END ;TOTAL 2501*0.4USEC=1MSEC ;*********** CHUONG TRINH CON DICH BIT ********** SHIFTOUT MOVWF SHIFT ;DUA DU LIEU VAO THANH GHI SHIFT MOVLW D'8' ;DEM 8BIT DU LIEU MOVWF COUNTS TESTBIT BCF DATA ;DU LIEC BAN DAU LA 0 BTFSC SHIFT,7 ;SHIFT CO BIT7 BANG 0 KKO?? BSF DATA ;NEU KO SET DU LIEU TU O THANH 1 BSF CLOCK ;DUA DU LIEU VAO NOP BCF CLOCK ;DUA CHAN CLOCK VE MUC THAP RLF SHIFT,0 ;DICH TRAI THANH GHI DU LIEU MOVWF SHIFT ;TRA GIA TRI LAI THANH GHI SHIFT DECFSZ COUNTS,1 ; XEM BIEN COUNT KHI GIAM BANG 0??? GOTO TESTBIT ;NEU CHUA THI DICH TIEP RETURN ;**************** KHOI TAO 595 ********************* CLR BCF CLEAR ;RESET DU LIEU TRONG 595 NOP ; CLEAR TAC DONG CANH XUONG BSF CLEAR ; DUA CHAN RESET VE MUC LOGIC CAO RETURN ;*********** CHUONG TRINH CHOT ********** CHOT BSF LATCH ;LEN MUC CAO DE DUA BYTE VAO NOP BCF LATCH ;XUONG THAP KET THUC RETURN ;*********** SCAN ROW ************* SCR1 MOVLW B'00011' MOVWF PORTA RETURN SCR2 MOVLW B'00111' MOVWF PORTA RETURN SCR3 MOVLW B'01011' MOVWF PORTA RETURN SCR4 MOVLW B'01111' MOVWF PORTA RETURN SCR5 MOVLW B'10011' MOVWF PORTA RETURN SCR6 MOVLW B'10111' MOVWF PORTA RETURN SCR7 MOVLW B'11011' MOVWF PORTA RETURN SCR8 MOVLW B'11111' MOVWF PORTA RETURN ;************************************************************ END thay đổi nội dung bởi: HTAluvBeBeo, 04-06-2007 lúc 12:51 AM. |
![]() |
![]() |
|
|