Минусаторы, извольте объясниться, за что минусы? Или критика не приветствуется? Чем ТС решил похвастаться? Тем, что платку залутил, и то со второго раза? Показал картинку покупного программатора, предоставил ссылку готового проекта? Дык давайте я ща выложу свои проекты с листингами, с печатками, с раскройками корпусов, со списком объектов, где мои девайсы установлены и эксплуатируются. Повторить спроектированное кем-то устройство много ума не нужно! Вот если вы такие блядь умные, тогда разберитесь где ошибка, и почему код нестабильно работает:
list p=16f628
include <p16f628a.inc>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _XT_OSC & _MCLRE_ON & _LVP_OFF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
OUT1 EQU 0X020
OUT2 EQU 0X021
OUT3 EQU 0X022
OUT4 EQU 0X023
OUT5 EQU 0X024
OUT6 EQU 0X025
OUT7 EQU 0X026
OUT8 EQU 0X027
del1 equ 0x028
del2 equ 0x029
del3 equ 0x02A
TEMP3 EQU 0X032
TEMP20 EQU 0X033 ;
TEMP21 EQU 0X034 ;
TEMP22 EQU 0X035 ;
TEMP EQU 0X036;Регистр в котором хранится принятый байт;
COUNT22 EQU 0X037;Счётчик принятых байтов ;
count1 equ 0x040;Счётчик стробов для внешних регистров ;
ORG 0X000
GOTO START
ORG 0X004
CALL SERVINT
SAD BTFSS STATUS,C
GOTO WAIT
BCF STATUS,C
GOTO Indikator
LedTable
ADDWF PCL
RETLW B'00000000';код пробела
RETLW B'00000000';код пробела
RETLW B'00000000';код пробела
RETLW B'00000000';код пробела
RETLW B'00000000';код пробела
RETLW B'00000000';код пробела
RETLW B'00000000';код пробела
RETLW B'00000000';код пробела
RETLW B'00000000';код пробела
RETLW B'00000000';код пробела
RETLW B'00000000';код пробела
RETLW B'00000000';код пробела
RETLW B'00000000';код пробела
RETLW B'00000010';код минуса
RETLW B'00000000';код пробела
RETLW B'00000000';код пробела
RETLW B'11111100';код цифры 0
RETLW B'01100000';код цифры 1
RETLW B'11011010';код цифры 2
RETLW B'11110010';код цифры 3
RETLW B'01100110';код цифры 4
RETLW B'10110110';код цифры 5
RETLW B'10111110';код цифры 6
RETLW B'11100000';код цифры 7
RETLW B'11111110';код цифры 8
RETLW B'11110110';код цифры 9
START
CLRF PORTA
CLRF PORTB
movlw 0x07
movwf CMCON
bSf STATUS,RP0 ;выбрать 1 банк.
clrf TRISA ;очистить управляющий регистр.
MOVLW .2
MOVWF TRISB
BCF STATUS,RP0 ;выбрать банк регистров.
CLRF PORTA
CLRF PORTB
BSF STATUS,RP0
MOVLW .32;.47 ;СКОРОСТЬ
MOVWF SPBRG ;ОБМЕНА-9600
CLRF TXSTA
BSF TXSTA,BRGH ;асинхронный, высокоскоростной, передача запрещена
MOVLW .32
MOVWF PIE1 ;РАЗРЕШИТЬ ПРЕРЫВАНИЕ ОТ ПРИЁМНИКА
;выбрать 0 банк.
BCF STATUS,RP0
BCF STATUS,C
CLRF PIR1
MOVLW .192
MOVWF INTCON
CLRF RCREG
MOVLW 0X90
MOVWF RCSTA
REST CLRF COUNT22
INCF COUNT22,1
WAIT
BSF INTCON,GIE
GOTO WAIT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;СЧИТЫВАНИЕ ДАННЫХ И ПРОВЕРКА НА ПРАВИЛЬНОСТЬ ПРИЁМА ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SERVINT
BTFSS PIR1, RCIF
goto $-1
MOVF RCREG,0 ;считать приёмник
BTFSS COUNT22,0
GOTO BYTE2
WERT MOVWF OUT1
rlf COUNT22
RETURN
BYTE2
BTFSS COUNT22,1
GOTO BYTE3
MOVWF OUT2
RLF COUNT22
RETURN
BYTE3
BTFSS COUNT22,2
GOTO BYTE4
MOVWF OUT3
RLF COUNT22
RETURN
BYTE4
BTFSS COUNT22,3
GOTO BYTE5
MOVWF OUT4
RLF COUNT22
RETURN
BYTE5
BTFSS COUNT22,4
GOTO BYTE6
MOVWF OUT5
RLF COUNT22
RETURN
BYTE6
BTFSS COUNT22,5
GOTO BYTE7
MOVWF OUT6
RLF COUNT22
RETURN
BYTE7
BTFSS COUNT22,6
GOTO BYTE8
MOVWF OUT7
RLF COUNT22
RETURN
BYTE8
BTFSS COUNT22,7
RETURN
MOVWF OUT8
RLF COUNT22
RETURN
;****************************************************
;*процедура поочерёдного вывода чисел на *
;*внешние регистры *
;****************************************************
Indikator
MOVLW .32
SUBWF OUT1,1
SUBWF OUT2,1
SUBWF OUT3,1
SUBWF OUT4,1
SUBWF OUT5,1
SUBWF OUT6,1
SUBWF OUT7,1
SUBWF OUT8,1
;
MOVF OUT1,0
CALL outport
MOVF OUT2,0
CALL outport
MOVF OUT3,0
CALL outport
MOVF OUT4,0
CALL outport
MOVF OUT5,0
CALL outport
MOVF OUT6,0
CALL outport
MOVF OUT7,0
CALL outport
MOVF OUT8,0
CALL outport
goto REST
outport
CALL LedTable
clrf count1 ;счётчик сдвигов (стробы)
movwf TEMP ;код числа во времееном регистре
REPEAT movlw .8 ;количество сдвигов на один разряд
xorwf count1,0;произошло 8 сдвигов?
btfsc STATUS,Z;
RETURN ;да, загрузка кода следующего разряда
;нет, продолжаем
MOVF TEMP,0 ;выделяем 0 бит в коде цифры,
ANDLW .1 ;либо "0" либо "1",
movwf TEMP3 ;результат во временном регистре
BTFSS TEMP3,0 ;проверяем этот бит
GOTO SNJATB ;равен "1"
;
USTANB BSF PORTA,1 ;равен "0"
GOTO STROB ;
SNJATB BCF PORTA,1 ;
;
STROB BSF PORTA,0 ;создать стробовый импульс
BCF PORTA,0 ;снять стробовый импульс
INCF count1,1;увеличить счётчик числа сдвигов кода цифры
RRF TEMP,1 ;сдвиг кода цифры
GOTO REPEAT ;возврат на продолжение операции
END