Я не хилую мигалку на PIC16F84 зделал вот программа: list p=16F84 #include <p16F84.inc>
RegEf1 equ 0x0C RegEf2 equ 0x0D RegEf3 equ 0x0E RegEf4 equ 0x0F RegEf5 equ 0x10 RegEf6 equ 0x11 RegEf7 equ 0x12 RegEf8 equ 0x13 RegTim1 equ 0x14 RegTim2 equ 0x15 RegSetup equ 0x16
org 0x000
Start clrf PORTA clrf PORTB bsf STATUS, RP0 movlw b'00010100' movwf TRISA movlw 0x00 movwf TRISB bcf OPTION_REG, 7 bcf STATUS, RP0
movlw b'00000001' movwf RegEf1 movlw b'00000010' movwf RegEf2 movlw b'00000100' movwf RegEf3 movlw b'00001000' movwf RegEf4 movlw b'00010000' movwf RegEf5 movlw b'00100000' movwf RegEf6 movlw b'01000000' movwf RegEf7 movlw b'10000000' movwf RegEf8
movlw 0x00 movwf RegSetup
Effect call Ef1 call Time call Ef2 call Time call Ef3 call Time call Ef4 call Time call Ef5 call Time call Ef6 call Time call Ef7 call Time call Ef8 call Time
goto Effect
Setup1 movlw 0x00 xorwf RegSetup, w btfsc STATUS, Z return decf RegSetup, f call GetEf1 movwf RegEf1 call GetEf2 movwf RegEf2 call GetEf3 movwf RegEf3 call GetEf4 movwf RegEf4 call GetEf5 movwf RegEf5 call GetEf6 movwf RegEf6 call GetEf7 movwf RegEf7 call GetEf8 movwf RegEf8 return
Setup2 movlw 0x07 xorwf RegSetup, w btfsc STATUS, Z return incf RegSetup, f call GetEf1 movwf RegEf1 call GetEf2 movwf RegEf2 call GetEf3 movwf RegEf3 call GetEf4 movwf RegEf4 call GetEf5 movwf RegEf5 call GetEf6 movwf RegEf6 call GetEf7 movwf RegEf7 call GetEf8 movwf RegEf8 return
GetEf1 movf RegSetup, w addwf PCL retlw b'00000001' retlw b'10000000' retlw b'10000001' retlw b'10000001' retlw b'10000000' retlw b'10101010' retlw b'11110000' retlw b'11111111'
GetEf2 movf RegSetup, w addwf PCL retlw b'00000010' retlw b'00000001' retlw b'01000010' retlw b'11000011' retlw b'11000000' retlw b'01010101' retlw b'00001111' retlw b'00000000'
GetEf3 movf RegSetup, w addwf PCL retlw b'00000100' retlw b'01000000' retlw b'00100100' retlw b'11100111' retlw b'11100000' retlw b'10101010' retlw b'11110000' retlw b'11111111'
GetEf4 movf RegSetup, w addwf PCL retlw b'00001000' retlw b'00000010' retlw b'00011000' retlw b'11111111' retlw b'11110000' retlw b'01010101' retlw b'00001111' retlw b'00000000'
GetEf5 movf RegSetup, w addwf PCL retlw b'00010000' retlw b'00100000' retlw b'00100100' retlw b'11100111' retlw b'11111000' retlw b'10101010' retlw b'11110000' retlw b'11111111'
GetEf6 movf RegSetup, w addwf PCL retlw b'00100000' retlw b'00000100' retlw b'01000010' retlw b'11000011' retlw b'11111100' retlw b'01010101' retlw b'00001111' retlw b'00000000'
GetEf7 movf RegSetup, w addwf PCL retlw b'01000000' retlw b'00010000' retlw b'10000001' retlw b'10000001' retlw b'11111110' retlw b'10101010' retlw b'11110000' retlw b'11111111' GetEf8 movf RegSetup, w addwf PCL retlw b'10000000' retlw b'00001000' retlw b'00000000' retlw b'00000000' retlw b'11111111' retlw b'01010101' retlw b'00001111' retlw b'00000000'
Ef1 movf RegEf1, w movwf PORTB return
Ef2 movf RegEf2, w movwf PORTB return
Ef3 movf RegEf3, w movwf PORTB return
Ef4 movf RegEf4, w movwf PORTB return
Ef5 movf RegEf5, w movwf PORTB return
Ef6 movf RegEf6, w movwf PORTB return
Ef7 movf RegEf7, w movwf PORTB return
Ef8 movf RegEf8, w movwf PORTB return
Time btfss PORTA, 2 call Setup1 btfss PORTA, 4 call Setup2 movlw 0xFF movwf RegTim1 T1 movlw 0xFF movwf RegTim2 T2 decfsz RegTim2 goto T2 decfsz RegTim1 goto T1 return
end
|