Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00022 #include "pn9.h"
00023
00024 #define pn9_bit5 0x08
00025 #define pn9_bit9 0x80
00026
00028 static uint8_t bits_9_to_2;
00030 static bit bit_1;
00031
00032 void pn9_init(void)
00033 {
00034 bits_9_to_2 = 0xFF;
00035 bit_1 = 1;
00036 }
00037
00038 uint8_t pn9_get_byte(void)
00039 {
00040 bit feedback;
00041 uint8_t i, out_value;
00042
00043 out_value = bits_9_to_2;
00044
00045 for (i = 0; i < 8; i++)
00046 {
00047
00048 feedback =
00049 ((((bits_9_to_2 & pn9_bit9)>>4) ^ (bits_9_to_2 & pn9_bit5)) == 0) ? 0 : 1;
00050
00051 bits_9_to_2<<=1;
00052 bits_9_to_2 |= (uint8_t) bit_1;
00053
00054 bit_1 = feedback;
00055 }
00056
00057 return out_value;
00058 }