| Микроконтролери и електроника 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
|
|||
| Автор: | 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 ] | |||||||||
| Заглавие: | ||||||||||
Разликата си я написал, ама прочете ли я ? Кода ти гъмжи от такива грешки:
|
||||||||||
| Автор: | 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/ |
|