Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

проблем s PORTD I PORTE na PIC16F877A
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=4492
Страница 1 от 1

Автор:  hobsi [ Вто Юли 10, 2007 6:15 pm ]
Заглавие:  проблем s PORTD I PORTE na PIC16F877A

целта е PORTA, PORTB, PORTE и PORTD цифрови входове
спред PDF-a ADCON1 ->0x06, TRISE,4->0
bankata e
bcf STATUS,RP1
bsf STATUS,RP0
vsichki portove sa predvaritelno b'00000000'
clrf CVRCON
movlw 0x03
movwf CMCON
movlw 0x06
movwf ADCON1
bcf ADCON0,0 ;ADC - off
bcf TRISE,0x04 ; PORTD DIRECT i/o
movlw 0x07
movfw TRISE
movlw 0xFF
movfw TRISD


inak RS-a vari ama 4eta PORTD TRISD PORTE I TRISE vinagi nuli
i vazmojnoli e registrite : LPORTD TRISD PORTE I TRISE da nesa dostupni za indirektna adresacia
IRP NA STATUS registara go clirva predi vsiako zarejdane na FSR


podskajete malko

pls

Автор:  123 [ Сря Юли 11, 2007 9:55 am ]
Заглавие: 

Изключи paralel slave порта. май беше в TRISE 3-7

movlw 0x07
movfw TRISE movWf ?
movlw 0xFF
movfw TRISD movWf ?

Автор:  hobsi [ Сря Юли 11, 2007 8:53 pm ]
Заглавие: 

nabrahgo i sam gi mapisal movfw
inak sa movwf
etogo sorsa

#include <p16f877a.inc>

etx EQU 0x38
stx EQU 0x39
IICflags EQU 0xA0
slvadr EQU 0xA1
iicrcdp EQU 0xA2
iicrcdsa EQU 0xA3
RXBUFA EQU 0x41
RXBUFD EQU 0x40
RXTMP EQU 0x42
cmda EQU 0x43
cmdd EQU 0x44

ORG H'0000'
GOTO init

ORG H'0004'
GOTO IntR

init
bcf STATUS,RP0
bcf STATUS,RP1
clrf RCSTA
bsf STATUS,RP0
bcf STATUS,RP1
movlw B'00000111'
movfw CMCON
movlw 0x00
movfw CVRCON
BCF STATUS, RP0
BCF STATUS, RP1 ; Bank0
clrf ADCON0
CLRF PORTA
BSF STATUS, RP0
BCF STATUS, RP1 ; Bank1
movlw b'00000110'
movwf ADCON1
movlw b'00111111'
movwf TRISA
BCF STATUS, RP0
BCF STATUS, RP0 ; Bank0
CLRF PORTE
BSF STATUS, RP0
BCF STATUS, RP1 ; Bank1
bcf 0x89,4
bsf 0x89,2
bsf 0x89,1
bsf 0x89,0
movlw 0x87
movwf OPTION_REG
clrf INTCON
clrf PIE1
clrf PIE2
BCF STATUS, RP0
BCF STATUS, RP1 ; Bank0
CLRF PORTB
BSF STATUS, RP0
BCF STATUS, RP1 ; Bank1
movlw b'11111111'
movwf TRISB
BCF STATUS, RP0
BCF STATUS, RP1 ; Bank0
CLRF PORTD
BSF STATUS, RP0
BCF STATUS, RP1 ; Bank1
movlw b'11111111'
movfw TRISD
BCF STATUS, RP0
BCF STATUS, RP1 ; Bank0
CLRF PORTC
BSF STATUS, RP0
BCF STATUS, RP1 ; Bank1
movlw b'11111111'
movwf TRISC
clrf TXSTA
movlw .25
movwf SPBRG
bcf STATUS,RP0
bcf STATUS,RP1
movlw 0x90
movwf RCSTA
bsf STATUS,RP0
bcf STATUS,RP1
movlw 0x24
movwf TXSTA
bcf STATUS,RP0
bcf STATUS,RP1
bsf INTCON,0x05
bsf INTCON,0x07
GOTO Main


;-----------



IntR
bcf INTCON,7




btfss INTCON,2
goto ENDI

bcf STATUS,RP0
bcf STATUS,RP1
btfss PIR1,0x04
goto rx
btfss 0x37,0x05
goto tx1
bcf 0x37,0x05
goto ENDIT
tx1
movfw stx
movwf FSR
movfw FSR
bcf STATUS,C
subwf etx,0
btfss STATUS,C
goto endbuf
movfw INDF
movwf TXREG
incf stx,1
endbuf
bsf 0x37,7

rx
bcf STATUS,RP0
bcf STATUS,RP1
bcf STATUS,IRP
BTFSS PIR1,5
GOTO ENDIT
btfsc RCSTA,OERR ;if overrun error occurred
goto ErrSerialOverr ; then go handle error
btfsc RCSTA,FERR ;if framing error occurred
goto ErrSerialFrame ; then go handle error
movfw RCREG
movwf FSR
nop
movfw INDF
movwf TXREG

ENDIT
movlw .246
movwf TMR0
bcf INTCON,2
ENDI
bsf INTCON,7
RETFIE
;-------------------------------------------------------



ErrSerialOverr:
bcf STATUS,RP0
bcf STATUS,RP1
bcf RCSTA,CREN ;reset the receiver logic
bsf RCSTA,CREN ;enable reception again
goto ENDIT
ErrSerialFrame:
bcf STATUS,RP0
bcf STATUS,RP1
movf RCREG,W ;discard received data that has error
goto ENDIT
;----------------
Main

GOTO Main
END

Прикачени файлове:
main1.asm [3.41 KiB]
230 пъти

Автор:  123 [ Чет Юли 12, 2007 7:49 am ]
Заглавие: 

Не ща да се заяждам, ама по-лесно се чете на кирилица. А асемблерски ( и не само ) сорс без подробни коментари си е понятен само за автора, и то не винаги :!:

Автор:  Predator_MF [ Чет Юли 12, 2007 8:34 am ]
Заглавие: 

Явно не е наясно с разликата между MOVFW и MOVWF
Пиши на кирилица!

Автор:  hobsi [ Чет Юли 12, 2007 7:55 pm ]
Заглавие: 

movwf - прехвъля се един байт от работниа регистър (W на аритметично логическото устройство "АЛУ") в клетка от паметта в зависимост от RP0 и RP1 на STATUS регисъра (избиране на банка от енерго зависимата памет ), movfw прехвърля единбайт от клетка от памета в паботния регистър (W наричан още акумулатор) и условието за RP0 и RP1 остава, дотук с нападките питам като човек.
Ако някои е видял грешка да я посочи, относно кирелицата сте прави, и аз неискам да се заяждам.

Автор:  Predator_MF [ Чет Юли 12, 2007 9:08 pm ]
Заглавие: 

Разликата си я написал, ама прочете ли я ? Кода ти гъмжи от такива грешки:
Код:
nit
bcf STATUS,RP0
bcf STATUS,RP1
clrf RCSTA
bsf STATUS,RP0
bcf STATUS,RP1
movlw B'00000111'
movfw CMCON <- ????
movlw 0x00
movfw CVRCON <- ????
BCF STATUS, RP0
BCF STATUS, RP1 ; Bank0
clrf ADCON0
CLRF PORTA
BSF STATUS, RP0
BCF STATUS, RP1 ; Bank1
movlw b'00000110'
movwf ADCON1
movlw b'00111111'
movwf TRISA <- ????

( и пр....)

Автор:  hobsi [ Пет Юли 13, 2007 7:04 pm ]
Заглавие: 

Благодаря, оказва се че само сам си мислил че записвам в тези ргистри.
Извода от цялата работа е че небива да се пишат програми или да им се търси гресхкаа когато ти се спи. надявам се сега да тръгне
отново благодаря

Автор:  123 [ Вто Юли 17, 2007 11:59 am ]
Заглавие: 

За да не стават сакатлъци от недоглеждане пиша инструкциите с малки и големи букви, да се набива на очи.
movWf, movFw, btfsC, btfsS, movLw, andLw, andWf, bSf, bCf. Изглежда най-малкото странно, ама ми върши работа.

Автор:  hobsi [ Вто Юли 17, 2007 5:13 pm ]
Заглавие: 

то хубаво ама пак не се получава
TRISE си е 0х00 и TRISD и той

Автор:  hobsi [ Чет Юли 19, 2007 12:16 am ]
Заглавие: 

проблема е фиксиран в един pdf е вярно едно а в друг друго

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/