#1 2016-04-04 16:46:51

dongan
Учасник
Зареєстрований: 2016-04-04
Повідомлень: 13

сдвиговый регистр и как с ним бороться?

ситуация такова

бегущий огонек из лампочек с задержкой в пол секунды на прямую от ардуино  сделать получилось

а как провернуть тот же номер но через сдвинутый  резистор?

с выходами вроде разобрался а как переключать  выходы для лампочек?

Неактивний

#2 2016-04-04 18:04:15

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: сдвиговый регистр и как с ним бороться?

сдвинутый  резистор?
сдвиговый регистр ?
Tlc5940  этот вариант не подходит? оптимизировано под светодиоды

Неактивний

#3 2016-04-04 21:31:13

dongan
Учасник
Зареєстрований: 2016-04-04
Повідомлень: 13

Re: сдвиговый регистр и как с ним бороться?

интересует Сдвиговый регистр 74HC595N

у меня в наборе именно этот интересно как его запустить?

Неактивний

#4 2016-04-05 15:10:05

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: сдвиговый регистр и как с ним бороться?

когда поборете 74HC595N, pls и нам покажите, интересно.

Неактивний

#5 2016-04-06 08:35:51

alex_dol
Учасник
Зареєстрований: 2015-12-28
Повідомлень: 196

Re: сдвиговый регистр и как с ним бороться?

А че с ним бороться то? Все поборено до нас. http://avrproject.ru/publ/kak_podkljuch … 5/2-1-0-44

Неактивний

#6 2016-04-06 09:41:00

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: сдвиговый регистр и как с ним бороться?

да, но пишут всякое на непонятном языке
русский никак выучить не могут, двоешники,
например
place program in 'CODE' segment
так и сказали бы что код не в ОЗУ (, безобразие

#include "msp430g2231.h"                     ; #We define the driven mcu yu
                  ; place program in 'CODE' segment
#defined E_PIN BIT5;20h;00100000b;
#define    C_PIN 80h;10000000b;BIT7
#define D_PIN 40h;01000000b;BIT6
#define R_PIN 10h; BIT4
 ;2231 entegresisin 128bit ram memory has a memory that we have
 ;3 regestirisine dedicating them to send the data in the shift bit kullanıcaz.
Date1 equ 0x0200;R5 ;This variable shift data sent regestiriye
 ;Reset command to the left of the data is kept, and this variable
; printed by sliding fişft regestiriye.
TRUTH Equ 0x0210;#define VERI  0x0210;R9 ;variable data is sent to the shift regestiriye
; represents the desired information.
CNT1 Equ 0x0202; #define CNT1 0x0202;regestiriye shift of data sent 16 bit
 ;This variable is genişliğindedi 16 information loaded in the number of DATA1
 ;16 yazdırılmasdını time that all the bits shifted to the left variable.
; External date1
; External CNT1
;DATA1  DS 1
;CNT1 DS 2

        NAME    Mainloop                   ; module name
                            ; make the main label vissible
        RSEG    CSTACK                  ; pre-declaration of segment
        RSEG    CODE
init:   MOV    #SFE(CSTACK), SP        ; set up stack
;            MOV.W   #5A00H+0011000B,&WDTCTL  ; watchdog timer 1000ms Set

            .W # WDT_ADLY_250,&WDTCTL;WDT, use WDT_ADLY_1000 1000MS CREATES A DELAY
            .B    #10001B,IE1           ;EDN RESOURCES CONTROL GENERAL CUTTING IE1 REGESTİRİ REGESTİRİSİ
;            FOR THE FORMATION AND WDTIE flags establishing a WDT interrupt is BURDAN NMIIE
            .b   #11110111b,P1DIR        ; P1 portunun 0 and 6 Introduction to the rest of the bits set to output
            .b   #00001000b,P1IE         ;CUT WHICH PORT pin P1 Blier OLUŞACAÐINI
            .b   #00001000b,P1IES         ; DETERMINED THAT THERE IS RISING margin of the cutting margin of PER.
            mov.b   #11100001b,P1OUT
            mov.b   #00000001b,REAL         ;Data RAM Area 1 Load the value of the amount of data to be sent to the SHIFT Regestirriye.
            mov.b   #00000001b,DATA1        ;Ram Data1 is defined in 2 The data in this field in order to be printed değişkenimizx shift the shift is used regestiriye.
            ONE                            ;Etkinleşirir General interput resources.
            call  #SHIFTREG                 ;this is the first data DATA1 variable gönderrir shift regestiriye 1 value.
            ;and the program tries to shift the first regestirinin 0. bit turns on the LED.
Mainloop    ;Ana program bloğu
          ;enters an infinite loop until an interrupt occurs herhangibi.
SHIFTREG                  ;74595 print send bits of the program regestiri
             ;Regestiriyi resetle( Reset all bits)
      mov.w # 10h,CNT1 ;Counter regestirisin 16 Upload the number of
       ;Scroll the left deişkeninideki value DATA1.Variable shift operation 16. Status bit is always regestirisinin C (Caeryy)bit of the indicated.
; according to the value of this property have it using the C floğındaki 74hc595 Data pin by setting the value of the bits in the printing of entegresindeki sağlıyacağız.
      jc      SETPIN      ;Set the value of the C bit in SR(1) ise SETPIN etiketine git
            ;Reset the value of the C bit in SR(0) To label the CLRP
                    ;74595 integrated circuit data(DS 14 nolu pini) Set the value of(1) yap.
      UP.B # 40h,&P1OUT
      jmp   CLOCK
CLRPIN  BIC.B # 40h,&P1OUT ;74595 integrated circuit data(DS 14 nolu pini) reset the value of the(0) yap.
CLOCK                     ; pinindeki value palsy sending data shift clock prints regestiriye.
; Slide the left bits of process data clock ports(ds 14.)pinindeki value 0. bite printing 8bit sends data ports.
      BIC.B # 80h,&P1OUT   ;clock pinini resetle
      NOP                 ;a wait cycle
      .B # 80h,&P1OUT   ;Set clock pinini et.
      December CNT1          ;The number of data göndrilen 16 or the process reaches the end.
      jnz SRG           ;counting 16 from the top is smaller than.
E_                        ;sending data to the data that is sent over 74595 Visible to print and process integration of the ports
      .B # 20h,&P1OUT
      .B # 20h,&P1OUT
                        ;Sending data over prosödürü. Back to where you had to work.
Reset                    ; Variable Data 16 bit ama 74595 entegresi 8 bit 8 If the data has exceeded the top bit.
          # 81h mov,R8    ;r8 variable 129 Load the value of the
          .w VERI,R8   ;Data değişkeniniden 129 is the value of the.
          s S1         ;REAL<129 making process
          ,REAL   ;REAL>129 variable in the DATA 1 Load the value of the
                               ;74595 entegresinini ports are reset and the reset pin of the chip, the value of a pulse and resets göndrir.
      BIC.B # 10h,&P1OUT
      .B # 10h,&P1OUT
                     ;WDT interrupt occurs, interrupt button is required for the formation of(IE1 Reg. 0. be) Change the status value of a bit tersleyerek WDT interrupt (OPEN/KaPA)
            xor.b # 1h,IE1  ;WDT interrupt reserved for general cutting bit in the status of the settings required for the tesrle Regestirinin
            .B      #WDTIFG,IFG1 ;ileilgili regestirinin WDT Reset bit indicates interrupt sources
            .B      #00001000b,P1IFG ;Reset button interrupt bit about what buttons olluştuğunu regestirirni göstren.
            ONE       ;Enable global interrupt flag (herhanigbi detect an interrupt occurs)
            NETWORKS       ;and you had to do to keep from cutting operations.
WDT_KES    ;WDT interrupt occurs, the label on the branch.
          CALL      #SIFIRLA  ;Check mailed veriy 128 Reset is greater than
          .b DATA,DATA1  ; 74595 provide data data1 değişkeinnie horse and shift regestiriye göndrilecek göndrilmesini
             ;Write data to shift regestiriye.
          RLA DATA        ;Değişkeinnideki data bits shift left.in order to burn.
          BIC.B # 1H,IFG1              ;WHICH OF THE KESMENİNİ the source of IFG1 rEGESTİRİDİR REGESTİRİSİ.
;WDTIFG (0 Be) Cutting the source of WDT SHOWS. CUTTING THE FLAG OLUŞTUÐUNDA 1 WDT RESET TO ESTABLISH THIS is the new banner and GERKLİDİR.
            ONE                            ; (GIE) GENERAL CUTTING activates BAYRAÐINI
                          ;CLEAR CUTTING GIE BAYRAÐINI (0 DOES)
            ORG     WDT_VECTOR;0FFFEh WDT interrupt vector
               ; This label occurs BRANCH CUTTER
            ;0FFFEh; When the RESET OR THE LABEL FIRST BRANCH is reached ENERCİ
            ;0xFFE4;interrupt vector buttons
            ;interrupt occurs, go cut tag buttons

Неактивний

#7 2016-04-06 14:01:45

dongan
Учасник
Зареєстрований: 2016-04-04
Повідомлень: 13

Re: сдвиговый регистр и как с ним бороться?

dongan пише:

интересует Сдвиговый регистр 74HC595N

у меня в наборе именно этот интересно как его запустить?

вроде уже поборол но возникла другая проблемма
всем персональное здрасте
01
    int dataPin=12;
02
    int clockPin=11;
03
    int latchPin=13;
04
    
05
    void setup(){
06
      pinMode(dataPin,OUTPUT);
07
      pinMode(clockPin,OUTPUT);
08
      pinMode(latchPin.OUTPUT);
09
    }
10
    void loop(){
11
      vhod();
12
      obrabotka();
13
      vihod();
14
    }
15
    
16
    void vhod(){
17
      //тут будет получать данные пока с этим ясно
18
    }
19
    
20
    void obrabotka(){
21
    /* тут надо код который орабатывает переменную  0 111111 и в зависимости от того какой сигнал
22
    получен на входе такой сигнал должен быть и на выходе регистра
23
    */
24
    }
25
    
26
    void
27
    void vihod(){
28
    digitalWrite(latchPin,LOW);
29
    shiftOut(dataPin,clockPin,MSBFIRST, 0b11111111); //вот интересует слопо 0b11111111
30
    digitalWrite(latcPin,HIGH);
31
    }

ситуация такова есть 8 термометров и 8 лампочек соответственно каждому термометру

в зависимости от того превышает ли температура допустимое значение лампочка горит или выключена

возник вопрос как передать данные в функцию shiftOut() вернее как отредактировать переменную 0b11111111 ?

Неактивний

#8 2016-04-06 14:06:20

alex_dol
Учасник
Зареєстрований: 2015-12-28
Повідомлень: 196

Re: сдвиговый регистр и как с ним бороться?

Если вопрос в том как изменить отдельные биты, то легко сделать через логические операторы И и ИЛИ.

Неактивний

#9 2016-04-06 14:09:28

dongan
Учасник
Зареєстрований: 2016-04-04
Повідомлень: 13

Re: сдвиговый регистр и как с ним бороться?

вот именно это и интересно
а то вариантов подключения более 16 млн

Неактивний

#10 2016-04-06 14:16:52

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: сдвиговый регистр и как с ним бороться?

0b11111111 = 0xFF = 255 + 0 итого 256

Неактивний

#11 2016-04-06 16:04:55

dongan
Учасник
Зареєстрований: 2016-04-04
Повідомлень: 13

Re: сдвиговый регистр и как с ним бороться?

dongan пише:

вот именно это и интересно
а то вариантов подключения более 16 млн

ах да это 8 в 8-й степени больше 16 млн big_smile
тут 2 в 8-й

Неактивний

#12 2016-04-06 16:08:41

dongan
Учасник
Зареєстрований: 2016-04-04
Повідомлень: 13

Re: сдвиговый регистр и как с ним бороться?

alex_dol пише:

Если вопрос в том как изменить отдельные биты, то легко сделать через логические операторы И и ИЛИ.

а как это провернуть?
есть идея сначала в строку записать нули и единицы но как их потом передать функции для выполнения?
там таки будет несовпадение типов

Неактивний

#13 2016-04-06 16:37:06

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: сдвиговый регистр и как с ним бороться?

dongan, а почитать другие темы, может кто что "умное" написал? big_smile
например big_smile
http://forum.arduino.ua/viewtopic.php?id=418

#define SETBIT(x,b)     x|=(b)

SETBIT  (var, (BIT(1)));
SETBIT  (var, (BIT(2)));
SETBIT  (var, (BIT(6)));

CLEARBIT  (var, (BIT(6)));
big_smile big_smile big_smile big_smile big_smile

add " " )

Остання редакція NoName (2016-04-06 16:53:35)

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму