-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSTD_MACROS.h
77 lines (66 loc) · 3.09 KB
/
STD_MACROS.h
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*
* File Name: STD_MACROS.h
* Creation Date: 07/20/2020
* Author: Rehab
* Description: Header File for standard macros....
*/
#ifndef STD_MACROS_H_
#define STD_MACROS_H_
/*****************************************************GENERAL MACROS*************************************************/
//GENERAL MACROS
#define LOW 0
#define HIGH 1
#define BIT_LOW 0
#define TWO_BITS_LOW 0
#define THREE_BITS_LOW 0
#define FOUR_BITS_LOW 0
#define FIVE_BITS_LOW 0
#define SIX_BITS_LOW 0
#define SEVEN_BITS_LOW 0
#define EIGHT_BITS_LOW 0
#define LOWER_NIBBLE_LOW 0
#define HIGHER_NIBBLE_LOW 0
#define PORT_LOW 0
#define BIT_HIGH 1
#define TWO_BITS_HIGH 3
#define THREE_BITS_HIGH 7
#define FOUR_BITS_HIGH 15
#define FIVE_BITS_HIGH 31
#define SIX_BITS_HIGH 63
#define SEVEN_BITS_HIGH 127
#define EIGHT_BITS_HIGH 255
#define LOWER_NIBBLE_HIGH 15
#define HIGHER_NIBBLE_HIGH 15
#define PORT_HIGH 255
#define LOWER_NIBBLE 0
#define HIGHER_NIBBLE 4
/********************************************************************************************************************/
/**************************************************MACROS_LIKE_FUNCTIONS*********************************************/
//MACROS_LIKE_FUNCTIONS
#define BIT_WRITE(REG,BITNO,VAL) REG=(REG&(~(BIT_HIGH<<BITNO)))|(VAL<<BITNO)
#define TWO_BITS_WRITE(REG,FIRSTBITNO,VAL) REG=(REG&(~(TWO_BITS_HIGH<<FIRSTBITNO)))|(VAL<<FIRSTBITNO)
#define THREE_BITS_WRITE(REG,FIRSTBITNO,VAL) REG=(REG&(~(THREE_BITS_HIGH<<FIRSTBITNO)))|(VAL<<FIRSTBITNO)
#define FOUR_BITS_WRITE(REG,FIRSTBITNO,VAL) REG=(REG&(~(FOUR_BITS_HIGH<<FIRSTBITNO)))|(VAL<<FIRSTBITNO)
#define FIVE_BITS_WRITE(REG,FIRSTBITNO,VAL) REG=(REG&(~(FIVE_BITS_HIGH<<FIRSTBITNO)))|(VAL<<FIRSTBITNO)
#define SIX_BITS_WRITE(REG,FIRSTBITNO,VAL) REG=(REG&(~(SIX_BITS_HIGH<<FIRSTBITNO)))|(VAL<<FIRSTBITNO)
#define SEVEN_BITS_WRITE(REG,FIRSTBITNO,VAL) REG=(REG&(~(SEVEN_BITS_HIGH<<FIRSTBITNO)))|(VAL<<FIRSTBITNO)
#define EIGHT_BITS_WRITE(REG,FIRSTBITNO,VAL) REG=(REG&(~(EIGHT_BITS_HIGH<<FIRSTBITNO)))|(VAL<<FIRSTBITNO)
//#define HIGHER_NIBBLE_WRITE(REG,VAL) REG=(REG&0x0F)|(VAL<<4)
#define HIGHER_NIBBLE_WRITE(REG,VAL) REG=(REG&(~(HIGHER_NIBBLE_HIGH<<HIGHER_NIBBLE)))|(VAL<<HIGHER_NIBBLE)
//#define LOWER_NIBBLE_WRITE(REG,VAL) REG=(REG&0xF0)|VAL
#define LOWER_NIBBLE_WRITE(REG,VAL) REG=(REG&(~(LOWER_NIBBLE_HIGH<<LOWER_NIBBLE)))|(VAL<<LOWER_NIBBLE)
#define REG_WRITE(REG,VAL) REG=VAL
//BIT_GET TO KNOW IF THE BIT IS ONE OR ZERO
#define BIT_GET(REG,BITNO) (REG &(BIT_HIGH<<BITNO))
//HIGHER_NIBBLE_GET TO KNOW THE VALUE IN THE HIGHER NIBBLE
#define HIGHER_NIBBLE_GET(REG) (REG&(HIGHER_NIBBLE_HIGH<<HIGHER_NIBBLE))
//LOWER_NIBBLE_GET TO KNOW THE VALUE IN THE LOWER NIBBLE
#define LOWER_NIBBLE_GET(REG) (REG&(LOWER_NIBBLE_HIGH<<LOWER_NIBBLE))
//REG_GET TO KNOW THE VALUE IN THE REGISTER
#define REG_GET(REG) (REG)
#define BIT_TOGGLE(REG,BITNO) REG^=(BIT_HIGH<<BITNO)
#define HIGHER_NIBBLE_TOGGLE(REG) REG^=(HIGHER_NIBBLE_HIGH<<HIGHER_NIBBLE)
#define LOWER_NIBBLE_TOGGLE(REG) REG^=(LOWER_NIBBLE_HIGH<<LOWER_NIBBLE)
#define REG_TOGGLE(REG) REG=~REG
/********************************************************************************************************************/
#endif