00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "spi.h"
00017
00018 void spi_write(uns8 data) {
00019
00020 uns8 count;
00021 for (count = 0; count < 8; count++) {
00022 clear_pin(spi_clk_port, spi_clk_pin);
00023 change_pin(spi_data_port, spi_data_pin, data.7);
00024 data = data << 1;
00025 set_pin(spi_clk_port, spi_clk_pin);
00026 }
00027
00028 }
00029
00030
00031
00032 void spi_write_lsb(uns8 data) {
00033
00034 uns8 count;
00035
00036
00037 for (count = 0; count < 8; count++) {
00038 clear_pin(spi_clk_port, spi_clk_pin);
00039 change_pin(spi_data_port, spi_data_pin, data.0);
00040 data = data >> 1;
00041 set_pin(spi_clk_port, spi_clk_pin);
00042 }
00043
00044 }
00045
00046 void spi_setup() {
00047 clear_bit(tris_array[spi_clk_port - PORTA], spi_clk_pin);
00048 clear_bit(tris_array[spi_data_port - PORTA], spi_data_pin);
00049
00050 }
00051
00052 void spi_write_sure(uns8 data) {
00053
00054 uns8 count;
00055 uns8 data_in;
00056
00057 data_in = data;
00058 for (count = 0; count < 8; count++) {
00059 change_pin(spi_data_port, spi_data_pin, data_in.0);
00060 clear_pin(spi_clk_port, spi_clk_pin);
00061 set_pin(spi_clk_port, spi_clk_pin);
00062 data_in = data_in >> 1;
00063 }
00064 }
00065
00066
00067 void spi_pulse_0() {
00068 change_pin(spi_data_port, spi_data_pin, 0);
00069 clear_pin(spi_clk_port, spi_clk_pin);
00070 set_pin(spi_clk_port, spi_clk_pin);
00071 }
00072
00073 void spi_pulse_1() {
00074 change_pin(spi_data_port, spi_data_pin, 1);
00075 clear_pin(spi_clk_port, spi_clk_pin);
00076 set_pin(spi_clk_port, spi_clk_pin);
00077 }