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

програма от CSS на мплаб
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=8239
Страница 1 от 1

Автор:  sukhoi [ Сря Окт 27, 2010 1:36 pm ]
Заглавие:  програма от CSS на мплаб

здравейте,
пренаписвам една програма от CSS на мплаб и въпроса ми е дали мога да намеря къде са тези стандартните фунйцики на CSS
като output_bit(), shift_left()... Дали ги има някъде разписани в директориите на CSS ?

Автор:  [ Сря Окт 27, 2010 4:50 pm ]
Заглавие:  Re: програма от CSS на мплаб

sukhoi написа:
здравейте,
пренаписвам една програма от CSS на мплаб и въпроса ми е дали мога да намеря къде са тези стандартните фунйцики на CSS
като output_bit(), shift_left()... Дали ги има някъде разписани в директориите на CSS ?



Няма ги, но можеш да видиш в генерирания листинг какво правят, после си правиш макроси или inline функции.

А какъв е този език MPLAB ?? :)

Автор:  sukhoi [ Сря Окт 27, 2010 9:35 pm ]
Заглавие: 

да няма такъв език прав си :)

и да попитам защо се генерира така това примерно
Цитат:
.................... output_high(DAC_LDAC);
0008: BSF 03.5
0009: BCF 06.4
000A: BCF 03.5
000B: BSF 06.4


а не само

0008: BSF 03.5
000B: BSF 06.4

примерно

Автор:  [ Сря Окт 27, 2010 9:44 pm ]
Заглавие: 

Цитат:
.................... output_high(DAC_LDAC);
0008: BSF 03.5 ; bsf STATUS,RP0 ; bank1
0009: BCF 06.4 ; bcf TRISB,4 ; make portb.4 to be output
000A: BCF 03.5 ; bcf STATUS,RP0 ; bank0
000B: BSF 06.4 ; bsf PORTB,4 ; set portb.4 to high level


Компилатора имаше някаква опция, която проеменяше output_high() и подобните, така че само
сетваше PORTB пина, без да пипа TRISB. Не си спомням коя беше, погледни в документацията,
ако те интересува, ще спестиш 3 излишни инструкции.

Автор:  sukhoi [ Сря Окт 27, 2010 9:52 pm ]
Заглавие: 

мерси за бързия отговор...но не мога да разбера как на адрес 06h веднъж е TRISB а другия път е PORTB[/quote]

Автор:  Cekins [ Сря Окт 27, 2010 9:53 pm ]
Заглавие: 

Ами не е - сменя банките :)

Автор:  [ Сря Окт 27, 2010 9:55 pm ]
Заглавие: 

sukhoi написа:
мерси за бързия отговор...но не мога да разбера как на адрес 06h веднъж е TRISB а другия път е PORTB
[/quote]
Един път е на адрес 0x06 ( PORTB ), друг път е на адрес 0x86 ( TRISB ), определя се от бита STATUS.RP0 ( и RP1 ако има повече от 2 банки с памет )

Автор:  sukhoi [ Сря Окт 27, 2010 10:02 pm ]
Заглавие: 

да...значи последен въпрос с което дано ми се изясни всичко по това...значи като избера примерно втора банка, адресите на регистрите мога да си ги броя пак от 0x00 и така TRISB ми се пада пак 0x06, a не както реално е на адрес 0x86

Автор:  Cekins [ Сря Окт 27, 2010 10:11 pm ]
Заглавие: 

Всичко това го има писано в даташитите на всички 16-ки. Командата на процесора е 14 битова и може да адресира директно 7 бита (0х00 до 0х7F). За да може да адресира повече в статус регистъра има 1(2 и т.н.) бита BSR - Bank Select Register - те са дефакто старшите битове на адреса от рама. За съжаление с 16-ките е така. 18-ките са мааалко по добре - половината инструкции могат да адресират директно всеки адрес. И затова Пи джитка само на 32-ки :)

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