| Автор |
Съобщение |
|
MegatroniC
Ранг: Минаващ
Регистриран на: Сря Яну 04, 2006 6:23 pm Мнения: 43 Местоположение: Earth
|
 Някъде греша при четене от EEPROM-a
Здравейте, записвам в еепром-а няколко стойности които искам да прочета в по късен етап от програмата и да изведа на дисплея. Но някъде явно греша и немога да я открия тази пуста грешка. На дисплея се извеждат само нули
чипа е 16F877
Ето част от кода на програмата:
 |  |  |  | Код: . org H'2100' de D'30',D'2',.... . . movlw H'00' call read_eeprom
call Bin8ToBCD ;преобразувай в BCD формат movlw LCD_Line2 call Send_command movf hund_reg,w call Send_char movf tens_reg,w call Send_char movf ones_reg,w call Send_char movlw H'DF' call Send_char movlw A'C' call Send_char
read_eeprom movwf EEADR bsf STATUS,RP0 bcf EECON1,EEPGD bsf EECON1,RD bcf STATUS,RP0 movf EEDATA,w subwf EEDATA,w ;проверка btfsc STATUS,Z bsf PORTD,7 return
Bin8ToBCD banksel hund_reg clrf hund_reg clrf tens_reg movwf ones_reg ghundreth movlw D'100' subwf ones_reg,w btfss STATUS,C goto gtenth movwf ones_reg incf hund_reg,f goto ghundreth gtenth movlw D'10' subwf ones_reg,w btfss STATUS,C goto over movwf ones_reg incf tens_reg,f goto gtenth over movf hund_reg,w xorlw 0x30 movwf hund_reg movf tens_reg,w xorlw 0x30 movwf tens_reg movf ones_reg,w xorlw 0x30 movwf ones_reg retlw 0
|  |  |  |  |
след програмиране на чипа, стойностите са се записали правилно в еепром-а.
lcd-то си работи с останалата част от програмата без проблеми.
|
| Сря Май 02, 2007 9:20 am |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
Е тука се казва RTFM. Това SUBWF ти оставя резултат 0 във W. И въобще за какъв грездей ти е тая проверка? Да не мислиш че пик-а ще сбърка ?
ако го напишеш така : subwf EEDATA,w,1 - резултата ще остане във EEDATA, a W ще си остане с търсената стойност.
|
| Сря Май 02, 2007 10:01 am |
|
 |
|
MegatroniC
Ранг: Минаващ
Регистриран на: Сря Яну 04, 2006 6:23 pm Мнения: 43 Местоположение: Earth
|
Проверката я сложих, защото вече се видях в чудо да търся грешката. Но и без тия редове с проверката пак на дисплея си излизат нулички вместо 030 
|
| Сря Май 02, 2007 10:26 am |
|
 |
|
Gogo
Ранг: Форумен бог
Регистриран на: Чет Фев 24, 2005 11:41 pm Мнения: 1049 Местоположение: Pz
|
Погледни в коя банка ти е EECON1 !!!
|
| Сря Май 02, 2007 10:52 am |
|
 |
|
GTN
Ранг: Популярен
Регистриран на: Пет Яну 26, 2007 5:05 pm Мнения: 310 Местоположение: из България
|
Ахам ти работиш с банки 0 и 1, а ти трябват 2 и 3. Аз лично не се занимавам с RP0 и RP1 а просто си използвам: Гледам че ти ги смесваш двата метода.
|
| Сря Май 02, 2007 10:59 am |
|
 |
|
MegatroniC
Ранг: Минаващ
Регистриран на: Сря Яну 04, 2006 6:23 pm Мнения: 43 Местоположение: Earth
|
Благодаря ви !
поредното недоглеждане на начинаещия, ще ми е за урок
Има ли проблем ако смесвам двата метода за избор на банки, ако са използвани правилно ?
|
| Сря Май 02, 2007 11:10 am |
|
 |
|
GTN
Ранг: Популярен
Регистриран на: Пет Яну 26, 2007 5:05 pm Мнения: 310 Местоположение: из България
|
Не, само дето ти се бъркаш така. Или поне аз се бъркам като използвам 2 метода които правят едно и също нещо. Аз си харесвам единия и си карам с него.
|
| Сря Май 02, 2007 11:15 am |
|
 |
|
MegatroniC
Ранг: Минаващ
Регистриран на: Сря Яну 04, 2006 6:23 pm Мнения: 43 Местоположение: Earth
|
Е да така е, но понеже първите ми стъпки бяха с промяна на PR0, а после научих за по-удобното banksel, та сега докато премина изцяло към него допускам грешки
Но ще се коригирам 
|
| Сря Май 02, 2007 11:24 am |
|
|