Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  1. #define clock_pin 3
  2. #define mclr_pin 5
  3. #define data_pin 4
  4.  
  5.  
  6. //storage variables
  7. boolean clock_toggle=false;
  8. boolean clock_enable=false;
  9.  
  10. int data_pointer=0;
  11. boolean data_send[22]= {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  12.  
  13. boolean enable=true;
  14.  
  15.  
  16. void setup(){
  17.  
  18. //set pins as outputs
  19. for (int i=0; i <= 13; i++){
  20. pinMode(i, OUTPUT);
  21. digitalWrite(i, LOW);
  22. }
  23.  
  24.  
  25. cli();//stop interrupts
  26.  
  27. //set timer1 interrupt
  28. TCCR1A = 0;// set entire TCCR1A register to 0
  29. TCCR1B = 0;// same for TCCR1B
  30. TCNT1 = 0;//initialize counter value to 0
  31. // set compare match register for 1hz increments
  32. OCR1A = 1600;// set Timerclock
  33. // turn on CTC mode
  34. TCCR1B |= (1 << WGM12);
  35. // Set Prescaler
  36. TCCR1B |= (1 << CS10);
  37. // enable timer compare interrupt
  38. TIMSK1 |= (1 << OCIE1A);
  39.  
  40. sei();//allow interrupts
  41.  
  42. }//end setup
  43.  
  44. ISR(TIMER1_COMPA_vect){
  45. if (enable) {
  46.  
  47. if (clock_enable) {
  48.  
  49. if (clock_toggle) {
  50.  
  51. clock_toggle=false;
  52. digitalWrite(clock_pin, LOW);
  53. data_pointer=data_pointer+1;
  54. if (data_pointer>21) {
  55. enable=false;
  56. digitalWrite(clock_pin, LOW);
  57. digitalWrite(data_pin, LOW);
  58. digitalWrite(mclr_pin, LOW);
  59. } else if (data_pointer>=6) {
  60. pinMode(data_pin, INPUT);
  61. }
  62.  
  63. } else {
  64.  
  65. clock_toggle=true;
  66. if (data_pointer<21) {
  67. digitalWrite(clock_pin, HIGH);
  68. }
  69.  
  70. if (data_send[data_pointer]) {
  71. digitalWrite(data_pin, HIGH);
  72. } else {
  73. digitalWrite(data_pin, LOW);
  74. }
  75.  
  76. }
  77.  
  78. } else {
  79.  
  80. pinMode(data_pin, OUTPUT);
  81. digitalWrite(clock_pin, LOW);
  82. digitalWrite(data_pin, LOW);
  83. digitalWrite(mclr_pin, LOW);
  84. data_pointer=0;
  85. clock_enable=true;
  86. clock_toggle=false;
  87.  
  88. }
  89.  
  90. }
  91.  
  92. }
  93.  
  94. void loop(){
  95. //do other things here
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement