| Автор |
Съобщение |
|
sukhoi
Ранг: Напреднал
Регистриран на: Чет Авг 21, 2008 2:52 pm Мнения: 476 Местоположение: Пловдив
|
 програма от CSS на мплаб
здравейте,
пренаписвам една програма от CSS на мплаб и въпроса ми е дали мога да намеря къде са тези стандартните фунйцики на CSS
като output_bit(), shift_left()... Дали ги има някъде разписани в директориите на CSS ?
|
| Сря Окт 27, 2010 1:36 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
 Re: програма от CSS на мплаб
Няма ги, но можеш да видиш в генерирания листинг какво правят, после си правиш макроси или inline функции.
А какъв е този език MPLAB ?? 
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Сря Окт 27, 2010 4:50 pm |
|
 |
|
sukhoi
Ранг: Напреднал
Регистриран на: Чет Авг 21, 2008 2:52 pm Мнения: 476 Местоположение: Пловдив
|
да няма такъв език прав си
и да попитам защо се генерира така това примерно
а не само
0008: BSF 03.5
000B: BSF 06.4
примерно
|
| Сря Окт 27, 2010 9:35 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
Компилатора имаше някаква опция, която проеменяше output_high() и подобните, така че само
сетваше PORTB пина, без да пипа TRISB. Не си спомням коя беше, погледни в документацията,
ако те интересува, ще спестиш 3 излишни инструкции.
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Сря Окт 27, 2010 9:44 pm |
|
 |
|
sukhoi
Ранг: Напреднал
Регистриран на: Чет Авг 21, 2008 2:52 pm Мнения: 476 Местоположение: Пловдив
|
мерси за бързия отговор...но не мога да разбера как на адрес 06h веднъж е TRISB а другия път е PORTB[/quote]
|
| Сря Окт 27, 2010 9:52 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
Ами не е - сменя банките 
|
| Сря Окт 27, 2010 9:53 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
[/quote]
Един път е на адрес 0x06 ( PORTB ), друг път е на адрес 0x86 ( TRISB ), определя се от бита STATUS.RP0 ( и RP1 ако има повече от 2 банки с памет )
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Сря Окт 27, 2010 9:55 pm |
|
 |
|
sukhoi
Ранг: Напреднал
Регистриран на: Чет Авг 21, 2008 2:52 pm Мнения: 476 Местоположение: Пловдив
|
да...значи последен въпрос с което дано ми се изясни всичко по това...значи като избера примерно втора банка, адресите на регистрите мога да си ги броя пак от 0x00 и така TRISB ми се пада пак 0x06, a не както реално е на адрес 0x86
|
| Сря Окт 27, 2010 10:02 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
Всичко това го има писано в даташитите на всички 16-ки. Командата на процесора е 14 битова и може да адресира директно 7 бита (0х00 до 0х7F). За да може да адресира повече в статус регистъра има 1(2 и т.н.) бита BSR - Bank Select Register - те са дефакто старшите битове на адреса от рама. За съжаление с 16-ките е така. 18-ките са мааалко по добре - половината инструкции могат да адресират директно всеки адрес. И затова Пи джитка само на 32-ки 
|
| Сря Окт 27, 2010 10:11 pm |
|
|