00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #include "pic_utils.h"
00038
00039
00040
00041
00042
00043 #ifdef _PIC16
00044
00045 #if NUMBER_PORTS == 1
00046 uns8 port_shadow[NUMBER_PORTS] = {0};
00047 #endif
00048
00049 #if NUMBER_PORTS == 2
00050 uns8 port_shadow[NUMBER_PORTS] = {0, 0};
00051 #endif
00052
00053 #if NUMBER_PORTS == 3
00054 uns8 port_shadow[NUMBER_PORTS] = {0, 0, 0};
00055 #endif
00056
00057 #if NUMBER_PORTS == 4
00058 uns8 port_shadow[NUMBER_PORTS] = {0, 0, 0, 0};
00059 #endif
00060
00061 #if NUMBER_PORTS == 5
00062 uns8 port_shadow[NUMBER_PORTS] = {0, 0, 0, 0, 0};
00063 #endif
00064
00065 #if NUMBER_PORTS == 6
00066 uns8 port_shadow[NUMBER_PORTS] = {0, 0, 0, 0, 0, 0};
00067 #endif
00068
00069 #if NUMBER_PORTS == 7
00070 uns8 port_shadow[NUMBER_PORTS] = {0, 0, 0, 0, 0, 0, 0};
00071 #endif
00072
00073
00074 void set_pin_var(uns8 port, uns8 pin) {
00075 uns8 array_location = port - PORTA;
00076 set_bit(port_shadow[array_location], pin);
00077 port_array[array_location] = port_shadow[array_location];
00078 }
00079
00080 void clear_pin_var(uns8 port, uns8 pin) {
00081 uns8 array_location = port - PORTA;
00082 clear_bit(port_shadow[array_location], pin);
00083 port_array[array_location] = port_shadow[array_location];
00084 }
00085
00086 void toggle_pin_var(uns8 port, uns8 pin) {
00087 uns8 array_location = port - PORTA;
00088 port_shadow[array_location] ^= (1 << (pin));
00089 port_array[array_location] = port_shadow[array_location];
00090 }
00091
00092
00093 void change_pin_var(uns8 port, uns8 pin, bit value) {
00094 uns8 array_location = port - PORTA;
00095 if (value) {
00096 set_bit(port_shadow[array_location], pin);
00097 } else {
00098 clear_bit(port_shadow[array_location], pin);
00099 }
00100 port_array[array_location] = port_shadow[array_location];
00101 }
00102
00103 #endif