Нужна вставка на Асме
|
|
demanik |
Дата: Вт, 23.02.2010, 23:20 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
448
Замечания:
±
На сайте с 11.12.2007
Статус:
Offline
|
Прсьба к знатокам ассемблера переделать ниже приведенный кусок кода в ассемблер, как свтавку в бейсиковский код. Это отправка 8бит из переменной "DataSend" которая обрабатывается в бейсике в регистр 74HC595. Нужно минимальное время выполнения. Всем заранее благодарен. for Index = 7 to 0 step - 1 portc.4 = DataSend.7 HIGH portc.0 LOW portc.0 DataSend = DataSend << 1 next Index LOW portc.4 HIGH portc.3 LOW portc.3
Попробуй всё и вся... может быть пол...
Сообщение отредактировал
demanik - Ср, 24.02.2010, 11:02
|
|
|
|
holyuser |
Дата: Ср, 24.02.2010, 15:00 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
228
Замечания:
±
На сайте с 12.12.2007
Статус:
Offline
|
А контроллер какой серии?
|
|
|
|
demanik |
Дата: Ср, 24.02.2010, 15:04 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
448
Замечания:
±
На сайте с 11.12.2007
Статус:
Offline
|
Quote (holyuser) А контроллер какой серии PIC18F2520 и PIC18F2620
Попробуй всё и вся... может быть пол...
|
|
|
|
DAlexV |
Дата: Ср, 24.02.2010, 17:22 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Судя по программе это SPI. Возникает вопрос, а чем не устраивает Хардовый SPI ??? Какая скорость нужна ???
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
|
|
|
|
demanik |
Дата: Ср, 24.02.2010, 17:35 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
448
Замечания:
±
На сайте с 11.12.2007
Статус:
Offline
|
Quote (DAlexV) Хардовый SPI ??? Какая скорость нужна ??? Скорость нужна поминиму, какая получится. А хардовый не подходит из за невозможности менять пины.
Попробуй всё и вся... может быть пол...
|
|
|
|
DAlexV |
Дата: Ср, 24.02.2010, 17:39 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Так есть и софтовый, зачем усложнять. В Рыбе он Software SPI Library называется SSPI.bas. Вешаешь на любые ноги.
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
|
|
|
|
demanik |
Дата: Ср, 24.02.2010, 17:53 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
448
Замечания:
±
На сайте с 11.12.2007
Статус:
Offline
|
Quote (DAlexV) Судя по программе это SPI Не совсем так. В SPI три ноги (вход, выход и синхро) а у меня (выход, синхро и защелка)
Попробуй всё и вся... может быть пол...
|
|
|
|
DAlexV |
Дата: Ср, 24.02.2010, 18:25 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Так защелку сам пропиши, и дергай по надобности. То же самое получиться. В хародовом SPI так же делаешь
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
Сообщение отредактировал
DAlexV - Ср, 24.02.2010, 18:26
|
|
|
|
brown |
Дата: Ср, 24.02.2010, 18:31 | Сообщение # 9 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
333
Замечания:
±
На сайте с 18.09.2007
Статус:
Offline
|
demanik, есть подпрограмма для ЖКИ НТ1613 и PIC16F84A 4MHz, с небольшими переделками можно приспособить для ваших нужд. Если интересно могу выложить.
Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
|
|
|
|
demanik |
Дата: Ср, 24.02.2010, 18:33 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
448
Замечания:
±
На сайте с 11.12.2007
Статус:
Offline
|
Quote (DAlexV) В хародовом SPI так же делаешь Повторяюсь: А хардовый не подходит из за невозможности менять пины.
Попробуй всё и вся... может быть пол...
|
|
|
|
demanik |
Дата: Ср, 24.02.2010, 18:36 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
448
Замечания:
±
На сайте с 11.12.2007
Статус:
Offline
|
Quote (brown) Если интересно могу выложить Если не затруднит выложите, посмотрю.
Попробуй всё и вся... может быть пол...
|
|
|
|
brown |
Дата: Ср, 24.02.2010, 18:49 | Сообщение # 12 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
333
Замечания:
±
На сайте с 18.09.2007
Статус:
Offline
|
Хотел подредактировать... даю как есть Code ;============================================================================================== ; OUTPUT DISPLAY KO-4B2 HT1611/13 ;============================================================================================== DISPLAY movf LED4,w ;запись первых 2-х кодов в аккумулятор call Displ ;переход на ПП формирования импульсов movf LED3,w call Displ movf LED2,w call Displ movf LED1,w call Displ movf LED0,w call Displ RETURN ;============================================= ;Out byte to display ;============================================= Displ movwf Rotate ;запись в регистр сдвига clrf COUNT ;очистка счетчика битов bsf COUNT,3 ;запись колличества бит (8) bcf STATUS,0 ;не обязательная команда displ1 clrf STATUS ;сброс бита переноса, можно заменить см. выше rlf Rotate,f ;сдвиг влево содержимого регистра с сохранением результата btfsc STATUS,0 ;если С=0, то НОП bsf PORTB,4 ;иначе ПортА1=1 btfss STATUS,0 ;если С=1, то НОП bcf PORTB,4 ;иначе ПортА1=0 ;формирование импульсов CLK bsf PORTB,3 nop ;задержка 1 мкс bcf PORTB,3 decfsz COUNT,f ;декремент счетчика битов, если =0, то НОП goto displ1 ;иначе переход displ1 ; RETURN
Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
|
|
|
|
DAlexV |
Дата: Ср, 24.02.2010, 18:49 | Сообщение # 13 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Code { **************************************************************************** * Name : EnableWrite (PRIVATE) * * Purpose : Enable writes to SPI EEPROM * **************************************************************************** } sub EnableWrite() CSOn // chip select on WriteByte(cmdWriteEnable) // enable writes CSOff // chip select off end sub
{ **************************************************************************** * Name : CSOn (PRIVATE) * * Purpose : Enable chip select * **************************************************************************** } inline sub CSOn() FSR0 = FCS.Address // get latch address INDF0 = INDF0 and FCS.PinMask // set to low end sub { **************************************************************************** * Name : CSOff (PRIVATE) * * Purpose : Disable chip select * **************************************************************************** } inline sub CSOff() FSR0 = FCS.Address // get latch address INDF0 = INDF0 or FCS.Pin // set to high end sub { Не обращаем внимание на сложное сплетение в CSOff() и CSOn(). Тут просто взята маска пина(PortC.0 например). Если вешаем на SPI несколько устройств, у которых есть свой CS, то нужно прописывать CS для каждого девайса. http://www.digital-diy.com/swordfi....dc.html Пример использования SPI P/s. http://www.picbasic.ru/publ/lcd_nokia_3310_swordfish/1-1-0-24 здесь я использовал такой же SPI как и у тебя
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
Сообщение отредактировал
DAlexV - Ср, 24.02.2010, 18:53
|
|
|
|
brown |
Дата: Ср, 24.02.2010, 19:12 | Сообщение # 14 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
333
Замечания:
±
На сайте с 18.09.2007
Статус:
Offline
|
Полный аналог куска кода из сообщения 1: Code movf DataSend,w ;запись кодa в аккумулятор movwf Rotate ;запись в регистр сдвига clrf COUNT ;очистка счетчика битов bsf COUNT,3 ;запись колличества бит (8) bcf STATUS,0 ;не обязательная команда displ1 clrf STATUS ;сброс бита переноса, можно заменить см. выше rlf Rotate,f ;сдвиг влево содержимого регистра с сохранением результата btfsc STATUS,0 ;если С=0, то НОП bsf PORTC,4 ;иначе ПортC1=1 btfss STATUS,0 ;если С=1, то НОП bcf PORTC,4 ;иначе ПортC1=0 ;формирование импульсов CLK bsf PORTC,0 nop ;задержка 1 мкс (200нс -20МГц) bcf PORTC,0 decfsz COUNT,f ;декремент счетчика битов, если =0, то НОП goto displ1 ;иначе переход displ1 ; bcf PORTC,4 bsf PORTC,3 nop ;задержка 1 мкс bcf PORTC,3
Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
|
|
|
|
demanik |
Дата: Ср, 24.02.2010, 20:00 | Сообщение # 15 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
448
Замечания:
±
На сайте с 11.12.2007
Статус:
Offline
|
brown, Большое спасибо, все заработало. Только вместо rlf я поставил rlcf У моего пика такой команды нет. Экономия времени по сравнению с бейсиком 30%.
Попробуй всё и вся... может быть пол...
Сообщение отредактировал
demanik - Ср, 24.02.2010, 20:29
|
|
|
|