Include p16f877a.inc
__CONFIG _HS_OSC&_WDT_OFF&_LVP_OFF
;==========================================
CBLOCK 0X20
LUU_W, LUU_STATUS, LUU, HC , HDV,DICH
ENDC
org 0X00
GOTO MAIN
org 0x04
GOTO NGAT
org 0X05
MAIN
BCF STATUS,RP1
BSF STATUS,RP0
CLRF TRISC
CLRF TRISD
BCF STATUS,RP0
CLRF PORTD
CLRF T1CON
CLRF INTCON
CLRF TMR1H
CLRF TMR1L
CLRF HC
CLRF HDV
BSF STATUS,RP0
CLRF PIE1
BSF PIE1,TMR1IE
BCF STATUS,RP0
CLRF PIR1
MOVLW D'3'
MOVWF HC
MOVLW D'6'
MOVWF HDV
MOVLW 0X30
MOVWF T1CON
MOVLW 0x61
MOVWF TMR1H
MOVLW 0xA8
MOVWF TMR1L
CLRF PORTC
CLRF PORTD
BSF T1CON,TMR1ON
BSF INTCON,TMR1IE
BSF INTCON,PEIE
BSF INTCON,GIE
GOTO $
NGAT
MOVWF LUU_W
SWAPF STATUS,W
MOVWF LUU_STATUS
QUETLED
BCF T1CON,0
BTFSS PORTD,0
GOTO LED_HC
GOTO LED_HDV
LED_HC
MOVF HC
CALL BANGMA
MOVWF PORTC
BsF PORTD,0
BcF PORTD,1
GOTO RS
LED_HDV
MOVF HDV
CALL BANGMA
MOVWF PORTC
BcF PORTD,0
BsF PORTD,1
GOTO RS
RS
MOVLW 0X20
MOVWF TMR1H
MOVLW 0X30
MOVWF TMR1L
BSF T1CON,0
BCF PIR1,0
GOTO THOATNGAT
BANGMA
ADDWF PCL,F
RETLW 0XC0
RETLW 0XF9
RETLW 0XA4
RETLW 0XB0
RETLW 0X99
RETLW 0X92
RETLW 0X82
RETLW 0XF8
RETLW 0X80
RETLW 0X90
THOATNGAT
SWAPF LUU_STATUS,W
MOVWF STATUS
SWAPF LUU_W,F
SWAPF LUU_W,W
RETFIE
END
Bài toán quét 2 led 7 đoạn sử dụng timer1 , ,PORTC để hiển thị led, PORTD để quet led HC( hàng chục) và HDV (HDV) Ở đây em muốn quét hiện ra số 3 và số 4 , nhưng sau khi Mov giá trị 3 và 4 vào các thanh ghi HC và HDV , nhung khi vao ngắt thì nó không thể lấy giá trị từ HC và HDV ra được , em không hiểu nguyên nhân tại sao, mong mọi người giúp
__CONFIG _HS_OSC&_WDT_OFF&_LVP_OFF
;==========================================
CBLOCK 0X20
LUU_W, LUU_STATUS, LUU, HC , HDV,DICH
ENDC
org 0X00
GOTO MAIN
org 0x04
GOTO NGAT
org 0X05
MAIN
BCF STATUS,RP1
BSF STATUS,RP0
CLRF TRISC
CLRF TRISD
BCF STATUS,RP0
CLRF PORTD
CLRF T1CON
CLRF INTCON
CLRF TMR1H
CLRF TMR1L
CLRF HC
CLRF HDV
BSF STATUS,RP0
CLRF PIE1
BSF PIE1,TMR1IE
BCF STATUS,RP0
CLRF PIR1
MOVLW D'3'
MOVWF HC
MOVLW D'6'
MOVWF HDV
MOVLW 0X30
MOVWF T1CON
MOVLW 0x61
MOVWF TMR1H
MOVLW 0xA8
MOVWF TMR1L
CLRF PORTC
CLRF PORTD
BSF T1CON,TMR1ON
BSF INTCON,TMR1IE
BSF INTCON,PEIE
BSF INTCON,GIE
GOTO $
NGAT
MOVWF LUU_W
SWAPF STATUS,W
MOVWF LUU_STATUS
QUETLED
BCF T1CON,0
BTFSS PORTD,0
GOTO LED_HC
GOTO LED_HDV
LED_HC
MOVF HC
CALL BANGMA
MOVWF PORTC
BsF PORTD,0
BcF PORTD,1
GOTO RS
LED_HDV
MOVF HDV
CALL BANGMA
MOVWF PORTC
BcF PORTD,0
BsF PORTD,1
GOTO RS
RS
MOVLW 0X20
MOVWF TMR1H
MOVLW 0X30
MOVWF TMR1L
BSF T1CON,0
BCF PIR1,0
GOTO THOATNGAT
BANGMA
ADDWF PCL,F
RETLW 0XC0
RETLW 0XF9
RETLW 0XA4
RETLW 0XB0
RETLW 0X99
RETLW 0X92
RETLW 0X82
RETLW 0XF8
RETLW 0X80
RETLW 0X90
THOATNGAT
SWAPF LUU_STATUS,W
MOVWF STATUS
SWAPF LUU_W,F
SWAPF LUU_W,W
RETFIE
END
Bài toán quét 2 led 7 đoạn sử dụng timer1 , ,PORTC để hiển thị led, PORTD để quet led HC( hàng chục) và HDV (HDV) Ở đây em muốn quét hiện ra số 3 và số 4 , nhưng sau khi Mov giá trị 3 và 4 vào các thanh ghi HC và HDV , nhung khi vao ngắt thì nó không thể lấy giá trị từ HC và HDV ra được , em không hiểu nguyên nhân tại sao, mong mọi người giúp
Comment