-
Notifications
You must be signed in to change notification settings - Fork 9
/
PIC12F683_Shift_Register3
62 lines (61 loc) · 1.96 KB
/
PIC12F683_Shift_Register3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/*
* File: newmain_sr1.c
* Author: drselim
*
* Created on 17 July 2021, 23:17
*/
// please check the video for detailed explanation of the code:
// https://youtu.be/Td7Xgz6vEPY
#include <xc.h>
#pragma config FOSC = INTOSCIO // Oscillator Selection bits (INTOSCIO oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD)
#pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled)
#pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled)
#pragma config BOREN = OFF // Brown Out Detect (BOR disabled)
#pragma config IESO = ON // Internal External Switchover bit (Internal External Switchover mode is enabled)
#pragma config FCMEN = ON // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is enabled)
#define _XTAL_FREQ 4000000
void SRCLK_Pulse (void); //To create a clock pulse for Shift Reg
void RCLK_Pulse (void); //To create a clock pulse for Storage Reg
void main(void) {
//P1DIR |= SERIAL + SRCLK + RCLK;
TRISIO2 = 0; //setting pins as output
TRISIO4 = 0;
TRISIO5 = 0;
int i;
//P1OUT = 0x00;
GP2 = 0;
GP4 = 0;
GP5 = 0;
while (1){
//P1OUT |= SERIAL;
GP2 = 1;
SRCLK_Pulse();
GP2 = 0;
SRCLK_Pulse();
GP2 = 1;
SRCLK_Pulse();
//P1OUT ^= SERIAL;
GP2 = 0;
for (i=0; i<8; i++){
RCLK_Pulse();
SRCLK_Pulse();
//__delay_cycles(100000);
__delay_ms(100);
}
}
}
void SRCLK_Pulse(void){
//P1OUT |= SRCLK;
//P1OUT ^= SRCLK;
GP4 = 1;
GP4 = 0;
}
void RCLK_Pulse(void){
//P1OUT |= RCLK;
//P1OUT ^= RCLK;
GP5 = 1;
GP5 = 0;
}