00001 #ifndef _DEV_BOARD_SHIFT_C
00002 #define _DEV_BOARD_SHIFT_C
00003
00004
00005
00006
00007
00008
00009
00010 #include "db_shift.h"
00011
00012
00013
00014
00015 void DevBoardShiftLedOut( u_char val )
00016 { u_char i=8;
00017
00018 sbi(SHIFT_DDR, SHIFT_LED_SET_DDR);
00019 sbi(SHIFT_DDR, SHIFT_CLK_DDR);
00020 sbi(SHIFT_DDR, SHIFT_OUT_DDR);
00021
00022 cbi(SHIFT_PORT, SHIFT_LED_SET);
00023 cbi(SHIFT_PORT, SHIFT_CLK);
00024
00025 while( i-- )
00026 {
00027 if( val & (1 << i) ) sbi(SHIFT_PORT, SHIFT_OUT);
00028 else cbi(SHIFT_PORT, SHIFT_OUT);
00029
00030 DevBoardShiftDelay( SHIFT_IO_DELAY );
00031 sbi(SHIFT_PORT, SHIFT_CLK);
00032 DevBoardShiftDelay( SHIFT_IO_DELAY );
00033 cbi(SHIFT_PORT, SHIFT_CLK);
00034 }
00035
00036 sbi(SHIFT_PORT, SHIFT_LED_SET);
00037 }
00038
00039
00040
00041
00042 void DevBoardShiftLcdOut( u_char val )
00043 { u_char i=8;
00044
00045 sbi(SHIFT_DDR, SHIFT_LCD_SET_DDR);
00046 sbi(SHIFT_DDR, SHIFT_CLK_DDR);
00047 sbi(SHIFT_DDR, SHIFT_OUT_DDR);
00048
00049 cbi(SHIFT_PORT, SHIFT_LCD_SET);
00050 cbi(SHIFT_PORT, SHIFT_CLK);
00051
00052 while( i-- )
00053 {
00054 if( val & (1 << i) ) sbi(SHIFT_PORT, SHIFT_OUT);
00055 else cbi(SHIFT_PORT, SHIFT_OUT);
00056
00057 DevBoardShiftDelay( SHIFT_IO_DELAY );
00058 sbi(SHIFT_PORT, SHIFT_CLK);
00059 DevBoardShiftDelay( SHIFT_IO_DELAY );
00060 cbi(SHIFT_PORT, SHIFT_CLK);
00061 }
00062
00063 sbi(SHIFT_PORT, SHIFT_LCD_SET);
00064 }
00065
00066
00067
00068
00069 void DevBoardShiftWordOut( u_int val )
00070 { u_char i=16;
00071
00072 sbi(SHIFT_DDR, SHIFT_LED_SET_DDR);
00073 sbi(SHIFT_DDR, SHIFT_CLK_DDR);
00074 sbi(SHIFT_DDR, SHIFT_OUT_DDR);
00075
00076 cbi(SHIFT_PORT, SHIFT_LED_SET);
00077 cbi(SHIFT_PORT, SHIFT_CLK);
00078
00079 while( i-- )
00080 {
00081 if( val & (1 << i) ) sbi(SHIFT_PORT, SHIFT_OUT);
00082 else cbi(SHIFT_PORT, SHIFT_OUT);
00083
00084 DevBoardShiftDelay( SHIFT_IO_DELAY );
00085 sbi(SHIFT_PORT, SHIFT_CLK);
00086 DevBoardShiftDelay( SHIFT_IO_DELAY );
00087 cbi(SHIFT_PORT, SHIFT_CLK);
00088 }
00089
00090 sbi(SHIFT_PORT, SHIFT_LED_SET);
00091 }
00092
00093
00094
00095
00096 u_char DevBoardShiftByteIn( void )
00097 { u_char in_byte=0,
00098 i=7;
00099
00100 sbi(SHIFT_DDR, SHIFT_IN_LOAD_DDR);
00101 sbi(SHIFT_DDR, SHIFT_CLK_DDR);
00102 cbi(SHIFT_DDR, SHIFT_IN_DDR);
00103
00104 cbi(SHIFT_PORT, SHIFT_CLK);
00105 cbi(SHIFT_PORT, SHIFT_IN_LOAD);
00106 DevBoardShiftDelay( SHIFT_IO_DELAY );
00107 sbi(SHIFT_PORT, SHIFT_IN_LOAD);
00108
00109
00110 bit_is_set(SHIFT_PIN, SHIFT_IN) ? (in_byte |= 1) : (in_byte |= 0);
00111
00112 while(i--)
00113 { sbi(SHIFT_PORT, SHIFT_CLK);
00114
00115 DevBoardShiftDelay( SHIFT_IO_DELAY );
00116 in_byte <<= 1;
00117
00118 bit_is_set(SHIFT_PIN, SHIFT_IN) ? (in_byte |= 1) : (in_byte |= 0);
00119
00120 cbi(SHIFT_PORT, SHIFT_CLK);
00121 DevBoardShiftDelay( SHIFT_IO_DELAY );
00122 }
00123
00124 return(in_byte);
00125 }
00126
00127
00128
00129
00130
00131 void DevBoardShiftDelay(long nops)
00132 {
00133 long i;
00134
00135 for (i = 0; i < nops; i++) {
00136 _NOP();
00137 }
00138 }
00139
00140 #endif
00141
00142
00143