Итак, задача простейшая... (Ну я совсем новичок еще... :laughing:)
1) Послать байт на мк с терминала (COMPIM).
2) Инкриментировать его.
3) Передать результат обратно на терминал (COMPIM).
Код:
;..............................................................(инициализация)
LIST p=16F628A
__config 03FF1h
;..............................................................(прописываем регистры)
STATUS EQU 03h
TRISB EQU 06h
PORTB EQU 06h
TRISA EQU 05h
PORTA EQU 05h
SPBRG EQU 19h
RCSTA EQU 18h
TXREG EQU 19h
RCREG EQU 1Ah
TXSTA EQU 18h
PIE1 EQU 0Ch
PIR1 EQU 0Ch
REG1 EQU 07h
REG2 EQU 08h
CMCON EQU 1Fh
;............................................................
org 0
GOTO START
;............................................................(настраиваем все..)
START
BSF STATUS,5
MOVLW b'1111'
MOVWF TRISA
MOVLW b'00000110'
MOVWF TRISB
MOVLW b'110'
MOVWF SPBRG
MOVLW b'00100000'
MOVWF TXSTA
BCF PIE1,4
BCF PIE1,5
BCF STATUS,5
MOVLW b'10010000'
MOVWF RCSTA
MOVLW b'00000111'
MOVWF CMCON
;.............................................................(прием)
prog BTFSS PIR1,5
GOTO prog
MOVF RCREG,0
MOVWF REG1
INCF REG1,1
;..............................................................(передача)
MOVF REG1,0
MOVWF TXREG
BSF STATUS,5
per BTFSS TXSTA,1
GOTO per
BCF STATUS,5
GOTO prog
END
;...............................................................
Комментариев, которые в скобочках, в коде, естественно, нет.
В результате, при отправке байта, в логе вылетает следующий текст:
[PIC16 MEMORY] PC=0x0015. Attempt to write unimplemented memory location 0x0007 with 0xA8 ignored.
[PIC16 MEMORY] PC=0x0016. Attempt to read unimplemented memory location 0x0007 ignored.
[PIC16 MEMORY] PC=0x0016. Attempt to write unimplemented memory location 0x0007 with 0x01 ignored.
[PIC16 MEMORY] PC=0x0017. Attempt to read unimplemented memory location 0x0007 ignored.
Еще:
При отправке байта, значение в RCREG меняется, однако флаг RCIF (PIR1[5]), всегда почему-то равен 0. Т.е этот RCREG, получается, не заполняется? В то же время в регистре RCSTA, флаги OERR и FERR равны 0. Т.е ошибок тоже вроде никаких нет...
Ну и я , конечно, понимаю, что ошибка тут, скорее всего, идиотская...
Раздел: Песочница или Вопрос-Ответ
1) Послать байт на мк с терминала (COMPIM).
2) Инкриментировать его.
3) Передать результат обратно на терминал (COMPIM).
Код:
;..............................................................(инициализация)
LIST p=16F628A
__config 03FF1h
;..............................................................(прописываем регистры)
STATUS EQU 03h
TRISB EQU 06h
PORTB EQU 06h
TRISA EQU 05h
PORTA EQU 05h
SPBRG EQU 19h
RCSTA EQU 18h
TXREG EQU 19h
RCREG EQU 1Ah
TXSTA EQU 18h
PIE1 EQU 0Ch
PIR1 EQU 0Ch
REG1 EQU 07h
REG2 EQU 08h
CMCON EQU 1Fh
;............................................................
org 0
GOTO START
;............................................................(настраиваем все..)
START
BSF STATUS,5
MOVLW b'1111'
MOVWF TRISA
MOVLW b'00000110'
MOVWF TRISB
MOVLW b'110'
MOVWF SPBRG
MOVLW b'00100000'
MOVWF TXSTA
BCF PIE1,4
BCF PIE1,5
BCF STATUS,5
MOVLW b'10010000'
MOVWF RCSTA
MOVLW b'00000111'
MOVWF CMCON
;.............................................................(прием)
prog BTFSS PIR1,5
GOTO prog
MOVF RCREG,0
MOVWF REG1
INCF REG1,1
;..............................................................(передача)
MOVF REG1,0
MOVWF TXREG
BSF STATUS,5
per BTFSS TXSTA,1
GOTO per
BCF STATUS,5
GOTO prog
END
;...............................................................
Комментариев, которые в скобочках, в коде, естественно, нет.
В результате, при отправке байта, в логе вылетает следующий текст:
[PIC16 MEMORY] PC=0x0015. Attempt to write unimplemented memory location 0x0007 with 0xA8 ignored.
[PIC16 MEMORY] PC=0x0016. Attempt to read unimplemented memory location 0x0007 ignored.
[PIC16 MEMORY] PC=0x0016. Attempt to write unimplemented memory location 0x0007 with 0x01 ignored.
[PIC16 MEMORY] PC=0x0017. Attempt to read unimplemented memory location 0x0007 ignored.
Еще:
При отправке байта, значение в RCREG меняется, однако флаг RCIF (PIR1[5]), всегда почему-то равен 0. Т.е этот RCREG, получается, не заполняется? В то же время в регистре RCSTA, флаги OERR и FERR равны 0. Т.е ошибок тоже вроде никаких нет...
Ну и я , конечно, понимаю, что ошибка тут, скорее всего, идиотская...
Раздел: Песочница или Вопрос-Ответ