Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Нужна вставка на Асме
demanik Дата: Вт, 23.02.2010, 23:20  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 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
ЯНДЕКС Дата: 23.02.2010
holyuser Дата: Ср, 24.02.2010, 15:00  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 228
Репутация: 5   ±
Замечания:   ±
На сайте с 12.12.2007

Статус: Offline

А контроллер какой серии?
demanik Дата: Ср, 24.02.2010, 15:04  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Quote (holyuser)
А контроллер какой серии

PIC18F2520 и PIC18F2620


Попробуй всё и вся... может быть пол...

DAlexV Дата: Ср, 24.02.2010, 17:22  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 657
Репутация: 27   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Судя по программе это SPI. Возникает вопрос, а чем не устраивает Хардовый SPI ??? Какая скорость нужна ???

Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
demanik Дата: Ср, 24.02.2010, 17:35  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Quote (DAlexV)
Хардовый SPI ??? Какая скорость нужна ???

Скорость нужна поминиму, какая получится.

А хардовый не подходит из за невозможности менять пины.


Попробуй всё и вся... может быть пол...

DAlexV Дата: Ср, 24.02.2010, 17:39  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 657
Репутация: 27   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Так есть и софтовый, зачем усложнять. В Рыбе он Software SPI Library называется SSPI.bas. Вешаешь на любые ноги.

Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
demanik Дата: Ср, 24.02.2010, 17:53  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Quote (DAlexV)
Судя по программе это SPI

Не совсем так.
В SPI три ноги (вход, выход и синхро) а у меня (выход, синхро и защелка)


Попробуй всё и вся... может быть пол...

DAlexV Дата: Ср, 24.02.2010, 18:25  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 657
Репутация: 27   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Так защелку сам пропиши, и дергай по надобности. То же самое получиться. В хародовом SPI так же делаешь

Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
Сообщение отредактировал DAlexV - Ср, 24.02.2010, 18:26
brown Дата: Ср, 24.02.2010, 18:31  |                                                                                                                Сообщение # 9
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 333
Репутация: 12   ±
Замечания:   ±
На сайте с 18.09.2007

Статус: Offline

demanik, есть подпрограмма для ЖКИ НТ1613 и PIC16F84A 4MHz, с небольшими переделками можно приспособить для ваших нужд. Если интересно могу выложить.

Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
demanik Дата: Ср, 24.02.2010, 18:33  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Quote (DAlexV)
В хародовом SPI так же делаешь

Повторяюсь: А хардовый не подходит из за невозможности менять пины.


Попробуй всё и вся... может быть пол...

demanik Дата: Ср, 24.02.2010, 18:36  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Quote (brown)
Если интересно могу выложить

Если не затруднит выложите, посмотрю.


Попробуй всё и вся... может быть пол...

ЯНДЕКС Дата: 24.02.2010
brown Дата: Ср, 24.02.2010, 18:49  |                                                                                                                Сообщение # 12
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 333
Репутация: 12   ±
Замечания:   ±
На сайте с 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
Репутация: 27   ±
Замечания:   ±
На сайте с 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
Репутация: 12   ±
Замечания:   ±
На сайте с 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
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

brown, Большое спасибо, все заработало. Только вместо rlf я поставил rlcf У моего пика такой команды нет.
Экономия времени по сравнению с бейсиком 30%. happy


Попробуй всё и вся... может быть пол...


Сообщение отредактировал demanik - Ср, 24.02.2010, 20:29
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: