Приветствую, всезнающий All! Задолбался искать ошибку... Помогите реализовать сабж... Суть программы сводится к тому, чтобы путем несложного протокола заливать данные во ФЛЭШ-память данных контроллера и считывать их оттуда.
Я делаю так: Передача данных: ;===================================================================== ; Процедура передачи байта через RS-232 ;===================================================================== RS232TX movwf TXREG ; Загружаем W в регистр передачи bsf STATUS,RP0 ; Банк 1 bsf TXSTA,TXEN ; Разрешаем передачу bcf STATUS,RP0 ; Банк 0 return ;
Прием данных:
;===================================================================== ; Подпрограмма обрабатывает прием данных по RS-232 ;===================================================================== movlw 090h ; USART включен, movwf RCSTA ; прием разрешен
btfss PIR1,RCIF ; Если ничего не было принято по goto BEGIN ; RS-232, то замыкаем основной цикл
movf RCREG,0 ; Резервная копия регистра- movwf RXBUF ; приемника USART
movlw 0AAh ; Если первый байт полученной xorwf RXBUF,0 ; последовательности равен 0AAh, btfsc STATUS,Z ; то расцениваем его как комманду goto READBYTE ; чтения FLASH-памяти
movlw 0BBh ; Если первый байт полученной xorwf RXBUF,0 ; последовательности равен 0BBh, btfsc STATUS,Z ; то расцениваем его как комманду goto WRITEBYTE ; записи FLASH-памяти
clrw ; В противном случае выдаем 00h - call RS232TX ; код ошибки синтаксиса
END_SERIAL bcf RCSTA,CREN ; Отключаем USART для обнуления. movlw 090h ; USART включен, movwf RCSTA ; прием разрешен
goto BEGIN ; Замыкаем основной цикл ;===================================================
Чего я делаю не так? Растолкуйте, плиз! А лучше куском кода киньте....
Заранее всем спасибо!