Sai Rahul Sitaram
/
mbed_shiftreg
This is a GR peach project demonstrating shift registers 595 and 165
shitreg.cpp@0:b9fbca7b029d, 2016-12-03 (annotated)
- Committer:
- RahulSitaram
- Date:
- Sat Dec 03 07:17:34 2016 +0000
- Revision:
- 0:b9fbca7b029d
Shift registers with Grpeach
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
RahulSitaram | 0:b9fbca7b029d | 1 | #include "mbed.h" |
RahulSitaram | 0:b9fbca7b029d | 2 | //#include <bitset> |
RahulSitaram | 0:b9fbca7b029d | 3 | #include "arduino.h" |
RahulSitaram | 0:b9fbca7b029d | 4 | |
RahulSitaram | 0:b9fbca7b029d | 5 | //using namespace mbed::mbed; |
RahulSitaram | 0:b9fbca7b029d | 6 | |
RahulSitaram | 0:b9fbca7b029d | 7 | //DigitalOut lat(P8_11); |
RahulSitaram | 0:b9fbca7b029d | 8 | //DigitalOut dat(P8_13); |
RahulSitaram | 0:b9fbca7b029d | 9 | //DigitalOut clk(P4_4); |
RahulSitaram | 0:b9fbca7b029d | 10 | Serial pc(USBTX, USBRX); // tx, rx |
RahulSitaram | 0:b9fbca7b029d | 11 | DigitalOut pins[1][3] = {{P8_11,P8_13,P4_4}}; |
RahulSitaram | 0:b9fbca7b029d | 12 | DigitalIn ser(P2_14); |
RahulSitaram | 0:b9fbca7b029d | 13 | DigitalOut clk_inh(P4_5); |
RahulSitaram | 0:b9fbca7b029d | 14 | DigitalOut clk_2(P4_7); |
RahulSitaram | 0:b9fbca7b029d | 15 | DigitalOut SH_LD(P4_6); |
RahulSitaram | 0:b9fbca7b029d | 16 | |
RahulSitaram | 0:b9fbca7b029d | 17 | int delay_time; |
RahulSitaram | 0:b9fbca7b029d | 18 | int i; |
RahulSitaram | 0:b9fbca7b029d | 19 | uint8_t init; |
RahulSitaram | 0:b9fbca7b029d | 20 | uint8_t data_read; |
RahulSitaram | 0:b9fbca7b029d | 21 | void shift(uint8_t data, int delay_time,int row_no){ |
RahulSitaram | 0:b9fbca7b029d | 22 | DigitalOut lat = pins[row_no][0]; |
RahulSitaram | 0:b9fbca7b029d | 23 | DigitalOut dat = pins[row_no][1]; |
RahulSitaram | 0:b9fbca7b029d | 24 | DigitalOut clk = pins[row_no][2]; |
RahulSitaram | 0:b9fbca7b029d | 25 | clk = 0; |
RahulSitaram | 0:b9fbca7b029d | 26 | dat = 0; |
RahulSitaram | 0:b9fbca7b029d | 27 | lat = 0; |
RahulSitaram | 0:b9fbca7b029d | 28 | SH_LD = 1; |
RahulSitaram | 0:b9fbca7b029d | 29 | clk_inh = 1; |
RahulSitaram | 0:b9fbca7b029d | 30 | clk_2 = 1; |
RahulSitaram | 0:b9fbca7b029d | 31 | data_read = 0x00; |
RahulSitaram | 0:b9fbca7b029d | 32 | init = 0x80; |
RahulSitaram | 0:b9fbca7b029d | 33 | |
RahulSitaram | 0:b9fbca7b029d | 34 | for(i=0;i<8;i++){ |
RahulSitaram | 0:b9fbca7b029d | 35 | dat = data & (init>>i); |
RahulSitaram | 0:b9fbca7b029d | 36 | clk = 1; |
RahulSitaram | 0:b9fbca7b029d | 37 | clk = 0; |
RahulSitaram | 0:b9fbca7b029d | 38 | } |
RahulSitaram | 0:b9fbca7b029d | 39 | lat = 1; |
RahulSitaram | 0:b9fbca7b029d | 40 | lat = 0; |
RahulSitaram | 0:b9fbca7b029d | 41 | |
RahulSitaram | 0:b9fbca7b029d | 42 | } |
RahulSitaram | 0:b9fbca7b029d | 43 | |
RahulSitaram | 0:b9fbca7b029d | 44 | uint8_t shift_par(int clk_time, int load_time){ |
RahulSitaram | 0:b9fbca7b029d | 45 | SH_LD = 0; |
RahulSitaram | 0:b9fbca7b029d | 46 | wait_us(load_time); |
RahulSitaram | 0:b9fbca7b029d | 47 | SH_LD = 1; |
RahulSitaram | 0:b9fbca7b029d | 48 | wait_us(load_time); |
RahulSitaram | 0:b9fbca7b029d | 49 | data_read = (data_read<<1)|ser; |
RahulSitaram | 0:b9fbca7b029d | 50 | clk_inh = 0; |
RahulSitaram | 0:b9fbca7b029d | 51 | |
RahulSitaram | 0:b9fbca7b029d | 52 | for(i=0;i<8;i++) |
RahulSitaram | 0:b9fbca7b029d | 53 | { |
RahulSitaram | 0:b9fbca7b029d | 54 | data_read = (data_read<<1)|ser; |
RahulSitaram | 0:b9fbca7b029d | 55 | clk_2 = 0; |
RahulSitaram | 0:b9fbca7b029d | 56 | clk_2 = 1; |
RahulSitaram | 0:b9fbca7b029d | 57 | |
RahulSitaram | 0:b9fbca7b029d | 58 | } |
RahulSitaram | 0:b9fbca7b029d | 59 | |
RahulSitaram | 0:b9fbca7b029d | 60 | return data_read; |
RahulSitaram | 0:b9fbca7b029d | 61 | |
RahulSitaram | 0:b9fbca7b029d | 62 | } |
RahulSitaram | 0:b9fbca7b029d | 63 | |
RahulSitaram | 0:b9fbca7b029d | 64 | int main() { |
RahulSitaram | 0:b9fbca7b029d | 65 | |
RahulSitaram | 0:b9fbca7b029d | 66 | shift(0x4F, 0, 0); |
RahulSitaram | 0:b9fbca7b029d | 67 | wait_ms(500); |
RahulSitaram | 0:b9fbca7b029d | 68 | pc.printf("%c", shift_par(0,0)); |
RahulSitaram | 0:b9fbca7b029d | 69 | } |